Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

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

как такое сделать?

duxa
20-02-2011, 18:15
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 но я не умею:)

nik1967
20-02-2011, 19:11
Wilddeer,
для восстановления (запаковки в *.pak) я использую ExecAndWait.iss + 7za.exe

Wilddeer
20-02-2011, 19:20
nik1967

Можешь скрипт запаковки написать?

nik1967
20-02-2011, 19:39
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;

my-94
21-02-2011, 11:06
Помогите приделать к этому скрипту

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

actavir
21-02-2011, 15:16
Народ выручите плиз, у меня при распаковке (используется IsDOne) проценты зашкаливают а прогресс бар показывает только первое действие, а дальше остаётся полным. Я уже задавал этот вопрос но тот способ не сработал, подскажите кто знает????

nik1967
21-02-2011, 15:57
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
г) снова откомпилить проект.
После этого инсталлер готов к употреблению. Приятного аппетита :)
При запуске процесс выполнения операций будет равномерно и корректно отображаться на прогрессбаре.

Vista-w
21-02-2011, 16:15
nik1967,
Привет, помоги пожалуйста решить проблему?
вот
http://i15.fastpic.ru/big/2011/0221/ad/d8f434cff707c7a5a9fc9950b62a87ad.png
Как передвинуть все это добро в центр?
И как изменить размер SelectDirPage ?




© OSzone.net 2001-2012