Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Gnom_aka_Lexander
24-12-2010, 15:28
R.i.m.s.k.y., Скрипт еще рано, он тоже постоянно оптимизируется, могу выложить отдельно, если кому интересно, а регать лучше на родной все таки, хотя можно отдельный вопрос сделать - ставить оба редактора или только расширенный, но думаю, тоже не стоит, лично я предпочитаю работать в родном, а в расширенном удобно куски кода получать готовые и страницы добавлять, он, кстати с успехом заменяет IS From Designer.
В общем, нужно мнение не одного-двух человек, а десятка, хотябы. А то все качают и молчат..
R.i.m.s.k.y.
24-12-2010, 15:45
ожно отдельный вопрос сделать - ставить оба редактора или только расширенный »
+1
Лично я предпочитаю работать в расширенном - чего метаться туда-сюда-обратно
Gnom_aka_Lexander
24-12-2010, 15:55
R.i.m.s.k.y., Сделаю в следующем обновлении просто две галки - так три варианта будет: простой, расширенный, оба :)
_ToR4OK_
24-12-2010, 17:33
Подскажите пожалуйста, как менять местами страницы в инстале? Заранее спасибо =)
Gnom_aka_Lexander
24-12-2010, 17:49
_ToR4OK_, Насколько я знаю - никак, только создавать страницы с нужным содержимым в необходимом порядке, только я не уверен, что прокатит...
serg aka lain
24-12-2010, 18:56
как сделать такую доп.старницу с двумя чекбоксами? »
На скрине не чекбоксы, а радиокнопки.
А конкретно по вопросу
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={sd}\My Program
OutputDir=.
OutputBaseFilename=test
[CustomMessages]
HeaderLabelPage=Выберите тип установки
MyRadioCaption_1=Обычная установка
MyRadioCaption_2=Портативная установка
[Code]
var
MyNewPage: TWizardPage;
MyRadioBtn_1, MyRadioBtn_2: TRadioButton;
procedure GetMyNewPage();
begin
MyNewPage := CreateCustomPage(wpWelcome,
ExpandConstant('{cm:HeaderLabelPage}'), '');
MyRadioBtn_1 := TRadioButton.Create(WizardForm);
with MyRadioBtn_1 do
begin
Top := ScaleY(50);
Width := ScaleX(150);
Height := ScaleY(13);
Caption := ExpandConstant('{cm:MyRadioCaption_1}');
Checked := True;
Parent := MyNewPage.Surface;
end;
MyRadioBtn_2 := TRadioButton.Create(WizardForm);
with MyRadioBtn_2 do
begin
Top := ScaleY(120);
Width := ScaleX(150);
Height := ScaleY(13);
Caption := ExpandConstant('{cm:MyRadioCaption_2}');
Parent := MyNewPage.Surface;
end;
end;
procedure InitializeWizard();
begin
GetMyNewPage();
end;
_ToR4OK_
24-12-2010, 19:15
Подскажите пожалуйста, как менять местами страницы в инстале? Заранее спасибо =)Вопрос решен )
serg aka lain
24-12-2010, 19:33
Насколько я знаю - никак, только создавать страницы с нужным содержимым в необходимом порядке, только я не уверен, что прокатит... »
Если очень хочется, то можно. Вот есть прецедент (http://forum.oszone.net/post-1537145-2637.html)
как сделать чтобы при установке Бэкапилась ветка реестра, и потом в неё вносились изменения а при деинсталляции возвращались в исходное положение?
R.i.m.s.k.y.
24-12-2010, 20:04
как сделать чтобы при установке Бэкапилась ветка реестра, и потом в неё вносились изменения а при деинсталляции возвращались в исходное положение? »
[_Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
res, i, k: Integer;
reg0, reg, RegEdit: string;
Key: TArrayOfString;
begin
if CurStep=ssDone then begin
RegEdit:= ExpandConstant('{sys}\reg.exe');
reg0:= ExpandConstant('{pf}\InstallShield Installation Information\$...$\');
Key:= ['HKLM\SOFTWARE\GNU',
'HKCR\CLSID\{62CE7E72-4C71-4D20-B15D-452831A87D9D}',
'HKEY_CURRENT_USER\Software\KMPlayer'
];
for i:= 0 to GetArrayLength(Key)-1 do begin
reg := reg0 + IntToStr(i) + '.reg';
if not FileExists(reg) then begin Exec(RegEdit, ' export ' + AddQuotes(Key[i]) + ' ' + AddQuotes(reg), ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilTerminated, res);
end;
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
reg, reg0,RegEdit: string;
res,i: integer;
begin
if CurUninstallStep = usUninstall then begin
RegEdit:= ExpandConstant('{sys}\reg.exe');
reg0:= ExpandConstant('{pf}\InstallShield Installation Information\$...$\\');
for i:= 0 to 3 do begin
reg:= reg0 + IntToStr(i) + '.reg';
if FileExists(reg) = True then Exec(RegEdit, ' import ' + AddQuotes(reg),ExpandConstant('{sys}'),SW_HIDE,ewWaitUntilTerminated,res);
end;
end;
end;
Код идейно рабочий, ну может где-то пропустил объявление переменной или end.
R.i.m.s.k.y., честно в коде не разобрался, есть вопросы
куда сохраняет *.reg?
и где прописать какую ветку бэкапить?
данный скрипт работает в XP and Windows 7 X86 and X64?
R.i.m.s.k.y.
24-12-2010, 21:47
честно в коде не разобрался, есть вопросы »
А что там разбирать, наливай да пей!
куда сохраняет *.reg? »
переменная reg0:= ExpandConstant('{pf}\InstallShield Installation Information\$...$\');
и где прописать какую ветку бэкапить? »
матрица стрингов ;)
Key:= ['HKLM\SOFTWARE\GNU',
данный скрипт работает в XP and Windows 7 X86 and X64? »
везде где работает инно
На 64битных ОС есть заморочки, но они как со всеми, ключи реестра есть 32битные и 64битные (указывается числом на конце, к примеру HKLM32 или HKLM64), так что лучше убедиться на 64битной ОС куда что пишется, в остальном все так.
покажите плыз пример где ISDone по секции [Tasks] компоненты распаковывает
R.i.m.s.k.y.
24-12-2010, 23:04
Baw17,
сказочник я, недоглядел, в процедуре бэкапа реестра надо CurStep=ssInstall (перед стартом установки, когда зеленая колбаса только поползет), CurStep=ssDone - это в самом конце.
Еще при импорте/экспорте реестра в 64битных ОС надо учитывать и где располагается reg.exe - в {sys} (system32) или {syswow64}
Лександер,
верни в сборке английскую справку инно, она намного полнее! к примеру в русифицированной справке нету переменной syswow64, на русифицированную можно просто ярлык в меню пуск сделать.
Спасибо!
:help: Нужно установить папку в системную Windows, как правильно написать в скрипте чтобы она устанавливалась с файлами скрытыми,системными.
Gnom_aka_Lexander
25-12-2010, 12:43
gur74,
[Files]
Source: "MyFile.exe"; DestDir: {win}\MiFolder; Attribs: System Hidden;
Лександер
Спасибо огромное!!!
А MiFolder я так понимаю создаваемая папка!?
Gnom_aka_Lexander
25-12-2010, 13:32
gur74, Ответил тут. (http://forum.ru-board.com/topic.cgi?forum=5&topic=35146&start=880#20)
На следующий пост ответ там-же :)
Лександер
И еще вопрос на засыпку как обозначать папку Program Files, если Windows {win} то Program Files {pf} что ли и где можно скачать все эти обозначения???
Vitek 07
25-12-2010, 14:43
gur74, при открытом Inno Setup Compiler жмешь F1и читаешь всё-всё вдумчиво. Переменные описаны в разделе Constants
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.