Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Ответить
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 9]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

Забанен


Сообщения: 34
Благодарности: 0

Профиль | Цитировать


Всем спс.

Отправлено: 17:10, 07-07-2022 | #811



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Коллеги, подскажите пожалуйста...
Не могу понять, как надо прописать...
Паскаль не знаю от слова - абсолютно...

Надо запустить regedit с параметрами:
Код: Выделить весь код
Exec(ExpandConstant('{win}\regedit.exe'), ' /S ''{app}\MyRegOff.reg''', '', SW_HIDE, ewWaitUntilTerminated, LResultCode);
Так не работает...

Как правильно параметры прописать?

Пните, пожалуйста, в нужном направлении

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...


Отправлено: 20:57, 10-07-2022 | #812


Старожил


Сообщения: 352
Благодарности: 192

Профиль | Отправить PM | Цитировать


Vanadiy777,
Путь в одинарных кавычках не прокатит, нужны двойные:
Код: Выделить весь код
"{app}\MyRegOff.reg"
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:00, 10-07-2022 | #813


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата iglezz:
Путь в одинарных кавычках не прокатит, нужны двойные: »
iglezz,
Так тоже пробовал - не работает...
Может тоже "ExpandConstant" в путях нужна до рег-файла?
Но как прописать не могу понять - пишет "ошибка синтаксиса"...

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...


Отправлено: 22:13, 10-07-2022 | #814


Старожил


Сообщения: 352
Благодарности: 192

Профиль | Отправить PM | Цитировать


Vanadiy777,
Ну да, ExpandConstant нужен, раз константы присутствуют.
Код: Выделить весь код
Exec(ExpandConstant('{win}\regedit.exe'), '/S '+ExpandConstant('"{app}\MyRegOff.reg"'), '', SW_HIDE, ewWaitUntilTerminated, LResultCode);
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:41, 10-07-2022 | #815


Забанен


Сообщения: 34
Благодарности: 0

Профиль | Цитировать


Может у кого-то было ,при прописке создания иконки в меню пуск, предлагает (Default),вместо имени при инсталляции.
Код: Выделить весь код
 Name: "{group}\{#MyAppDisplayName}";       Filename: "{app}\{#MyAppExeName}"; MinVersion: 0.0,5.0; Check: PuskIconCheck and InstallerCheck;
 Name: "{group}\Удалить {#MyAppDisplayName}";   Filename: "{uninstallexe}"; MinVersion: 0.0,5.0; Check: PuskIconCheck and InstallerCheck;
 Name: "{commondesktop}\{#MyAppDisplayName}"; Filename: "{app}\{#MyAppExeName}"; MinVersion: 0.0,5.0; Check: DesktopIconCheck and InstallerCheck;
В частности при попытке упаковать два .exe (стационарную и portable версии) в один инсталлятор.При инсталяции обычной версии пишет (Default) вместо имени.При распаковке портабл тоже предлагает сделать иконку в меню пуск с этим же именем (Default),хотя здесь он вообще не должен этого предлагать.Check работает нормально на установку файлов, а с иконками что-то не так...
Весь код:

Код: Выделить весь код
 #define MyAppName "Моя стационарная программа"
 #define MyAppNamePortable "Моя программа Portable"

 #define MyAppExeName "MyProg1.exe"
 #define MyAppDisplayName "MyProg1"

 #define MyAppDirName "Моя стационарная программа"
 #define MyAppConstantName "{pf}"

[Setup]
 AppName={#MyAppName}
 AppVerName=1.7
 DefaultDirName={code:GetInstallDir|{#MyAppConstantName}\{#MyAppDirName}}

 OutputDir=.

 Uninstallable=not PortableCheck

 DisableDirPage=no
 DisableWelcomePage=no

 UsePreviousAppDir=no

[Icons]
 Name: "{group}\{#MyAppDisplayName}";       Filename: "{app}\{#MyAppExeName}"; MinVersion: 0.0,5.0; Check: PuskIconCheck and InstallerCheck;
 Name: "{group}\Удалить {#MyAppDisplayName}";   Filename: "{uninstallexe}"; MinVersion: 0.0,5.0; Check: PuskIconCheck and InstallerCheck;
 Name: "{commondesktop}\{#MyAppDisplayName}"; Filename: "{app}\{#MyAppExeName}"; MinVersion: 0.0,5.0; Check: DesktopIconCheck and InstallerCheck;


[Files]
 Source: compiler:Examples\MyProg1.exe; DestDir: {app}; Check: InstallerCheck; Flags: ignoreversion;
 Source: compiler:Examples\MyProg2.exe; DestDir: {app}; Check: PortableCheck; Flags: ignoreversion;

[Code ]
var
  ComponentPage: TWizardPage;
  InstallerGroupBox: TNewGroupBox;
  Installer: TNewRadioButton;
  Portable: TNewRadioButton;
  IconGroupBox: TNewGroupBox;
  PuskIcon: TNewCheckBox;
  DesktopIcon: TNewCheckBox;
  PanelZadash: TNewCheckBox;


function CheckParam(s: string): boolean;                  
 var                                                      
   i: integer;                                            
 begin                                                    
 for i := 0 to ParamCount do begin                        
   Result := ParamStr(i) = s;                            
 if Result then Break;                                    
  end;                                                    
 end;                                                    
//--------------------------------------------------------//
function GetInstallDir(S: String): String;                
 begin                                                    
  if CheckParam('/P') then                                
    Result:= ExpandConstant('{src}\{#MyAppNamePortable}') 
  else                                                    
    Result:= ExpandConstant(S);                          
 end;                                                    


function InstallerCheck: Boolean;                        
 begin                                                    
   Result := Installer.Checked or CheckParam('/I');       
 end;                                                     
//--------------------------------------------------------//
function PortableCheck: Boolean;                          
 begin                                                    
   Result := Portable.Checked or CheckParam('/P');        
 end;                                                     


function DesktopIconCheck: Boolean;                       
 begin                                                    
   Result:= DesktopIcon.Checked;                          
 end;                                                     
//--------------------------------------------------------//
function PuskIconCheck: Boolean;                          
 begin                                                    
   Result:= PuskIcon.Checked;                             
 end;                                                     
//--------------------------------------------------------//
function PanelZadashCheck: Boolean;                       
 begin                                                   
   Result:= PanelZadash.Checked;                          
 end;                                                    


procedure CompClick(Sender: TObject);                     
begin                                                     
 case TNewRadioButton(Sender) of                          
  Portable:                                              
 begin
//--------------------------------------------------------//
  DesktopIcon.Checked     := False;                       
  DesktopIcon.Enabled     := DesktopIcon.Checked;         
  PuskIcon.Checked        := False;                       
  PuskIcon.Enabled        := PuskIcon.Checked;            
  PanelZadash.Checked     := False;                       
  PanelZadash.Enabled     := PanelZadash.Checked;         
//--------------------------------------------------------//
  WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + '{#MyAppNamePortable}';
  WizardForm.Caption      := FmtMessage(ExpandConstant('Распаковка — %1'), [ExpandConstant('Моя программа Portable')]);
 end;                                                     

  Installer:                                              
 begin                                                    
//--------------------------------------------------------//
  DesktopIcon.Checked     := True;                        
  DesktopIcon.Enabled     := DesktopIcon.Checked;         
  PuskIcon.Checked        := True;                        
  PuskIcon.Enabled        := PuskIcon.Checked;            
  PanelZadash.Checked     := False;                       
  PanelZadash.Enabled     := True;                        
//--------------------------------------------------------//
  WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{#MyAppConstantName}')) + '{#MyAppDirName}';
  WizardForm.Caption      := FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]);
  end;                                                    
 end;                                                     
end;                                                     


procedure InitializeWizard();
begin
  ComponentPage := CreateCustomPage(wpUserInfo, 'Выбор типа установки', '. . .');
  WizardForm.DirEdit.Text:= ExpandConstant('{code:GetInstallDir|{#MyAppConstantName}\{#MyAppDirName}}');

  InstallerGroupBox := TNewGroupBox.Create(WizardForm);
  with InstallerGroupBox do
  begin
    Parent := ComponentPage.Surface;
    Left := ScaleX(0);
    Top := ScaleY(10);
    Width := ScaleX(210);
    Height := ScaleY(60);
    Caption := 'Тип установки:';
  end;

  Portable := TNewRadioButton.Create(WizardForm);
  with Portable do
  begin
    Parent := InstallerGroupBox;
    Left := ScaleX(10);
    Top := ScaleY(35);
    Width := ScaleX(210);
    Height := ScaleY(17);
    Caption := 'Распаковка портативной версии';
    Checked    := CheckParam('/P');
    OnClick := @CompClick;
  end;

  IconGroupBox := TNewGroupBox.Create(WizardForm);
  with IconGroupBox do
  begin
    Parent := ComponentPage.Surface;
    Left := ScaleX(0);
    Top := ScaleY(80);
    Width := ScaleX(210);
    Height := ScaleY(80);
    Caption := 'Ярлыки программы:';
  end;

  PuskIcon := TNewCheckBox.Create(WizardForm);
  with PuskIcon do
  begin
    Parent := IconGroupBox;
    Left := ScaleX(10);
    Top := ScaleY(15);
    Width := ScaleX(210);
    Height := ScaleY(17);
    Caption := 'Ярлык(и) в меню «Пуск»';
    Checked := True;
    State := cbChecked;
  end;

  DesktopIcon := TNewCheckBox.Create(WizardForm);
  with DesktopIcon do
  begin
    Parent := IconGroupBox;
    Left := ScaleX(10);
    Top := ScaleY(35);
    Width := ScaleX(210);
    Height := ScaleY(17);
    Caption := 'Ярлык(и) на «Рабочем столе»';
    Checked := True;
    State := cbChecked;
  end;

  PanelZadash := TNewCheckBox.Create(WizardForm);
  with PanelZadash do
  begin
    Parent := IconGroupBox;
    Left := ScaleX(10);
    Top := ScaleY(55);
    Width := ScaleX(210);
    Height := ScaleY(17);
    Caption := 'Закрепить ярлык в «Панели задач»';
  end;

  Installer := TNewRadioButton.Create(WizardForm);
  with Installer do
  begin
    Parent := InstallerGroupBox;
    Left := ScaleX(10);
    Top := ScaleY(15);
    Width := ScaleX(210);
    Height := ScaleY(17);
    Caption := 'Установка стационарной версии';
    Checked := not CheckParam('/P');
    OnClick := @CompClick;
  end;
end;
Пробовал другой подобный код..тоже самое. С одним .exe нормально.
В чём может быть причина..

Последний раз редактировалось serg5, 19-07-2022 в 16:52.


Отправлено: 16:39, 19-07-2022 | #816


Аватара для ZVSRus

Старожил


Сообщения: 284
Благодарности: 85

Профиль | Отправить PM | Цитировать


[Setup]
DefaultGroupName={#MyAppName}

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:15, 19-07-2022 | #817


Забанен


Сообщения: 34
Благодарности: 0

Профиль | Цитировать


Цитата ZVSRus:
[Setup]
DefaultGroupName={#MyAppName} »
хорошо.
только при выборе распаковки портабл версии всё также предлагает иконку в меню пуск...
как её оттуда убрать..
Может надо как-то Check по другому указывать?
Или в таком случае аргумента какого-то не хватает?

Последний раз редактировалось serg5, 19-07-2022 в 17:51.


Отправлено: 17:20, 19-07-2022 | #818


Аватара для ZVSRus

Старожил


Сообщения: 284
Благодарности: 85

Профиль | Отправить PM | Цитировать


serg5,
У вас в секции [Setup] включена страница DefaultGroupName={#MyAppName} (страница программной группы), если для вас показ этой страницы не принципиально то можно эту страницу пропустить.

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 8) then
Result:= True;
end;

Тогда страница программной группы показываться не будет, ни при выборе портативной версии, ни при стационарной версии.
Если же хотите при выборе стационарной версии хотите показывать эту страницу, тогда надо химичить, все компоненты программной группы перенести на страницу SelectDirPage, пример в справке есть.
На странице SelectDirPage создаёте панельку и все компоненты с странице SelectProgramGroupPage переносите на эту панельку SelectDirPage, а в процедуре procedure CurPageChanged(CurPageID: Integer); при включеном Portable: скрываете, а при Installer: показываете.

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode


Последний раз редактировалось ZVSRus, 19-07-2022 в 19:14.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:04, 19-07-2022 | #819


Забанен


Сообщения: 34
Благодарности: 0

Профиль | Цитировать


Цитата ZVSRus:
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 8) then
Result:= True;
end; »
Не показывается,да.
Только в portable её не должно быть вообще.
Так как там не нужны ярлыки.
А она пытается и в portable ярлык повесить...
Здесь что-то..?.
Потому я писал выше может быть с Check что-не так?
Или ещё какой-то задачи не хватает?

Отправлено: 19:17, 19-07-2022 | #820



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход