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

Ответить
 • Просмотры: 52
Аватара пользователя
ZVSRus

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение ZVSRus »

Цитата 292944028:



между страницей выбора языка и страницей приветствия вылетает ошибка
Скрипты Inno Setup. Помощь и советы [часть 8]




Потому что на этом этапе константа (переменная) {app} еще не определена, вот и ругается. Все, что могу предложить, это использовать уже определенную переменную, например, тот путь к файлу, который у вас указан в параметре DefaultDirName. Если строго нужно, чтобы наличие файла проверялась после того, как на странице выбора пути/папки для установки был указан путь, то такую проверку надо осуществлять на этапе/странице выбора компонентов (wpSelectComponents), у меня нет знаний в Паскале, чтобы написать подобный код, но это точно не сложно.
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение Nordek »

Цитата boss911:



нужно, чтобы наличие файла проверялась после того, как на странице выбора пути/папки для установки был указан путь
Скрипты Inno Setup. Помощь и советы [часть 8]




Вот именно это и нужно. Вопрос пока остается открытым, может кто нибудь еще может помочь?
Аватара пользователя
boss911

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение boss911 »

Цитата 292944028:



Вопрос пока остается открытым, может кто нибудь еще может помочь?
Скрипты Inno Setup. Помощь и советы [часть 8]




Как такой вариант?


Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[setup]
AppName=test
AppVerName=test
OutputDir=.
DefaultDirName={pf}\test
[Components]
Name: tst; Description: unins.exe; 
Name: tst2; Description: setup.exe;
[code]
function FileExist(FName: string): boolean;
begin
  result := FileExists(AddBackslash(ExpandConstant('{app}'))+fname);
end;
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectComponents then 
  begin
    WizardForm.ComponentsList.ItemEnabled[0] := FileExist('unins000.exe');  //tst
    WizardForm.ComponentsList.ItemEnabled[1] := FileExist('setup.exe');     //tst2
    WizardForm.ComponentsList.Checked[0] := FileExist('unins000.exe');      //tst
    WizardForm.ComponentsList.Checked[1] := FileExist('setup.exe');         //tst2
  end;
end;
Аватара пользователя
pist0n

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение pist0n »

Цитата 292944028:



можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл?
Скрипты Inno Setup. Помощь и советы [часть 8]




292944028, пример для большинства случаев:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

#define AppName "Download Master"
#define AppExeName "dmaster.exe"
[Setup]
AppName=test
AppVerName=test
DefaultDirName={tmp}
CreateAppDir=no
Uninstallable=no
CreateUninstallRegKey=no
[Languages]
Name: ru; MessagesFile: compiler:Languages\russian.isl
[Components]
Name: test; Description: "test description"; Check: FileExists(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#AppName}_is1,InstallLocation}{#AppExeName}'))
Аватара пользователя
pist0n

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение pist0n »

Цитата El Sanchez:



292944028, пример для большинства случаев:
Скрипты Inno Setup. Помощь и советы [часть 8]




Не пойдет, Check: FileExists отрабатывает раньше, чем пользователь выберет папку установки. в реестре нет записи о папке установки




Цитата Dodakaedr:



Как такой вариант?
Скрипты Inno Setup. Помощь и советы [часть 8]




В принципе работает, но при такой конфигурации скрипта



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

; Скрипт создан через Мастер Inno Setup Script.
...
[Languages]
Name: "en"; MessagesFile: "compiler:Languages\English.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
en.FullInstallation=Full installation
en.CustomInstallation=Custom installation
en.CompactInstallation=Compact installation
ru.FullInstallation=Полная установка
ru.CustomInstallation=Выборочная установка
ru.CompactInstallation=Минимальная установка
[Types]
Name: "full"; Description: "{cm:FullInstallation}"
Name: "custom"; Description: "{cm:CustomInstallation}"; Flags: iscustom
Name: "compact"; Description: "{cm:CompactInstallation}"
[Components]
Name: SwordOfAsumi; Description: "Русификатор Sword of Asumi"; Types: full custom compact; Flags: fixed
Name: CharacterCreator; Description: "Русификатор DLC Sword of Asumi - Character Creator"; Types: full custom
Name: GraphicNovel; Description: "Русификатор DLC Sword of Asumi - Graphic Novel"; Types: full custom
...
[соde]
function FileExist(FName: string): boolean;
begin
  result := FileExists(AddBackslash(ExpandConstant('{app}'))+fname);
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
  If CurPageID = wpSelectComponents Then
  Begin
    WizardForm.ComponentsList.ItemEnabled[1] := FileExist('anime-character-creator\Anime Character Creator.exe'); //CharacterCreator
    WizardForm.ComponentsList.Checked[1] := FileExist('anime-character-creator\Anime Character Creator.exe'); //CharacterCreator
    WizardForm.ComponentsList.ItemEnabled[2] := FileExist('Swords of Edo Anthology PDF.pdf'); //GraphicNovel
    WizardForm.ComponentsList.Checked[2] := FileExist('Swords of Edo Anthology PDF.pdf'); //GraphicNovel
  End;
End;







Если при установке сначала выбрать минимальную установку, а потом полную, выбираются все компоненты, даже которые отключены. Можно это как то избежать?
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение saurn »

Цитата 292944028:



Здравствуйте, подскажите пожалуйста, можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл?
Скрипты Inno Setup. Помощь и советы [часть 8]




Короче полазил по интернету и нашёл
похожий код
, подправил его свои требования и вот что получилось, может ещё кому пригодится:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

...
[CustomMessages]
en.FullInstallation=Full installation
en.CustomInstallation=Custom installation
en.CompactInstallation=Compact installation
ru.FullInstallation=Полная установка
ru.CustomInstallation=Выборочная установка
ru.CompactInstallation=Минимальная установка
SwordOfAsumi=Русификатор Sword of Asumi
CharacterCreator=Русификатор DLC Sword of Asumi - Character Creator
GraphicNovel=Русификатор DLC Sword of Asumi - Graphic Novel
; Эта секция нужна только для того чтобы отобразилась страница выбора компонентов
[Components]
Name: Full; Description: "Full";
[Files]
; Русификатор Sword of Asumi
Source: "{#MySourceDir}\game\codex.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\credits.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\day2.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\day7.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\gallery.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\images.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\musicroom.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\screens.rpyc"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\Go3v2.ttf"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\Molengo-Regular.ttf"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\SourceSansPro-Italic.ttf"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\SourceSansPro-Regular.ttf"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\SwiftedStrokes.ttf"; DestDir: "{app}\game"; Flags: ignoreversion
Source: "{#MySourceDir}\game\russian.rpa"; DestDir: "{app}\game"; Flags: ignoreversion
; Русификатор DLC Sword of Asumi - Character Creator
Source: "{#MySourceDirDLC}\game\charactercreator.rpyc"; DestDir: "{app}\anime-character-creator\game"; Flags: ignoreversion; Check: CheckCharacterCreator
Source: "{#MySourceDirDLC}\game\codex.rpyc"; DestDir: "{app}\anime-character-creator\game"; Flags: ignoreversion; Check: CheckCharacterCreator
Source: "{#MySourceDirDLC}\game\options.rpyc"; DestDir: "{app}\anime-character-creator\game"; Flags: ignoreversion; Check: CheckCharacterCreator
Source: "{#MySourceDirDLC}\game\screens.rpyc"; DestDir: "{app}\anime-character-creator\game"; Flags: ignoreversion; Check: CheckCharacterCreator
Source: "{#MySourceDirDLC}\game\script.rpyc"; DestDir: "{app}\anime-character-creator\game"; Flags: ignoreversion; Check: CheckCharacterCreator
Source: "{#MySourceDirDLC}\game\Dense-Regular.otf"; DestDir: "{app}\anime-character-creator\game"; Flags: ignoreversion; Check: CheckCharacterCreator
Source: "{#MySourceDirDLC}\game\russian.rpa"; DestDir: "{app}\anime-character-creator\game"; Flags: ignoreversion; Check: CheckCharacterCreator
; Русификатор DLC Sword of Asumi - Graphic Novel
Source: "{#MySourceDirDLC}\Swords of Edo Anthology PDF.pdf"; DestDir: "{app}"; Flags: ignoreversion; Check: CheckGraphicNovel
...
[code]
Var
  NewCheckListBox1: TNewCheckListBox;
  NewComboBox1: TNewComboBox;
Function CheckCharacterCreator(): Boolean;
Begin
  If NewCheckListBox1.ItemCaption[1]=CustomMessage('CharacterCreator') Then
    Result := NewCheckListBox1.Checked[1];
End;
Function CheckGraphicNovel(): Boolean;
Begin
  If NewCheckListBox1.ItemCaption[NewCheckListBox1.ItemCount -1]=CustomMessage('GraphicNovel') Then
    Result := NewCheckListBox1.Checked[NewCheckListBox1.ItemCount -1];
End;
Procedure ChooseType(Sender: tobject);
Begin
  If NewComboBox1.ItemIndex = 0 Then
  Begin
    If NewCheckListBox1.ItemCount>1 Then
      NewCheckListBox1.Checked[1] := True;
    If NewCheckListBox1.ItemCount>2 Then
      NewCheckListBox1.Checked[2] := True;
  End;
  If NewComboBox1.ItemIndex = 2 Then
  Begin
    If NewCheckListBox1.ItemCount>1 Then
      NewCheckListBox1.Checked[1] := False;
    If NewCheckListBox1.ItemCount>2 Then
      NewCheckListBox1.Checked[2] := False;
  End;
End;
Function IsComponentChecked( Const nIndex: Integer ): Boolean;
Begin
    Result := NewCheckListBox1.Checked[nIndex];
End;
Function CheckFull: Boolean;
Begin
  If NewCheckListBox1.ItemCount>1 Then
    Result := IsComponentChecked(1);
  If NewCheckListBox1.ItemCount>2 Then
    Result := IsComponentChecked(1) And IsComponentChecked(2);
End;
Function CheckCompact: Boolean;
Begin
  If NewCheckListBox1.ItemCount>1 Then
    Result := Not IsComponentChecked(1);
  If NewCheckListBox1.ItemCount>2 Then
    Result := Not IsComponentChecked(1) And Not IsComponentChecked(2);
End;
Procedure SetCombo(sender: tobject);
Begin
  If CheckFull Then
    NewComboBox1.ItemIndex := 0;
  If CheckCompact Then
    NewComboBox1.ItemIndex := 2;
  If Not CheckFull And Not CheckCompact Then
    NewComboBox1.ItemIndex := 1;
End;
Procedure CurPageChanged(CurPageID: Integer);
Begin
  If CurPageID = wpSelectComponents Then
  Begin
    With NewCheckListBox1 Do
    Begin
      if ItemCount = 1 Then
      Begin
        If FileExists(ExpandConstant('{app}\anime-character-creator\Anime Character Creator.exe')) Then
          AddCheckBox(CustomMessage('CharacterCreator'), '', 0, true, true, false,true, Nil);
        If FileExists(ExpandConstant('{app}\Swords of Edo Anthology PDF.pdf')) Then
          AddCheckBox(CustomMessage('GraphicNovel'), '', 0, true, true, false,true, Nil);
      End;
    End;
  End;
End;
Procedure RedesignWizardForm();
Begin
  WizardForm.TypesCombo.Visible := False
  WizardForm.ComponentsList.Visible :=False
  { NewComboBox1 }
  NewComboBox1 := TNewComboBox.Create(WizardForm);
  With NewComboBox1 Do
  Begin
    Parent := WizardForm.SelectComponentsPage;
    Left := ScaleX(0);
    Top := ScaleY(50);
    Width := ScaleX(417);
    Height := ScaleY(21);
    Items.Add(CustomMessage('FullInstallation'));
    Items.Add(CustomMessage('CustomInstallation'));
    Items.Add(CustomMessage('CompactInstallation'));
    ItemIndex := 0;
    Style := csDropDownList;
    OnChange := @ChooseType;
  End;
  { NewCheckListBox1 }
  NewCheckListBox1 := TNewCheckListBox.Create(WizardForm);
  With NewCheckListBox1 Do
  Begin
    Parent := WizardForm.SelectComponentsPage;
    Left := ScaleX(0);
    Top := ScaleY(74);
    Width := ScaleX(417);
    Height := ScaleY(131);
    AddCheckBox(CustomMessage('SwordOfAsumi'), '', 0, true, true, false,true, Nil);
    Checked[0] := True;
    ItemEnabled[0] := False;
    OnClickCheck := @setcombo;
  End;
End;
// Инициализация установщика
Procedure InitializeWizard();
Begin
  RedesignWizardForm();
End;
Аватара пользователя
pist0n

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение pist0n »

Цитата 292944028:



Если при установке сначала выбрать минимальную установку, а потом полную, выбираются все компоненты, даже которые отключены. Можно это как то избежать?
Скрипты Inno Setup. Помощь и советы [часть 8]







Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[setup]
AppName=test
AppVerName=test
OutputDir=.
DefaultDirName={pf}\test
[Languages]
Name: "en"; MessagesFile: "compiler:Languages\English.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
en.FullInstallation=Full installation
en.CustomInstallation=Custom installation
en.CompactInstallation=Compact installation
ru.FullInstallation=Полная установка
ru.CustomInstallation=Выборочная установка
ru.CompactInstallation=Минимальная установка
[Types]
Name: "full"; Description: "{cm:FullInstallation}"
Name: "custom"; Description: "{cm:CustomInstallation}"; Flags: iscustom
Name: "compact"; Description: "{cm:CompactInstallation}"
[Components]
Name: SwordOfAsumi; Description: "Русификатор Sword of Asumi"; Types: full custom compact; Flags: fixed
Name: CharacterCreator; Description: "Русификатор DLC Sword of Asumi - Character Creator"; Types: full custom
Name: GraphicNovel; Description: "Русификатор DLC Sword of Asumi - Graphic Novel"; Types: full custom
[Code]
function FileExist(FName: string): boolean;
begin
  result := FileExists(AddBackslash(ExpandConstant('{app}'))+fname);
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
  If CurPageID = wpSelectComponents Then
  Begin
    WizardForm.ComponentsList.ItemEnabled[1] := FileExist('anime-character-creator\Anime Character Creator.exe'); //CharacterCreator
    WizardForm.ComponentsList.Checked[1] := FileExist('anime-character-creator\Anime Character Creator.exe'); //CharacterCreator
    WizardForm.ComponentsList.ItemEnabled[2] := FileExist('Swords of Edo Anthology PDF.pdf'); //GraphicNovel
    WizardForm.ComponentsList.Checked[2] := FileExist('Swords of Edo Anthology PDF.pdf'); //GraphicNovel
  End;
End;
procedure CheckCompList(sender:TObject);
begin
    WizardForm.ComponentsList.ItemEnabled[1] := FileExist('anime-character-creator\Anime Character Creator.exe'); //CharacterCreator
    WizardForm.ComponentsList.Checked[1] := FileExist('anime-character-creator\Anime Character Creator.exe'); //CharacterCreator
    WizardForm.ComponentsList.ItemEnabled[2] := FileExist('Swords of Edo Anthology PDF.pdf'); //GraphicNovel
    WizardForm.ComponentsList.Checked[2] := FileExist('Swords of Edo Anthology PDF.pdf'); //GraphicNovel
end;
procedure InitializeWizard();
begin
  WizardForm.TypesCombo.OnChange := @CheckCompList;
end;
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение saurn »

Цитата 292944028:



можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл?
Скрипты Inno Setup. Помощь и советы [часть 8]




Хоть ответ уже и получен (постом выше), предоставлю альтернативный вариант, который мне немного больше нравится, так как отвечает моим требованиям.



Код:

Код: Выделить всё

[Components]
Name: program; Description: Program Files; Types: custom compact full
Name: help; Description: Help File; Types: full
Name: readme; Description: Readme File
[Code]
var
  OldEvent_TypesComboChange: TNotifyEvent;
procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    wpSelectComponents:
      begin
        // Для компонента "Program Files"
        if not FileExists(ExpandConstant('{app}\MyProg.exe')) then
          begin
            WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('Program Files')] := False;
            WizardForm.ComponentsList.ItemEnabled[WizardForm.ComponentsList.Items.IndexOf('Program Files')] := False;
          end;
        // Для компонента "Help File"
        if not FileExists(ExpandConstant('{pf}\My Program\MyProg.chm')) then
          begin
            WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('Help File')] := False;
            WizardForm.ComponentsList.ItemEnabled[WizardForm.ComponentsList.Items.IndexOf('Help File')] := False;
          end;
      end;
  end;
end;
procedure TypesComboChange(Sender: TObject);
begin
  OldEvent_TypesComboChange(Sender);
  // Для компонента "Program Files"
  if not WizardForm.ComponentsList.ItemEnabled[WizardForm.ComponentsList.Items.IndexOf('Program Files')] then
    WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('Program Files')] := False;
  // Для компонента "Help File"
  if not WizardForm.ComponentsList.ItemEnabled[WizardForm.ComponentsList.Items.IndexOf('Help File')] then
    WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('Help File')] := False;
end;
procedure InitializeWizard();
begin
  with WizardForm.TypesCombo do
    begin
      OldEvent_TypesComboChange := OnChange;
      OnChange := @TypesComboChange;
    end;
end;

Если проверяемый файл не обнаружен, то чекбокс компонента блокируется для выбора и в нем снимается галка. Код полностью написан
Serega
, за что ему огромная благодарность.
Аватара пользователя
pist0n

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение pist0n »

Доброго времени суток!

Делаю инсталятор программы для проги на делфи.

Вопрос 1:

Как можно сделать в инсталяторе, чтобы был запрос для настроек программы, в частности IP-адрес сервера. У меня есть файл конфигурации ini, хотелось бы чтобы можно было вносить в него изменения при установке.

Что типа:

"Введите IP-Адрес сервера"

"Введите путь к базе данных"

Или в после установки запрос на настройку.



файл конфигурации

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[FBBASE]
IP = 192.168.1.2
DBPath =В:\TestInform\BAza.FDB
SkinName = Office2007 Blue
Check =0
[DEBUG]
LOGS=0
[PARAM]
Заранее спасибо! :oszone:  :) 
TIMER=120









Вопрос 2:

Для работы проги нужен FireBird. Нашел как добавить пункт для установки и установку FireBird.

Но мне нужен универсальный установщик, в котором будет выбор клиентская прога или серверная (типа как в самом FireBirdе)



Пример выбора вида установки

[spoiler]Изображение[/spoiler]






Вопрос 3:

Как можно сделать триальную версию или чтобы она сама себя удалила через год или удалила файл конфигурации, без которого она работать не будет





Сценарий Inno Setup

[spoiler]Код:
[/spoiler]

Код: Выделить всё

; Этот сценарий создан с помощью Мастера Inno Setup.
; ОБРАТИТЕСЬ К СПРАВОЧНОЙ ДОКУМЕНТАЦИИ, ЧТОБЫ ИСПОЛЬЗОВАТЬ ВСЕ ВОЗМОЖНОСТИ INNO SETUP!
;------------------------------------------------------------------------------
;   Определяем некоторые константы
;------------------------------------------------------------------------------
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.wylek.ru/"
#define MyAppExeName "TestInform.exe"
;------------------------------------------------------------------------------
;   Параметры установки
;------------------------------------------------------------------------------
[Setup]
; Примечание: Значение AppId является уникальным идентификатором для этого приложения.
; Не используйте одно и тоже значение AppId для разных приложений.
; (Для создания нового значения GUID, выберите в меню "Инструменты" пункт "Создать GUID".)
; Уникальный идентификатор приложения, 
;сгенерированный через Tools -> Generate GUID
AppId={{72974877-BA35-4042-A0BC-52C403F1E184}
; Прочая информация, отображаемая при установке
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
; Путь установки по-умолчанию
DefaultDirName={pf}\{#MyAppName}
; Имя группы в меню "Пуск"
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
LicenseFile=T:\TestInform\Install\License_RUS.txt
InfoBeforeFile=C:\Program Files (x86)\Inno Setup 5\Examples\Readme.txt
; Каталог, куда будет записан собранный setup и имя исполняемого файла
OutputDir=T:\TestInform\Install
OutputBaseFilename=setup
; Файл иконки
SetupIconFile=T:\TestInform\Install\TestInform_Icon.ico
; Параметры сжатия
Compression=lzma
SolidCompression=yes
;------------------------------------------------------------------------------
;   Устанавливаем языки для процесса установки
;------------------------------------------------------------------------------
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"; LicenseFile: "License_ENG.txt"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"; LicenseFile: "License_RUS.txt"
;------------------------------------------------------------------------------
;   Опционально - некоторые задачи, которые надо выполнить при установке
;------------------------------------------------------------------------------
[Tasks]
Name: fbrinst; Description: "Install Firebird" 
; Создание иконки на рабочем столе
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
;------------------------------------------------------------------------------
;   Файлы, которые надо включить в пакет установщика
;------------------------------------------------------------------------------
[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy
; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: "T:\TestInform\Install\TestInform.exe"; DestDir: "{app}"; Flags: ignoreversion
; Примечание: Не используйте' флаги "ignoreversion" для общих системных файлов.
Source: "T:\TestInform\Install\TestInform.ini"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "T:\TestInform\Install\Skins\*"; DestDir: "{app}\Skins"; Flags: ignoreversion recursesubdirs createallsubdirs
;--- 1 ---
;Source: Files\*.bmp; DestDir: {app} 
Source: T:\TestInform\Install\FBirdSetup.exe; DestDir: {tmp}; Tasks: fbrinst; Flags: deleteafterinstall 
;------------------------------------------------------------------------------
;   Указываем установщику, где он должен взять иконки
;------------------------------------------------------------------------------ 
Code] 
procedure SetupFBird(); 
var 
  ResultCode: Integer; 
begin 
  Exec(ExpandConstant('{tmp}\FBirdSetup.exe'), '', '', SW_SHOWNORMAL, 
     ewWaitUntilTerminated, ResultCode); 
end; 
Сode]
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';
// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';
function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('Office2007.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
  Result := True;
end;
procedure DeinitializeSetup();
begin
  // Hide Window before unloading skin so user does not get
  // a glimpse of an unskinned window before it is closed.
  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
  UnloadSkin();
end;
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
[Run]
;--- 1 ---
Filename: {tmp}\FBirdSetup.exe; Description: "Launch Firebird Setup"; Tasks: fbrinst









Заранее спасибо! Изображение Изображение



Вдруг кому поможет, ответ на 2й вопрос



Выбор компонентов (спасибо справке :) )

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[Components]
Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help Files"; Types: full
Name: "help\english"; Description: "English"; Types: full
Name: "help\dutch"; Description: "Dutch"; Types: full









А чтобы сделать разные установки FireBird сделал так:

1. Создал 2 файла

FBirdSetup_server.cmd



Код:

Код: Выделить всё

FBirdSetup.exe /SILENT /NOICONS /COMPONENTS="ServerComponent\ClassicServerComponent"  /TASKS="CopyFbClientToSysTask"  /TASKS="CopyFbClientAsGds32Task"

FBirdSetup_client.cmd



Код:

Код: Выделить всё

FBirdSetup.exe /SILENT /NOICONS /COMPONENTS="ClientComponent"  /TASKS="CopyFbClientToSysTask"  /TASKS="CopyFbClientAsGds32Task"

2. Запуск при установке опционально, осталось только в выбор компонентов впихнуть



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[Tasks]
Name: fbrinstclient; Description: "Install Firebird Client"  ;  GroupDescription: "Установка Firebird:"; 
Name: fbrinstserver; Description: "Install Firebird Server"  ;  GroupDescription: "Установка Firebird:";  Flags: unchecked 
[Files]
Source: T:\TestInform\Install\FBirdSetup.exe; DestDir: {tmp}; Flags: deleteafterinstall 
Source: T:\TestInform\Install\FBirdSetup_client.cmd; DestDir: {tmp}; Tasks: fbrinstclient; Flags: deleteafterinstall 
Source: T:\TestInform\Install\FBirdSetup_server.cmd; DestDir: {tmp}; Tasks: fbrinstserver; Flags: deleteafterinstall 
[Run]
Filename: {tmp}\FBirdSetup_client.cmd; Description: "Launch Firebird Setup"; Tasks: fbrinstclient 
Filename: {tmp}\FBirdSetup_server.cmd; Description: "Launch Firebird Setup"; Tasks: fbrinstserver
Аватара пользователя
pist0n

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение pist0n »

Цитата Zerstoren:



Как можно сделать в инсталяторе, чтобы был запрос для настроек программы, в частности IP-адрес сервера. У меня есть файл конфигурации ini, хотелось бы чтобы можно было вносить в него изменения при установке.
Скрипты Inno Setup. Помощь и советы [часть 8]




В инсталляторе — никак не делайте, это не его дело.



Сделайте а) отдельную утилиту, которая будет этим заниматься, и вызывайте её на последнем этапе инсталляции, б) сделайте в Вашем приложении поддержку командной строки, добавьте параметр, отвечающий за отображение и задание настроек, и вызывайте Ваше приложение с данным параметром командной строки на последнем этапе инсталляции.
Ответить

Вернуться в «Автоматическая установка приложений»