2012-01-17 10 views
6

Estoy escribiendo un guión que requiere que los usuarios elegir qué partes de la aplicación que desea instalar: SóloInno Setup - Uso correcto de [Tipos], [Componentes] y [Tareas]

aplicación, motor de base de datos, Data solo, o cualquier combinación de estos.

sé que debería usar la sección [Components] para definir estos, pero estoy consiguiendo confundido por la interacción entre tipos, componentes y tareas - para uno, pensé [Tasks] era para instalaciones "extra", pero luego vi código que vincula explícitamente los tres.

¿Alguien me puede indicar una buena explicación de cómo funcionan juntas? - Estoy seguro de que es uno ...

Gracias

Respuesta

12

componentes están hechos de uno o más tipos . En el script, utilizará Componentes como selector, según el Tipo elegido por el usuario final. componentes pueden ser utilizados en las tareas ya que dependiendo de los tipos elegidas por el usuario una tarea tendrá o no ser ejecutado.

Por ejemplo:

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

¿Qué sucede si ciertos archivos solo se instalan cuando se selecciona una determinada tarea? ¿Todavía necesitan los componentes especificados entonces? – Nyerguds

1

Mi entendimiento es que un componente es básicamente un conjunto de archivos - que constituye un 'componente' importante de lo que puede ser instalado. Un 'tipo' de instalación es una selección de componentes que tiene sentido instalar juntos. Así es como codificaría el ejemplo de @ 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  
Cuestiones relacionadas