2011-11-18 16 views
10

Desidero generare dinamicamente la cartella di origine (e la cartella di destinazione) per le installazioni a 32/64 bit. Quindi, come posso specificarlo nella sezione [Files] di Inno setup. Di seguito si fornisce un errore di compilazione: ->Come utilizzare "codice" nella sezione [Files] di Inno Setup?

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

ho la funzione GetSourceLibFolder() e GetAppDir() definito nella sezione di codice. Le funzioni sono molto semplici e solo restituiscono una variabile:

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

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

Grazie!

+1

Non sono sicuro se possiamo chiamare i nostri codici da '[Codice]' e usarli in altri posti nello script InnoSetup. Che ne dici di usare l'istruzione '# define' per creare una stringa che applica le tue funzioni (proprio come in [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

Dove si trova questa fonte cartella lib: si trova nella cartella di origine relativa alla cartella di base del tuo script InnoSetup? Perché ti preoccupi della cartella di destinazione quando puoi usare '{app}'? Ad esempio: diciamo che il tuo file di script InnoSetup si trova nella cartella '. \' E le tue librerie jar sono in '. \ Install \ lib' e vuoi che siano nella cartella' lib' della cartella dell'applicazione '{app}', puoi definire 'Fonte:" install \ lib \ *. jar "; DestDir: "{app} \ lib" 'Il modo semplice: puoi avere uno script InnoSetup separato per ogni configurazione a 32-bit e 64-bit definendo una cartella sorgente diversa in ogni file di script. – ecle

+0

@eee: Voglio avere un singolo programma di installazione per i sistemi a 32 e 64 bit e quindi ho 2 diverse cartelle "lib", vale a dire. lib-32 e lib-64, che imposto dinamicamente e quindi voglio leggerli dinamicamente. – Saurabh

risposta

4

Il percorso di origine deve essere utilizzato in fase di compilazione (a meno che non si disponga del flag external), il che significa che è necessario utilizzare ISPP e #define. La sezione [Code] è solo per il codice temporale di esecuzione/installazione, quindi funzionerà per il percorso di destinazione.

Se si fornisce il codice per la funzione GetSourceLibFolder, qualcuno può convertirlo in ISPP.

+0

Grazie! Ho modificato il mio post originale per includere la definizione della funzione. – Saurabh

+0

E ancora qual'è 'SourceLibFolder'? ricorda che deve essere ottenuto in fase di compilazione, non in runtime. – Deanna

+0

'SourceLibFolder' è una variabile globale che ottiene il valore nella sezione di codice della variabile' DefaultDestDir' nella sezione '[Setup]': 'DefaultDirName = {code: SetProgramFileLocation} \ HP \ Pulse \ {# MyAppName}' – Saurabh

Problemi correlati