Inno Setup - правильное использование [Types], [Components] и [Tasks] - PullRequest
8 голосов
/ 17 января 2012

Я пишу сценарий, который требует от пользователей выбирать, какие части приложения устанавливать:

Только приложение, Только база данных, Только данные или любая их комбинация.

Iзнаю, что я должен использовать раздел [Components], чтобы определить их, но меня смущает взаимодействие между типами, компонентами и задачами - с одной стороны, я подумал, [Tasks] для «дополнительных» установок, но потом я увидел код, которыйссылки явно три.

Может кто-нибудь указать мне хорошее объяснение того, как они работают вместе?- Я уверен, что есть один ...

Спасибо

Ответы [ 2 ]

13 голосов
/ 17 января 2012

Компоненты изготовлены из одного или нескольких типов . В сценарии вы будете использовать Components в качестве селектора в зависимости от Type , выбранного конечным пользователем. Компоненты могут использоваться в Задачах , поскольку в зависимости от Типов , выбранных пользователем, Задача будет выполняться или не выполняться.

Например:

; 'Types': What get displayed during the setup
[Types]
Name: "full";     Description: "Full installation";
Name: "app";      Description: "Fapplication only";
Name: "dbengine"; Description: "Database engine only";
Name: "data";     Description: "Data only";

; Components are used inside the script and can be composed of a set of 'Types'
[Components]
Name: "full";     Description: "Full installation";   Types: full app dbengine app
Name: "app";      Description: "Fapplication only";   Types: app
Name: "dbengine"; Description: "Database engine only";Types: dbengine
Name: "data";     Description: "Data only";           Types: data

; Defines which files are setup, based on the differents components
[Files]
Source: "MyApp.exe";  DestDir: "{app}"; Flags: ignoreversion; Components: full app
Source: "ADll.dll";   DestDir: "{app}"; Flags: ignoreversion; Components: full app
Source: "Engine.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: full dbengine
Source: "data_0";     DestDir: "{app}"; Flags: ignoreversion; Components: full data
Source: "data_1";     DestDir: "{app}"; Flags: ignoreversion; Components: full data

; In the same fashion, a task can be set for a specific component
[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: full app
1 голос
/ 25 марта 2016

Насколько я понимаю, Компонент - это, по сути, набор файлов - он представляет собой основной «компонент» того, что может быть установлено. «Тип» установки - это набор компонентов, которые имеет смысл устанавливать вместе. Вот как я бы кодировал пример @ az01.

; Lists types of installations - the user is presented
; with a list containing these Descriptions:
[Types]
Name: "full";        Description: "Full installation";
Name: "app-only";    Description: "Application only";
Name: "engine-only"; Description: "Database engine only";
Name: "data-only";   Description: "Data only";

; This lists the installable components of the product and
; specifies which type of install they are included in
[Components]
Name: "app";      Description: "Application";     Types: full app-only
Name: "engine";   Description: "Database engine"; Types: full engine-only
Name: "data";     Description: "Data";            Types: full data-only

; each file is assigned to one component, unless it is shared between
; components, in which case maybe it should go in a 'shared' component.
[Files]
Source: "MyApp.exe";  DestDir: "{app}"; Flags:; Components: app
Source: "ADll.dll";   DestDir: "{app}"; Flags:; Components: app
Source: "Engine.dll"; DestDir: "{app}"; Flags:; Components: engine
Source: "data_0";     DestDir: "{app}"; Flags: ignoreversion; Components: data
Source: "data_1";     DestDir: "{app}"; Flags: ignoreversion; Components: data    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...