2014-11-06 18 views
5

Quindi ho una funzione che sta aggiornando dell'XML e vorrei passare lo {AppVersion} che è stato impostato nella parte [Setup] dello script come costante a questo funzioneUtilizzo di {AppVersion} come parametro per una funzione in Inno Setup

ho cercato

MyFunction(ExpandConstants({AppVersion}) 

Ma questo mi dà un errore? Come faccio a passare questa costante per la mia funzione correttamente

My Code

[Files] 
Source: ".\Source\myfile.txt"; DestDir: "{app}\System"; AfterInstall: MyFunction('{#SetupSetting("AppVersion")}') 

[Setup] 
AppId=MyApp 
AppName=My Application 
AppVersion=011 
DefaultDirName=C:\MyApp 

[Code] 
procedure MyFunction(Text: String); 
begin 
    MsgBox(Text, mbInformation, MB_OK); 
end; 

risposta

7

Utilizzare la funzione SetupSetting preprocessore per espandere i valori direttivi [Setup] sezione:

MyFunction('{#SetupSetting("AppVersion")}'); 

Una breve prova:

[Setup] 
AppName=My Program 
AppVersion=1.2.3.4 
DefaultDirName={pf}\My Program 

[Code] 
procedure InitializeWizard; 
begin 
    MsgBox('AppVersion is: {#SetupSetting("AppVersion")}.', mbInformation, MB_OK); 
end; 
+0

Ciao @TLama, grazie ancora per l'aiuto. Penso che tu sia sulla strada giusta. Vedi il mio aggiornamento alla domanda per qualche esempio di codice su come sto cercando di usarlo. Attualmente il mio codice mostra un MessageBox vuoto anziché uno con il numero di versione al suo interno. Che cosa sto facendo di sbagliato? – user1

+0

Sposta la sezione '[Files]' dopo la sezione '[Setup]'. Il preprocessore funziona dall'alto verso il basso e non conosce ancora la direttiva 'AppVersion'. Un suggerimento per usare il preprocessore; è possibile salvare lo script completamente preelaborato se si scrive una riga '#expr SaveToFile (" C: \ PreprocessedScript.iss ")' alla fine dello script (l'unico parametro è il percorso in cui deve essere archiviato lo script pre-elaborato). – TLama

+0

NeverMind Ho realizzato il mio errore da [here] (http://stackoverflow.com/a/1926709/2987066) la sezione '[Setup]' deve arrivare prima di ''{#SetupSetting (" AppVersion ")}' 'linea nel file iis – user1