Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 9]
generator324
12-11-2019, 15:44
попробуйте обратиться в
Ссылка
http://autoit-script.ru/ »
Зачем? Я спросил в теме про Inno, потому что имел с ним дело когда-то. Немного ;).
Что до AutoIt, я знаю про систему автоматизации на его основе, но зачем вплетать сюда что третье? Всё равно без знания HWID ничего не получится (он меняется, так как меняется железка), а реализовать установку посредством devcon мне проще через тот же WSH, чем использовать сэконд стафф...
Вы лучше скажите, где InnoIDE взять ?
generator324, только через innoide в разделе ini есть кнопка импорта ini файлов »
habib2302, какой смысл пользовать восемь лет как заброшенный продукт? А импорт в проект есть и в Inno Script Studio:
https://i.imgur.com/LPYTPqW.png
Вы лучше скажите, где InnoIDE взять ? »
Берите лучше Inno Script Studio - Kymoto Solutions (https://www.kymoto.org/products/inno-script-studio/).
generator324
12-11-2019, 17:15
Берите лучше Inno Script Studio - Kymoto Solutions. »
Благодарю! Правда, как я понимаю, импорт .inf-файлов всё равно не делает...
А импорт .ini та же древняя ISTool умеет делать - вспомнил сейчас ;)
Kanteren
17-11-2019, 14:24
HKEY_CURRENT_USER\Software\MyProgram
HKEY_LOCAL_MACHINE\SOFTWARE\MyProgram
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyProgram
Как удалить ветки реестра во время и после установки?
El Sanchez
17-11-2019, 15:17
HKEY_CURRENT_USER\Software\MyProgram
HKEY_LOCAL_MACHINE\SOFTWARE\MyProgram
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyProgram
Как удалить ветки реестра во время и после установки? »
Kanteren,
[Registry]
Root: HKCU; Subkey: Software\MyProgram; Flags: deletekey dontcreatekey
Root: HKLM32; Subkey: SOFTWARE\MyProgram; Flags: deletekey dontcreatekey
Root: HKLM64; Subkey: SOFTWARE\MyProgram; Flags: deletekey dontcreatekey; Check: IsWin64
Adjective
25-11-2019, 05:56
Буквально дублирую предыдущий вопрос:
Как удалить ветку реестра во время и после установки?
[HKEY_USERS\S-1-5-21-3472633682-696082676-122184224-500\Software\MyProgramr]
При запуске программа сама создает по этому адресу раздел и хранит все свои настройки в нем, а после удаления, этот раздел остаётся!
Если прописать так:
Root: HKU; Subkey: "S-1-5-21-3472633682-696082676-122184224-500\Software\MyProgramr"; MinVersion: 0.0,5.0; Flags: uninsdeletekey
... то при установке создаётся пустой раздел и при удалении он удаляется. Но что-то мне подсказывает, что это не правильно :).
Насколько я понимаю значимость в этой ветке несёт только значение S-1-5-21, а остальное это путь к профилю и он отличается у всех на ПК.
Заранее благодарен за любую помощь.
Как удалить ветку реестра во время и после установки? »
Root: HKU; Subkey: "S-1-5-21-3472633682-696082676-122184224-500\Software\MyProgramr"; Flags: deletekey uninsdeletekey dontcreatekey
Скорее всего, ID, который указан в ветке "S-1-5-21-*", будет уникальным для каждой новой машины/пользователя, но это вам нужно проверить. Тогда этот вопрос нужно будет решать с помощью секции [Code] (тут вам другие помогут).
Как удалить ветку реестра во время и после установки?
[HKEY_USERS\S-1-5-21-3472633682-696082676-122184224-500\Software\MyProgramr] »Из текщего пользователя:
HKEY_CURRENT_USER\Software\MyProgramr
Соответственно: Деинсталлятор/Инсталлятор удалит значения текущего пользователя.
Насколько я понимаю значимость в этой ветке несёт только значение S-1-5-21, а остальное это путь к профилю и он отличается у всех на ПК. »Вы не сможете предугадать когда другой профиль будет загружен.
В HKEY_USERS соответствующий подраздел S-1-5-21-XXX другого профиля будет присутствовать в реестре лишь тогда, когда в профиль будет произведён вход.
До кучи: S-1-5-21-*-500 — это SID встроенной административной учётной записи (Administrator/Администратор/… etc.). Его RID на машинах ОС Windows всегда равен 500:
wmic.exe UserAccount where "SID like 'S-1-5-21-%%-500'" Get Name, SID
Dodakaedr
25-11-2019, 22:54
Как удалить ветку реестра во время и после установки? »
[Registry]
Root: HKCU; Subkey: "Software\MyProgramr"; Flags: deletekey uninsdeletekey
Adjective
26-11-2019, 13:06
Спасибо — boss911, Nordek, Iska и Dodakaedr за отзыв, разъяснение и помощь!
Через HKCU удаляется отлично. Вопрос закрыт, ВСЕМ добра!
Через HKCU удаляется отлично. »Помните, HKEY_CURRENT_USER:
При установке/деинсталляции из текущего пользователя (A) - Полезен только для текущего пользователя (A).
При установке/деинсталляции из текущего пользователя (A) - Для других пользователей (B, C, D) бесполезен.
В будущем: Для преобразования файлов *.reg - Используйте Converter (http://forum.oszone.net/post-1216149-86.html) или ISTool (http://sourceforge.net/projects/istool/).
Inno Script Studio (https://www.kymoto.org/products/inno-script-studio/downloads) также как ISTool умеет импортировать файлы *.reg, но не всегда корректно.
https://i4.imageban.ru/thumbs/2019.11.26/f43b5532ae3ef48d8e7fb55467e424c5.png (https://i4.imageban.ru/out/2019/11/26/f43b5532ae3ef48d8e7fb55467e424c5.png) https://i5.imageban.ru/thumbs/2019.11.26/19767d4febea9403dfe803736f2748b0.png (https://i5.imageban.ru/out/2019/11/26/19767d4febea9403dfe803736f2748b0.png) https://i2.imageban.ru/thumbs/2019.11.26/645866f8fb32097f6b81651914c0c268.png (https://i2.imageban.ru/out/2019/11/26/645866f8fb32097f6b81651914c0c268.png)
https://i4.imageban.ru/thumbs/2019.11.26/f43b5532ae3ef48d8e7fb55467e424c5.png (https://i4.imageban.ru/out/2019/11/26/f43b5532ae3ef48d8e7fb55467e424c5.png) https://i4.imageban.ru/thumbs/2019.11.26/9865b1db22017dda10b741ea5c5130bd.png (https://i4.imageban.ru/out/2019/11/26/9865b1db22017dda10b741ea5c5130bd.png) https://i6.imageban.ru/thumbs/2019.11.26/78737e65889235a64f40a680d38704a2.png (https://i6.imageban.ru/out/2019/11/26/78737e65889235a64f40a680d38704a2.png) https://i6.imageban.ru/thumbs/2019.11.26/44764aab9e273be1a23b81dc540631a4.png (https://i6.imageban.ru/out/2019/11/26/44764aab9e273be1a23b81dc540631a4.png)
Привет всем,
пытаюсь вызвать функцию ShellExecute из подключенной библиотеки, результате выдает что файл не найден. Что я делаю не так?
[Сode]
function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string; lpParameters: string; lpDirectory: string; nShowCmd: Integer) : THandle;
external 'ShellExecuteW@shell32.dll stdcall';
function MessageBox(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal): Integer;
external 'MessageBoxA@user32.dll stdcall';
procedure pro();
var s : string;
res : integer;
begin
res := ShellExecute(0, 'open', 'notepad.exe', '' ,'', SW_SHOW);
s := Format('%d', [res]);
MessageBox(0, 'result=' +s, 'MessageBoxA', MB_OK);
end;
habib2302
12-12-2019, 20:59
web_form, если честно не знаю т.к эти страницы создавались с ноля
а как сделать чтобы лого показалась во всех пунктах Инсталятора »
В procedure CurPageChanged(CurPageID: Integer);
на соответствующих страницах указать родителя (Parent:= ) лого
habib2302
13-12-2019, 12:15
nik1967, в curPageChanged можно добавить только для финишной страницы. А как быть с cancel page?
procedure CurPageChanged(CurPageID: integer);
begin
#ifdef WinTB
case CurPageID of
wpWelcome: begin
TaskBarButtonEnabled(hback, false);
end;
wpSelectDir: begin
TaskBarButtonEnabled(hback, true);
TaskBarButtonImage(hnext, hImg2, IMAGE_ICON);
end;
wpInstalling: begin
TaskBarButtonEnabled(hback, false);
TaskBarButtonEnabled(hnext, false);
end;
wpFinished: begin
TaskBarButtonEnabled(hnext, true);
TaskBarButtonEnabled(hcancel, false);
end;
end;
#endif
if CurPageID=wpWelcome then begin
HideComponents;
Bevel2.show;
Bevel3.show;
TextLabel[6].show;
TextLabel[1].show;
WizardForm.BackButton.Caption:= CustomMessage(lang+'ButtonBack');
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
WizardForm.NextButton.Caption:= CustomMessage(lang+'Buttonnext');
Background.Show;
WizardForm.CancelButton.Left:=ScaleX(5332);
end;
#ifdef InfoBefore
if CurPageID=wpInfoBefore then begin
HideComponents;
WizardForm.BackButton.Caption:= CustomMessage(lang+'ButtonBack');
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
WizardForm.NextButton.Caption:= CustomMessage(lang+'Buttonnext');
TextLabel[38].show;
TextLabel[39].show;
WizardForm.InfoBeforeMemo.Show;
TextLabel[40].show;
Bevel3.Show;
Bevel2.Show;
Bevel4.Show;
Bevel5.Show;
Bevel6.Show;
Bevel7.Show;
Bevel8.Show;
WizardForm.Bevel1.Show;
WizardForm.Bevel1.SetBounds(0,90,WizardForm.ClientWidth,2);
end;
#endif
if CurPageID=wpSelectcomponents then begin
HideComponents;
case ActiveLanguage of
'eng': Application.Title := 'Setup —- « {#GameName} »';
'rus': Application.Title := 'Óñòàíîâêà —- « {#GameName} »';
end;
TextLabel[26].show;
WizardForm.BackButton.Caption:= CustomMessage(lang+'ButtonBack');
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
WizardForm.NextButton.Caption:= CustomMessage(lang+'ButtonInstall');
WizardForm.SelectComponentsLabel.show;
//TextLabel[2].show;
TextLabel[7].Show;
Bevel3.Show;
Bevel2.Show;
Background.Hide
Bevel4.Show;
Bevel5.Show;
Bevel6.Show;
Bevel7.Show;
Bevel8.Show;
TextLabel[28].show;
WizardForm.CancelButton.Left:=ScaleX(5332);
WizardForm.Bevel1.Show;
WizardForm.Bevel1.SetBounds(0,90,WizardForm.ClientWidth,2);
WizardForm.ComponentsList.Show;
end;
//-------- Second Page --------\\
if CurPageID=wpSelectDir then begin
HideComponents;
case ActiveLanguage of
'eng': Application.Title := 'Setup —- « {#GameName} »';
'rus': Application.Title := 'Óñòàíîâêà —- « {#GameName} »';
end;
TextLabel[13].show;
TextLabel[29].show;
TextLabel[8].show;
TextLabel[2].show;
TextLabel[14].show;
TextLabel[15].show;
TextLabel[16].show;
TextLabel[17].show;
TextLabel[18].show;
TextLabel[19].show;
TextLabel[20].show;
TextLabel[21].show;
TextLabel[22].show;
WizardForm.CancelButton.Left:=ScaleX(5332);
WizardForm.BackButton.Caption:= CustomMessage(lang+'ButtonBack');
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
WizardForm.NextButton.Caption:= CustomMessage(lang+'Buttonnext');
Bevel3.Show;
Bevel2.Show;
Background.hide;
Bevel4.Show;
Bevel5.Show;
Bevel6.Show;
bevel7.Show;
Bevel8.Show;
WizardForm.GroupBrowseButton.Show;
WizardForm.GroupEdit.Show;
WizardForm.DirEdit.Show;
WizardForm.SelectDirLabel.Show;
WizardForm.DirBrowseButton.Show;
GetFreeSpaceCaption(nil);
end;
if CurPageID=wpInstalling then begin
HideComponents;
TextLabel[33].hide;
TextLabel[11].show;
TextLabel[12].show;
TextLabel[3].show;
PauseButton1.show;
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
TextLabel[30].show;
Bevel3.Show;
Bevel2.Show;
wizardform.cancelbutton.show;
TextLabel[9].show;
Bevel4.Show;
Bevel5.Show;
Bevel6.Show;
Bevel6.Height:=210;
WizardForm.ProgressGauge.Show;
WizardForm.StatusLabel.Show;
WizardForm.CancelButton.Hide;
WizardForm.CancelButton.Left:=WizardForm.NextButton.Left;
CompactButton.Show;
end;
//--------Game was successfully installed PAGE--------\\
if CurPageID=wpFinished then begin
#ifdef WinTB
WintbStart();
#endif
#ifdef WinTB
Win6TaskBarV1_2(WizardForm.Handle, MainForm.Handle, 0);
#endif
case ActiveLanguage of
'eng': Application.Title := 'Setup —- « {#GameName} »';
'rus': Application.Title := 'Óñòàíîâêà —- « {#GameName} »';
end;
with WizardForm do
begin
AutoScroll := False;
ClientHeight := ScaleY(411);
ClientWidth := ScaleX(584);
Position := poScreenCenter;
lPLogo:= ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(214), ScaleY(368), ScaleX(158), ScaleY(37), True, True);
ImgApplyChanges(WizardForm.Handle);
end;
WizardForm.NextButton.Caption:= CustomMessage(lang+'Buttonfinish');
with langBtn do
begin
Height := ScaleY(30);
Left := ScaleX(5);
Top := ScaleY(372);
Width := ScaleX(31)
OnClick:= @LangBtnClick;
Parent:= WizardForm;
end;
HideComponents;
TextLabel[5].show;
TextLabel[10].show;
Bevel2.Show;
Bevel3.Show;
Background.Show;
Runbtn.show;
end;
//--------Game Fail To Install PAGE--------\\
if (CurPageID = wpFinished) and (ISDoneError=True) then
begin
case ActiveLanguage of
'eng': Application.Title := 'Setup —- « {#GameName} »';
'rus': Application.Title := 'Óñòàíîâêà —- « {#GameName} »';
end;
#ifdef WinTB
SetTaskBarProgressState(TBPF_ERROR);
WintbStart();
Win6TaskBarV1_2(WizardForm.Handle, MainForm.Handle, 0);
#endif
Runbtn.hide;
WizardForm.NextButton.Caption:= CustomMessage(lang+'Buttonfinish');
with langBtn do
begin
Height := ScaleY(30);
Left := ScaleX(5);
Top := ScaleY(372);
Width := ScaleX(31)
OnClick:= @LangBtnClick;
Parent:= WizardForm;
end;
with WizardForm do
begin
AutoScroll := False;
ClientHeight := ScaleY(411);
ClientWidth := ScaleX(584);
Position := poScreenCenter;
lPLogo:= ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(214), ScaleY(368), ScaleX(158), ScaleY(37), True, True);
ImgApplyChanges(WizardForm.Handle);
end;
HideComponents;
TextLabel[4].show;
TextLabel[10].show;
Bevel2.Show;
Bevel3.Show;
Background.Show;
end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID=wpSelectProgramGroup) then Result:=true;
end;
А как быть с cancel page? »
Я же не знаю, как реализована страница отмены.
habib2302
13-12-2019, 12:37
nik1967, sorry
https://drive.google.com/file/d/1s9e0yoUP3hW0jeQaJD2SmLK-AR6FMe2h
habib2302, как-то так :)
https://drive.google.com/open?id=1WjrliI-kr6TCuqrw3TtYnwNK7Cexa4my
Все под меня косите :)
habib2302
13-12-2019, 14:15
web_form, В Main.iss - 711 строка, В module\cancel form.iss - 200 строка, В module\page.iss - 169 и 220 строки
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.