Войти

Показать полную графическую версию : Скрипты 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
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)

Baw17
24-12-2010, 19:46
как сделать чтобы при установке Бэкапилась ветка реестра, и потом в неё вносились изменения а при деинсталляции возвращались в исходное положение?

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.

Baw17
24-12-2010, 21:12
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битной ОС куда что пишется, в остальном все так.

Imitri7
24-12-2010, 22:12
покажите плыз пример где 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, на русифицированную можно просто ярлык в меню пуск сделать.
Спасибо!

gur74
25-12-2010, 11:04
:help: Нужно установить папку в системную Windows, как правильно написать в скрипте чтобы она устанавливалась с файлами скрытыми,системными.

Gnom_aka_Lexander
25-12-2010, 12:43
gur74,
[Files]
Source: "MyFile.exe"; DestDir: {win}\MiFolder; Attribs: System Hidden;

gur74
25-12-2010, 13:17
Лександер

Спасибо огромное!!!

А MiFolder я так понимаю создаваемая папка!?

Gnom_aka_Lexander
25-12-2010, 13:32
gur74, Ответил тут. (http://forum.ru-board.com/topic.cgi?forum=5&topic=35146&start=880#20)
На следующий пост ответ там-же :)

gur74
25-12-2010, 14:01
Лександер

И еще вопрос на засыпку как обозначать папку Program Files, если Windows {win} то Program Files {pf} что ли и где можно скачать все эти обозначения???

Vitek 07
25-12-2010, 14:43
gur74, при открытом Inno Setup Compiler жмешь F1и читаешь всё-всё вдумчиво. Переменные описаны в разделе Constants




© OSzone.net 2001-2012