2014-11-06 91 views
5

因此,我有一個更新某些XML的函數,並且我想將在[Setup]腳本的[Setup]部分中設置的{AppVersion}作爲常量傳遞給此功能使用{AppVersion}作爲Inno Setup中的函數的參數

我已經試過

MyFunction(ExpandConstants({AppVersion}) 

但是這給了我一個錯誤?我怎麼這個常量傳遞給我的正常工作

我的代碼

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

回答

7

用於擴大[Setup]部分指令值SetupSetting預處理功能:

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

一個簡短證明:

[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

嗨@TLama,再次感謝您的幫助。我認爲你在正確的軌道上。查看我對該問題的更新,瞭解我如何使用它的一些示例代碼。目前我的代碼顯示一個空白的MessageBox,而不是一個版本號。我究竟做錯了什麼? – user1 2014-11-06 12:25:06

+0

在'[Setup]'部分之後移動你的'[Files]'部分。預處理器從上到下工作,它不知道「AppVersion」指令。一個使用預處理器的提示;如果在腳本的最後(只有參數是預處理腳本應存儲的路徑)寫入#expr SaveToFile(「C:\ PreprocessedScript.iss」)行,則可以保存完全預處理的腳本。 – TLama 2014-11-06 12:32:49

+0

NeverMind我從[這裏](http://stackoverflow.com/a/1926709/2987066)意識到我的錯誤,'[Setup]'部分必須位於'{#SetupSetting(「AppVersion」)}之前'iis文件中的行 – user1 2014-11-06 12:32:52