Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Genri
Дата сообщения: 05.12.2006 00:20
Chanka

Цитата:
не отображаются компоненты
-- похоже глюк свойства BorderStyle. В таком случае, лучше его не использовать.
Автор: Genri
Дата сообщения: 05.12.2006 09:14
Chanka
Решить проблему с компонентами, и одновременно отобразить окно поверх таскбара, может установка свойства :

[Setup]
WindowShowCaption=No

Автор: GRom V
Дата сообщения: 05.12.2006 10:24
Genri

Огромное спасибо....ТЫ просто BatMan!


procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
bitmap:TBitmap;
begin
WizardForm.Position:=poScreenCenter; //Убираем контекстное меню (О программе) при
//нажатии правой кнопки мыши.
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(61); //Если скрыть также панель задач, то значение 0 (см. также
//ниже!)
height:=GetSystemMetrics(62); //Если скрыть также панель задач, то значение 1
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
s:=ExpandConstant('{tmp}')+'\My_Image.bmp ';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
WizardForm.CancelButton.BringToFront;
end;


А можно ли сделать чтоб синего фона, на который ложиться My_Image.bmp - вообще не было видно?
Автор: Genri
Дата сообщения: 05.12.2006 10:46
GRom V
Вообще-то к этому коду я не имею отношения.

Как я говорил выше - если стоит задача скрыть панель задач, лучше использовать свойство WindowShowCaption=No
Автор: GRom V
Дата сообщения: 06.12.2006 01:23
Genri

Цитата:
Вообще-то к этому коду я не имею отношения.


Возможно я не правильно выразился:
Можно ли сделать синий фон, с названием программы, на который потом ложиться Мой.bmp (в качестве фона), не видимым, или чтоб названия программы на синем фоне не было.
Например если комп тормозной (слабый), то при смене картинок видно этот самый синий фон с названием проги.




Автор: Genri
Дата сообщения: 06.12.2006 01:44
GRom V
Цвет сменить не пробовал ?
Автор: GRom V
Дата сообщения: 06.12.2006 02:55
Genri

Цитата:
Цвет сменить не пробовал ?


Конечно! Не плохо если я меняю цвет формы на черный, но это название программы!!!
[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=No
WindowVisible=true
Compression=none
WizardImageBackColor=clBlack
BackColor=$000000

Как с черного фона убрать My Program?

А вообще проблема вот какого плана:

Есть скрипт:


[Setup]
AppName=Принц Персии - Пески времяни
AppVerName=игру
DefaultDirName=D:\Games\Принц Персии - Пески времяни
DefaultGroupName=Принц Персии - Пески времяни
AllowNoIcons=yes
OutputDir=D:\Проекты\Setup\Prince of Persia\Setup
OutputBaseFilename=Setup
SetupIconFile=PrinceOfPersia.ico
Compression=none
SolidCompression=true
DiskSpanning=true
DiskSliceSize=730000000
InternalCompressLevel=none


procedure InitializeWizard();
var
pfunc: LongWord;
s:string;
width, height:Integer;
bitmap:TBitmap;
begin
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
with BackgroundBitmapImage do
WizardForm.Position:=poScreenCenter; //Убираем контекстное меню (О программе) при
//нажатии правой кнопки мыши.
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(61); //Если скрыть также панель задач, то значение 0 (см. также
//ниже!)
height:=GetSystemMetrics(62); //Если скрыть также панель задач, то значение 1
MainForm.Width:=width;
MainForm.Color := $0000;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
s:=ExpandConstant('{tmp}')+'\My_Image.bmp ';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
WizardForm.CancelButton.BringToFront;
pfunc:= WrapTimerProc(@OnTimer, 4);
TimerID:= SetTimer(0, 0, 500, pfunc);

end;

Т.Е фоновое окно создается скриптом. Но все же на медленом компе фон с названием проги проглядывается.
Как сделать этот фон без названия проги?

Заранее спасибо!
Автор: zusterandrey
Дата сообщения: 06.12.2006 04:40
Здравствуйте...
У меня вопрос, подскажите почему делая исталятор с фоновой музыкой или cо splash окном большого размера, при его запуске происходит страное подвисание минут на 8-10... потом только начанает играть музыка и появляется окно установки.
В течение этого времени видно только кнопку на панели задач "установка" ?
Автор: GRom V
Дата сообщения: 06.12.2006 05:25
zusterandrey

Цитата:
Здравствуйте...
У меня вопрос, подскажите почему делая исталятор с фоновой музыкой или cо splash окном большого размера, при его запуске происходит страное подвисание минут на 8-10... потом только начанает играть музыка и появляется окно установки.
В течение этого времени видно только кнопку на панели задач "установка" ?



Скорее всего порядок файлов у тебя не правелен, т.е если у тебя splash.exe стоит в конце, а вызывается в начале, то тупняк соответственно будет - пока не доберется до splash.exe
Поставь splash.exe вначало и все будет OK!




Добавлено:
AtotIK

Цитата:
2. Запускиется специальная прога (если надо - завтра залью, весит она ~200 кб) из Temp'а которая отображает эту картинку "наплывами" - сначала она постепенно появляется, а потом постепенно пропадает.


Так зальешь прогу?
Автор: Chanka
Дата сообщения: 06.12.2006 11:26
GRom V

Цитата:
А можно ли сделать чтоб синего фона, на который ложиться My_Image.bmp - вообще не было видно?


Попробуй так:

WindowResizable=no
WindowShowCaption=no
WindowStartMaximized=no
WindowVisible=yes
Автор: AtotIK
Дата сообщения: 06.12.2006 14:01
2 GRom V
Да, залью в ближайшее время.

2 All
Помогите...Нужно поменять надпись "Распаковка файлов" при копировании файлов...Нашёл такую вещь как "StatusExtractFiles" в секции [Messages], но она делает не совсем то, чего я хочу (например при копировании определённых файлов надпись одна, а при копировании других - другая, а там просто меняется вся надпись)...Промучался с этой проблемой 2 дня...Чувстую, что решение элементарное, но не могу догадаться...Мне просто надо узнать как ЭТО надо писать в секции [Code]...
Автор: svs123456789
Дата сообщения: 06.12.2006 17:16
а как при запуске исталлятора, сначала проверить наличие уже установленной проги и если она уже была установлена то запустить ее деинсталяцию (спросив об этом пользователя)
- так ведут себя инсталяторы например инсталл шилда
Автор: Genri
Дата сообщения: 06.12.2006 17:20
AtotIK -- Можно попробовать например так:
Код:
[Files]
Source: "{src}\*.exe"; DestDir: {app}; BeforeInstall: ChangeCaption('Откинтесь на спинку кресла и наслаждайтесь!')
Source: "{src}\*.dll"; DestDir: {app}; BeforeInstall: ChangeCaption('Не забудьте зарегистрироваться')

[Code]
procedure ChangeCaption(str: string);
begin
WizardForm.StatusLabel.Caption:= str;
end;
Автор: svs123456789
Дата сообщения: 06.12.2006 18:09
в примерах попыток корректной деинсталяции перед инсталяцией
используется раздел реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ТВ программа 2.1_is1

вопрос : как избавиться от суффикса "_is1" ?

Добавлено:
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My_Program_v1.0_is1', 'UninstallString', ResultStr)
then

НО я меня в реестре имя раздела выглядит как : 'ИМЯ'_is1
как такую строку с кавычками вставить в в код ?
Uninstall\' + "'"+ 'ИМЯ'+ "'"+ '_is1',
не проходит

Добавлено:
как в коде примера деинсталяции
[Code]
function InitializeSetup():
использовать не строки с именами проги, а константы объявленные в начале скрипта, например типа
#define MyAppName "ИМЯ"
#define MyAppLongName "'" + MyAppName + "'"
#define MyAppVerName "'" + MyAppName + " ver 1.0'"
Автор: Genri
Дата сообщения: 06.12.2006 19:14
GRom V

Цитата:
можно ли сделать чтоб синего фона, на который ложиться My_Image.bmp - вообще не было видно?


Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
WindowVisible=No

[Types]
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom

[Components]
Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help File"; Types: full
Name: "readme"; Description: "Readme File"; Types: full
Name: "readme\en"; Description: "English"; Flags: exclusive
Name: "readme\de"; Description: "German"; Flags: exclusive

[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Components: program
Source: "MyProg.chm"; DestDir: "{app}"; Components: help
Source: "Readme.txt"; DestDir: "{app}"; Components: readme\en; Flags: isreadme
Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Components: readme\de; Flags: isreadme

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"

[Code]
var
Form: TForm;

function ShowWindow(hWnd: LongWord; nCmdShow: LongWord): LongWord;
external 'ShowWindow@user32.dll stdcall';

procedure FormOnActivate(Sender: TObject);
begin
WizardForm.Show;
end;

function InitializeSetup(): Boolean;
begin
Form := CreateCustomForm();
Form.BorderStyle:= bsNone;
Form.Color:= clGreen;
ShowWindow(Form.Handle, SW_SHOWMAXIMIZED);

Result:= True;
end;

procedure InitializeWizard();
begin
Form.OnActivate:= @FormOnActivate;
end;

procedure DeinitializeSetup();
begin
Form.Free;
end;
Автор: Wilmots
Дата сообщения: 07.12.2006 02:05
Можно ли сделать смену картинок не по времени, а помере выполнения установки?
Автор: GRom V
Дата сообщения: 07.12.2006 03:35
Genri
Все спасибо разобрался!!!
Кстате при таком раскладе не работает isxbb - можно ченить сделать?
isxbb походу работает с формой Inno Setup

Был бы самый отличный вариант - Убрать название проги с родного фона, на крайняк сменить цвет - чтоб не было видно названия.
Можно ченить сделать?




Добавлено:
Wilmots

Цитата:
Можно ли сделать смену картинок не по времени, а помере выполнения установки?

Почитай чуть ранние посты - там есть ответ

Добавлено:
Chanka

Цитата:
GRom V

Цитата:А можно ли сделать чтоб синего фона, на который ложиться My_Image.bmp - вообще не было видно?



Попробуй так:

WindowResizable=no
WindowShowCaption=no
WindowStartMaximized=no
WindowVisible=yes


Я неправильно выразился!!! Нужно не чтобы небыло видно этого гребанного синего фона,
а чтобы небыло видно названия проги на нем!
Автор: DroN_S
Дата сообщения: 07.12.2006 10:14
Здравствуйте!!!
Как сделать, чтобы создание (установку) ярлыков было для всех пользователей, а не только для текущего?

Добавлено:
можно ли с помощью IS создать *.msi?
если да, то как?
Автор: Genri
Дата сообщения: 07.12.2006 10:46
GRom V

Цитата:
чтобы небыло видно названия проги
-- как убрать полностью не знаю, но можно максимально уменьшить. Попробуй следующее:

[LangOptions]
TitleFontSize=1
Автор: Kindly
Дата сообщения: 07.12.2006 12:01
DroN_S

Цитата:
можно ли с помощью IS создать *.msi?

Создать точно нельзя, а вот включить в сборку можно. Посмотри Inno Setup Extensions Knowledge Base, там вроде как указываются нужные параметры для запуска. А вообще официальную поддержку msi автор не предусматривает, ссылаясь на то, что программу нужно будет полностью переписывать, на что нет желания и времени.
Автор: omals
Дата сообщения: 07.12.2006 13:05

Цитата:
Здравствуйте!!!
Как сделать, чтобы создание (установку) ярлыков было для всех пользователей, а не только для текущего?

использовать {commondesktop} а не {userdesktop}
Но
* = The "common" form of this constant is mapped to the "user" form if the logged-in user lacks administrative privileges, or if the operating system is Windows 95/98/Me.
см. Shell Folder Constants в доке

Автор: Genri
Дата сообщения: 07.12.2006 16:22
svs123456789

Цитата:
как в коде ... использовать не строки с именами проги, а константы объявленные в начале скрипта
-- Можно примерно так:

Код:
#define MyAppName "ИМЯ"
#define MyAppLongName "'" + MyAppName + "'"

[Code]
procedure CurPageChanged(CurPageID: Integer);
var
str: string;
begin
Case CurPageID of
wpSelectDir:
begin
str:= ExpandConstant('{#MyAppName}') + #10#13 +
ExpandConstant('''{#MyAppName}''') + #10#13 +
ExpandConstant(''{#MyAppLongName}'') + #10#13 +
ExpandConstant(''''{#MyAppLongName}'''');
MsgBox(str, mbInformation, MB_OK);
end;
end;
end;
Автор: GRom V
Дата сообщения: 08.12.2006 01:06
Genri

Цитата:
-- как убрать полностью не знаю, но можно максимально уменьшить. Попробуй следующее:

[LangOptions]
TitleFontSize=1


Уже не плохо. А есть ли параметр, с помощью которого можно изменить цвет?
Автор: Genri
Дата сообщения: 08.12.2006 09:08
GRom V -- мне не известно. В файле Default.isl нашел только два, относящиеся к этой надписи:

[LangOptions]
TitleFontName=Arial
TitleFontSize=29

можешь шрифтом поиграть.

Добавлено:
... а вообще, пусть компы апгрейдят - не будет тормозить
Автор: AtotIK
Дата сообщения: 08.12.2006 16:04
2 Genri
Спасибо...Заработало...Переделал под себя...

2 All
Вот ссылка на прогу которую я обещал. Инструкция в файле "ReadMe.txt"
Скачать
Автор: Drez
Дата сообщения: 09.12.2006 11:13
Ребята, а кто знает как сделать инсталлятор по типу того что был у Сакред от акеллы?
Когда внизу, под состоянием прогресса установки идёт слайдшоу в самом окне установки?
Автор: NightW0lf
Дата сообщения: 09.12.2006 13:27
Подскажите, как добавить надписи на фоновую картинку в инсталляторе?
Автор: Dima555555
Дата сообщения: 09.12.2006 14:41
Как сделать для проги WinRAR 3.62 чтоб после установки она была зарегена уже... подскажите плиз

Добавлено:
Разобрался >>> http://rapidshare.com/files/6736117/WinRAR_3.62.exe
Автор: NightW0lf
Дата сообщения: 09.12.2006 23:01
Такая вот проблема все вроде работает и устанавливается, а после закрытия инсталлятора иногда выскакивает ошибка "Setup/Uninstall - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства." и предлагает "Закрыть" или "Отладка"!
Вот скрипт
[more]

Код:
[Setup]
AppName=WarCraft III + Frozen Throne v1.20
AppVerName=WarCraft III + Frozen Throne
AppPublisher=by NightW0lf
DefaultDirName=C:\Games\WarCraft III
DefaultGroupName=WarCraft III + Frozen Throne
AllowNoIcons=yes
OutputDir=C:\SETUP\Output
OutputBaseFilename=setup_wc3_sound
Compression=lzma
SolidCompression=yes
WizardImageFile=C:\SETUP\WIZARD_IMAGE\_BIG\my_wizard_164-314.bmp
WizardSmallImageFile=C:\SETUP\WIZARD_IMAGE\_SMALL\install.bmp

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
;Не используйте "Флаг": ignoreversion" для любых системных файлов

[Files]
Source: "C:\SETUP\Output\data_pr.exe"; DestDir: "{app}"; Flags: deleteafterinstall nocompression
Source: "C:\SETUP\FILES_DATA\StarFuck.exe"; DestDir: "{app}";
Source: "C:\SETUP\ICONS\uninstall.ico"; DestDir: "{app}";
Source: "C:\MiniFMOD.dll"; DestDir: "{tmp}"; Flags:dontcopy
Source: "C:\music.xm"; DestDir: "{tmp}"; Flags:dontcopy

[Icons]
Name: "{group}\StarFuck-123"; Filename: "{app}\StarFuck.exe"
Name: "{group}\{cm:UninstallProgram,}"; IconFilename: "{app}\uninstall.ico"; Filename: "{uninstallexe}"
Name: "{userdesktop}\StarFuck-12441"; Filename: "{app}\StarFuck.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\data_pr.exe"; Parameters: "-y"; Flags: waituntilterminated hidewizard
Filename: "{app}\StarFuck.exe"; Description: "{cm:LaunchProgram,WarCraft III + Frozen Throne}"; Flags: nowait postinstall skipifsilent

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[Code]
//определяем процедуры и функции
function SongLoadFromFile(FileName: PChar): Integer;
external 'SongLoadFromFile@files:MiniFMOD.dll cdecl delayload';

procedure SongPlay(hMod: Integer);
external 'SongPlay@files:MiniFMOD.dll cdecl delayload';

//при запуске инсталлятора выполняем вот этот код:
procedure InitializeWizard();
var
hMod: Integer;
Name1: string;
begin
ExtractTemporaryFile(ExpandConstant('MiniFMOD.dll')); //извлекаем во временную папку MiniFMOD.dll
ExtractTemporaryFile(ExpandConstant('music.xm')); //извлекаем во временную папку музыкальный файл
Name1:=ExpandConstant('{tmp}\music.xm'); //определяем путь, где находится музыкальный файл
hMod := SongLoadFromFile(PChar(Name1)); //загружаем музыкальный файл
SongPlay(hMod); //запускаем воспроизведение музыки
begin
WizardForm.Position:=poScreenCenter;
end;
end;


//При деинсталляции нужно честно предупредить пользователя
function InitializeUninstall(): Boolean;
begin
MsgBox('Внимание! Сейчас удалятся все файлы игры, включая сохранения.', mbError, MB_OK)
Result:=True
end;
//Можно и не предупреждать, если сохранения хранятся не в одной папке с игрой

//Чтобы заставить инсталлятор при нажатии на кнопку "Отмена" выдавать собственное сообщение, следует написать следующую процедуру:
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=False;
Confirm:=False;
if MsgBox('Вы действительно хотите отменить установку?', mbError, MB_YESNO) = idYes
then
Cancel:=true;
end;
Автор: Genri
Дата сообщения: 10.12.2006 02:34
NightW0lf

Цитата:
иногда выскакивает ошибка
-- подозреваю, что проблема из-за фоновой музыки (не нашел в коде функции корректной остановки при выходе из сетапа)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.