2012-01-17 12 views
6

Sto scrivendo uno script che richiede agli utenti di scegliere quali parti dell'applicazione da installare: SoloInno Setup - l'uso corretto dei [Tipi], [Components] e [Operazioni]

applicazione, database del motore, dati solo, o qualsiasi combinazione di questi.

so dovrei usare la sezione [Components] per definire questi, ma io sono sempre confuso dall'interazione tra i tipi, componenti e le attività - per uno, ho pensato [Tasks] era per le installazioni "extra", ma poi ho visto il codice che collega esplicitamente i tre.

Qualcuno può indicarmi una buona spiegazione di come funzionano insieme? - Sono sicuro che c'è uno ...

Grazie

risposta

12

Componenti sono realizzati in uno o più tipi di . Nella sceneggiatura si utilizza Componenti come selettore in base allo Tipo scelto dall'utente finale. componenti possono essere utilizzati nelle Attività perché a seconda delle Tipi scelti dall'utente un Task avrà o no da eseguire.

Ad esempio:

; '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 
+0

Cosa succede se alcuni file vengono installati solo quando viene selezionata una determinata attività? Hanno ancora bisogno dei componenti specificati allora? – Nyerguds

1

mia comprensione è che un componente è un fondamentalmente un insieme di file - costituisce un importante 'componente' di ciò che può essere installato. Un "tipo" di installazione è una selezione di componenti che ha senso installare insieme. Ecco come modifico l'esempio di codice @ 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  
Problemi correlati