2011-11-18 10 views
10

Quiero derivar dinámicamente la carpeta de origen (y la carpeta de destino) para las instalaciones de 32/64 bits. Entonces, ¿cómo puedo especificar eso en la sección [Archivos] de la configuración de Inno? A continuación se presenta un error de compilación: ->¿Cómo uso "código" en la sección [Archivos] de Inno Setup?

[Files] 
Source: {#MySourcePath}\{code:GetSourceLibFolder}\*.jar; DestDir: {code:GetAppDir}\lib\; 

tengo la función GetSourceLibFolder() y GetAppDir() se define en la sección de código. Las funciones son muy simples y sólo devuelve una variable:

function GetSourceLibFolder(Param: String): String; 
begin 
    Result:= SourceLibFolder; 
end; 

function GetSourceBinFolder(Param: String): String; 
begin 
    Result:= SourceBinFolder; 
end; 

Gracias!

+1

No estoy seguro de si podemos llamar a nuestros códigos desde '[Code]' y usarlos en otros lugares en el script InnoSetup. ¿Qué le parece usar la instrucción '# define' para crear una cadena que aplique sus funciones (al igual que en [http://stackoverflow.com/questions/2329979/can-the-setup-filename-be-derived-from- the-executable] -file-version-number] (http://stackoverflow.com/questions/2329979/can-the-setup-filename-be-derived-from- the-executable-file-version-number)) –

+0

¿Dónde está esta fuente? carpeta lib: ¿está en la carpeta fuente relativa a la carpeta base de su script InnoSetup? ¿Por qué le preocupa la carpeta de destino cuando puede simplemente usar '{app}'? Por ejemplo: supongamos que su archivo de script InnoSetup está en la carpeta '. \' Y sus bibliotecas jar están en '. \ Install \ lib' y desea que estén en la carpeta' lib' de la carpeta de su aplicación '{app}', usted puede definir 'Fuente:" install \ lib \ *. jar "; DestDir: "{app} \ lib" 'La manera más fácil: puede tener un script InnoSetup separado para cada configuración de 32 y 64 bits definiendo diferentes carpetas de origen en cada archivo de script. – ecle

+0

@eee: Quiero tener un único instalador para sistemas de 32 y 64 bits, así que tengo 2 carpetas "lib" diferentes, es decir. lib-32 y lib-64, que configuro de forma dinámica y, por lo tanto, quiero leerlos dinámicamente. – Saurabh

Respuesta

4

La ruta de origen debe utilizarse en tiempo de compilación (a menos que tenga el indicador external) lo que significa que debe utilizar ISPP y un #define. La sección [Code] es solo para el código de tiempo de ejecución/instalación, por lo que funcionará para la ruta de destino.

Si proporciona el código para su función GetSourceLibFolder, alguien puede convertirlo a ISPP.

+0

¡Gracias! He editado mi publicación original para incluir la definición de la función. – Saurabh

+0

Y otra vez, ¿qué es 'SourceLibFolder'? recuerde que debe obtenerse en tiempo de compilación, no en tiempo de ejecución. – Deanna

+0

'SourceLibFolder' es una variable global que obtiene su valor en la sección de código de la variable' DefaultDestDir' en la sección '[Setup]': 'DefaultDirName = {code: SetProgramFileLocation} \ HP \ Pulse \ {# MyAppName}' – Saurabh

Cuestiones relacionadas