Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Gnom_aka_Lexander
15-02-2011, 17:44
Leka_651, Сразу :) Даже по смыслу - Инициализация визарда - InitializeWizard и InitializeSetup начинают работать сразу.
R.i.m.s.k.y.
15-02-2011, 19:12
а в какой момент будет выполняться InitializeWizard »
В помощи набери Installation order
R.i.m.s.k.y.
15-02-2011, 19:40
Даже по смыслу - Инициализация визарда - InitializeWizard и InitializeSetup начинают работать сразу. »
InitializeSetup работает первой, это булевая функция, если в ней сделать Result := false инсталлер закроется и не пикнет.
InitializeWizard уже процедура, готовит формы и тп.
Leka_651
16-02-2011, 12:13
что-то у меня не работает((((
if appexist(путь к файлу проги) »
Я правильно понимаю, что это путь куда пользователь захотел поставить программу?
R.i.m.s.k.y.
16-02-2011, 12:59
Я правильно понимаю, что это путь куда пользователь захотел поставить программу »
Это путь к файлу проги. Любому. К примеру appexist(ExpandConstant('{app}\прога.exe'))
Можно проверять каталогами, для этого FileExists надо заменить на DIRExists
Leka_651
16-02-2011, 15:51
R.i.m.s.k.y., я у Inno Setup есть возможность посмотреть попадаю ли я в функции?
R.i.m.s.k.y.
16-02-2011, 17:24
я у Inno Setup есть возможность посмотреть попадаю ли я в функции »
поток сознания, конкретнее
Leka_651
16-02-2011, 17:43
у меня не работают твои функции. я хочу понять почему. Есть ли возможность посмотреть "под отладкой" что происходит при установке сетапа, в какие функции попадаем?
Gnom_aka_Lexander
16-02-2011, 18:14
Leka_651, В чем нерабочесть выражается? Может просто файлов нет по тому пути, который ты проверяещ? путь и имя файла вводить нужно очень внимательно, и если начать ставить прогу в другой каталог, то ей становится наплевать , установлена она уже или нет, посккольку проверяемых файлов нет на месте проверки. А что поисходит - можно посмотреть, если запустаить установку прямо из компилятора, внизу будет лог, который можно скопировать, чтобы сохранить и неторопливо и вдумчиво изучить :)
R.i.m.s.k.y.
16-02-2011, 18:47
у меня не работают твои функции. я хочу понять почему. Есть ли возможность посмотреть "под отладкой" что происходит при установке сетапа, в какие функции попадаем? »
вставляй в функции и процедуры MsgBox('тут InirializeSetup', mbInformation, mb_Ok);
Wilddeer
20-02-2011, 17:47
Ребят!
Мне нужно распаковать 7zip архив,потом запаковать его в .pak
как такое сделать?
Wilddeer, для распаковки 7зип' а можешь воспользоваться is7z или isdone или через батник. А вот про pak подробнее.
В некоторых играх (например: SW the forse unleashed 2) pak - это все тот же 7зип.
Wilddeer
20-02-2011, 18:24
duxa
В Crysis 2
Там .pak открывается через WinRar или 7zip
Можно написать батник 7zip но я не умею:)
Wilddeer,
для восстановления (запаковки в *.pak) я использую ExecAndWait.iss + 7za.exe
Wilddeer
20-02-2011, 19:20
nik1967
Можешь скрипт запаковки написать?
Wilddeer,
#include "ExecAndWait.iss"
procedure Cancel7zBtnOnClick(Sender: TObject);
var
tmp: Integer;
begin
_QUIT:= True;
WizardForm.StatusLabel.Caption:='Откат установки...';
WizardForm.ProgressGauge.Hide;
WizardForm.FilenameLabel.Hide;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, tmp);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
WizardForm.CancelButton.OnClick:=@Cancel7zBtnOnClick;
WizardForm.StatusLabel.Caption:='Восстановление игровых архивов...';
WizardForm.FilenameLabel.Caption:='Это может занять 5-10 мин... ждите';
ExecAndWait(ExpandConstant('{app}\Run\data\7za.exe'), 'a -tzip maps.pak .\maps\*', ExpandConstant('{app}\Run\data'), SW_HIDE, True);
DelTree(ExpandConstant('{app}\Run\data\maps'), True, True, True);
DeleteFile(ExpandConstant('{app}\Run\data\7za.exe'));
end;
end;
Помогите приделать к этому скрипту
http://rghost.ru/4468505
вот это
[Files]
Source: C:\BitmapImage2.bmp; DestDir: {tmp}; Flags: dontcopy
Code]
procedure InitializeWizard();
var b:string;
begin
ExtractTemporaryFile('BitmapImage2.bmp')
b:=ExpandConstant('{tmp}\BitmapImage2.bmp')
with WizardForm do
begin
WizardBitmapImage.Width:=WizardForm.ClientWidth;
WelcomeLabel1.Visible:=False;
WelcomeLabel2.Visible:=False;
WizardBitmapImage2.Bitmap.LoadFromFile(b);
WizardBitmapImage2.Width:=WizardForm.ClientWidth;
FinishedLabel.Visible:=False;
FinishedHeadingLabel.Visible:=False;
end;
end;
чтоб получилось так:
http://s2.ipicture.ru/uploads/20110221/Wa4PBVYl.bmp
Народ выручите плиз, у меня при распаковке (используется IsDOne) проценты зашкаливают а прогресс бар показывает только первое действие, а дальше остаётся полным. Я уже задавал этот вопрос но тот способ не сработал, подскажите кто знает????
actavir,
Ну написано же в хэлпе к ISDone:
При автоматической расстановке необходим тестовый проход для определения времени выполнения каждой операции относительно других.
Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов нулями.
Краткая инструкция:
а) первым делом убедитесь, что в начале скрипта закомментирована строка
#define records
(т.е. необходимо поставить точку с запятой в начале этой строки);
б) компилим проект и запускаем на установку. Это и будет нашим тестовым проходом. Все операции должны дойти до конца и завершиться удачно. Прогрессбар будет зашкаливать и все компоненты будут извлечены вне зависимости от того выбраны они, или нет. Все так и должно быть!
в) после тестового прогона в указанной папке создастся файл records.inf (имя и путь назначается в процедуре инициализации. О ней см. "подробное описание функций" ниже), его необходимо добавить в проект, раскомметировав, или добавив в начале скрипта строку:
#define records
Так же стоит отметить, что если сам скрипт находится в папке отличной от той, в которую компилится проект (например в скрипте NFS:Undercover откомпиленный файл сохраняется в Output\setup.exe), то records.inf создастся в папке с setup.exe и его необходимо будет перенести непосредственно к скрипту, или же подправить в секции [Files] его истинное расположение, например:
#ifdef records
Source: Output\records.inf; DestDir: {tmp}; Flags: dontcopy
#endif
г) снова откомпилить проект.
После этого инсталлер готов к употреблению. Приятного аппетита :)
При запуске процесс выполнения операций будет равномерно и корректно отображаться на прогрессбаре.
nik1967,
Привет, помоги пожалуйста решить проблему?
вот
http://i15.fastpic.ru/big/2011/0221/ad/d8f434cff707c7a5a9fc9950b62a87ad.png
Как передвинуть все это добро в центр?
И как изменить размер SelectDirPage ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.