Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]


Страниц : 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

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

292944028
14-04-2017, 12:13
нужно, чтобы наличие файла проверялась после того, как на странице выбора пути/папки для установки был указан путь »
Вот именно это и нужно. Вопрос пока остается открытым, может кто нибудь еще может помочь?

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

El Sanchez
15-04-2017, 09:56
можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл? »
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}'))

292944028
16-04-2017, 08:27
292944028, пример для большинства случаев: »
Не пойдет, Check: FileExists отрабатывает раньше, чем пользователь выберет папку установки. в реестре нет записи о папке установки

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

; Скрипт создан через Мастер 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;

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

292944028
16-04-2017, 13:16
Здравствуйте, подскажите пожалуйста, можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл? »

Короче полазил по интернету и нашёл похожий код (http://krinkels.org/threads/kak-sovmestit-tnewchecklistbox-i-tnewcombobox.2639/#post-24086), подправил его свои требования и вот что получилось, может ещё кому пригодится:

...
[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;

Dodakaedr
16-04-2017, 14:15
Если при установке сначала выбрать минимальную установку, а потом полную, выбираются все компоненты, даже которые отключены. Можно это как то избежать? »
[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;

boss911
24-04-2017, 19:40
можно сделать так чтоб на странице выбора компонентов некоторые компоненты отображались только если в папке установки программы присутствует определенный файл? »
Хоть ответ уже и получен (постом выше), предоставлю альтернативный вариант, который мне немного больше нравится, так как отвечает моим требованиям.
[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 (http://forum.oszone.net/member.php?u=88670), за что ему огромная благодарность.

Zerstoren
29-04-2017, 19:37
Доброго времени суток!
Делаю инсталятор программы для проги на делфи.
Вопрос 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е)

http://s018.radikal.ru/i505/1704/67/c3d4ad4afed2.jpg


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



; Этот сценарий создан с помощью Мастера 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



Заранее спасибо! :oszone: :)

Вдруг кому поможет, ответ на 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

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

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

Zerstoren
30-04-2017, 21:41
Еще вопрос, как определить разрядность системы?
У менять есть файл для настроек FireBird (серверная часть приложения), и там есть батник который добавляет юзеров и привилегии, он зависит от разрядности

32 бита
c:\progra~1\Firebird\FireBird_2_1\Bin\gsec -user SYSDBA -password masterkey -add Admin -pw 111

64 бита
c:\progra~2\Firebird\FireBird_2_1\Bin\gsec -user SYSDBA -password masterkey -add Admin -pw 111

Как это сделать?

из справки

[Files] section

Flags
This parameter is a set of extra options. Multiple options may be used by separating them by spaces. The following options are supported:

32bit
Causes the {sys} constant to map to the 32-bit System directory when used in the Source and DestDir parameters, the regserver and regtypelib flags to treat the file as 32-bit, and the sharedfile flag to update the 32-bit SharedDLLs registry key. This is the default behavior in a 32-bit mode install.

64bit
Causes the {sys} constant to map to the 64-bit System directory when used in the Source and DestDir parameters, the regserver and regtypelib flags to treat the file as 64-bit, and the sharedfile flag to update the 64-bit SharedDLLs registry key. This is the default behavior in a 64-bit mode install.

Ни фига не понял

boss911
01-05-2017, 02:42
как определить разрядность системы? »
[Files]
Source: MyProg-x64.exe; DestDir: {app}; Check: IsWin64
Source: MyProg-x86.exe; DestDir: {app}; Check: not IsWin64

marty03@vk
01-05-2017, 15:31
Доброго времени суток.
Подскажите в чем проблема - текст при выборе папки установки/группы (меню "Пуск") не обновляется.
Возьмем стандартный путь "C:\Program Files\СS:Source" - в полоске "путь установки" отображается такой же; если его (во время инсталляции) изменить, например, на "D:\Games\CS:Source" - путь установки изменится, но текст в полоске будет стандартным ("C:\Program Files\CS:Source"). Как решить эту проблему?
Надеюсь Вы поняли, что я имел в виду

Zerstoren
03-05-2017, 20:56
Подскажите ещё, как сделать, чтобы путь установки нельзя было изменить, т.е. чтобы не было кнопки "Обзор"?

ZVSRus
04-05-2017, 10:04
Zerstoren, чтобы не было кнопки "Обзор"

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
procedure InitializeWizard();
begin
WizardForm.DirBrowseButton.Hide;

with WizardForm.DirEdit do
begin
Width := ScaleX(417);
AutoSelect := False;
end;
end;

Zerstoren
04-05-2017, 10:22
ZVSRus, Спасибо!
А можно вообще запретить редактирование пути?
Но чтобы он показывался

ZVSRus
04-05-2017, 10:33
Zerstoren, А можно вообще запретить редактирование пути?
Но чтобы он показывался

1.

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
procedure InitializeWizard();
begin
WizardForm.DirBrowseButton.Hide;

with WizardForm.DirEdit do
begin
Width := ScaleX(417);
AutoSelect := False;
Enabled := False;
end;
end;

2.

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
procedure InitializeWizard();
begin
with WizardForm.DirBrowseButton do
begin
Enabled := False;
end;

with WizardForm.DirEdit do
begin
Width := ScaleX(322);
Enabled := False;
end;
end;

Zerstoren
04-05-2017, 10:42
ZVSRus, Спасибо! :up

conder49@vk
10-05-2017, 05:21
Можно как-нибудь с помощью Inno добавлять задания в планировщик задач?[

Nordek
10-05-2017, 13:15
Можно как-нибудь с помощью Inno добавлять задания в планировщик задач? »
Пример:
[Tasks]
Name: tasks; Description: Задача

[Run]
Filename: SCHTASKS.exe; Parameters: "/Create /TN ""My Game"" /SC ONSTART /TR ""c:\windows\system32\freecell"" /RU ""NT AUTHORITY\SYSTEM"""; Flags: runhidden; MinVersion: 0,5.0; OnlyBelowVersion: 0,6.0; Tasks: tasks; StatusMsg: Добавление задачи
Filename: SCHTASKS.exe; Parameters: "/Create /TN ""My Game"" /SC ONSTART /TR ""c:\windows\system32\freecell"" /RU ""NT AUTHORITY\SYSTEM"" /RL HIGHEST /V1"; Flags: runhidden; MinVersion: 0,6.0; Tasks: tasks; StatusMsg: Добавление задачи

[UninstallRun]
Filename: SCHTASKS.exe; Parameters: "/Delete /TN ""My Game"" /F"; Flags: runhidden; Tasks: tasks; StatusMsg: Удаление задачи




© OSzone.net 2001-2012