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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 22-10-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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.2.0 [23.09.2014] - Скачать;



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

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

Отправлено: 08:52, 02-02-2015

 

Аватара для boss911

Alien


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

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


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

Отправлено: 11:48, 14-04-2017 | #1921



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

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


Аватара для 292944028

Новый участник


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

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


Цитата boss911:
нужно, чтобы наличие файла проверялась после того, как на странице выбора пути/папки для установки был указан путь »
Вот именно это и нужно. Вопрос пока остается открытым, может кто нибудь еще может помочь?

Отправлено: 12:13, 14-04-2017 | #1922


Аватара для Dodakaedr

Ветеран


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

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


Цитата 292944028:
Вопрос пока остается открытым, может кто нибудь еще может помочь? »
Как такой вариант?
Скрытый текст
Код: Выделить весь код
[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;

-------
Inno Setup 5 Ultra Unicode

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

Отправлено: 21:14, 14-04-2017 | #1923


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

Ветеран


Contributor


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

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


Цитата 292944028:
можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл? »
292944028, пример для большинства случаев:
Скрытый текст

Код: Выделить весь код
#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}'))
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:56, 15-04-2017 | #1924


Аватара для 292944028

Новый участник


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

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


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

Цитата Dodakaedr:
Как такой вариант? »
В принципе работает, но при такой конфигурации скрипта
Скрытый текст
Код: Выделить весь код
; Скрипт создан через Мастер 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;

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

Отправлено: 08:27, 16-04-2017 | #1925


Аватара для 292944028

Новый участник


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

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


Цитата 292944028:
Здравствуйте, подскажите пожалуйста, можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл? »
Короче полазил по интернету и нашёл похожий код, подправил его свои требования и вот что получилось, может ещё кому пригодится:
Скрытый текст
Код: Выделить весь код
...
[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;

Отправлено: 13:16, 16-04-2017 | #1926


Аватара для Dodakaedr

Ветеран


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

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


Цитата 292944028:
Если при установке сначала выбрать минимальную установку, а потом полную, выбираются все компоненты, даже которые отключены. Можно это как то избежать? »
Скрытый текст
Код: Выделить весь код
[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;

-------
Inno Setup 5 Ultra Unicode

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

Отправлено: 14:15, 16-04-2017 | #1927


Аватара для boss911

Alien


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

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


Цитата 292944028:
можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл? »
Хоть ответ уже и получен (постом выше), предоставлю альтернативный вариант, который мне немного больше нравится, так как отвечает моим требованиям.
Код: Выделить весь код
[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, за что ему огромная благодарность.

Последний раз редактировалось boss911, 24-04-2017 в 22:50. Причина: опечатка в описании

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

Отправлено: 19:40, 24-04-2017 | #1928


Аватара для Zerstoren

Пользователь


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

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


Доброго времени суток!
Делаю инсталятор программы для проги на делфи.
Вопрос 1:
Как можно сделать в инсталяторе, чтобы был запрос для настроек программы, в частности IP-адрес сервера. У меня есть файл конфигурации ini, хотелось бы чтобы можно было вносить в него изменения при установке.
Что типа:
"Введите IP-Адрес сервера"
"Введите путь к базе данных"
Или в после установки запрос на настройку.
файл конфигурации

Код: Выделить весь код
[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е)
Пример выбора вида установки




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

Сценарий Inno Setup

Код: Выделить весь код
; Этот сценарий создан с помощью Мастера 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й вопрос
Выбор компонентов (спасибо справке :) )

Код: Выделить весь код
[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. Запуск при установке опционально, осталось только в выбор компонентов впихнуть
Скрытый текст

Код: Выделить весь код
[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

Последний раз редактировалось Zerstoren, 29-04-2017 в 21:19. Причина: Нашел кое-что


Отправлено: 19:37, 29-04-2017 | #1929


Ветеран


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

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


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

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

Отправлено: 21:44, 29-04-2017 | #1930



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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




 
Переход