2013-05-21 75 views
3

我已經搜索了很多,但沒有找到我的問題的答案。如何將參數傳遞到Inno中的Files部分

如何正確傳遞一個參數來像這樣工作:getPath('myParam')?

我有這樣的代碼:

[Files] 
Source: "AppName\*"; DestDir: "{code:getPath('myParam')}"; 

[Code] 
function getPath(Param: String):String; 
    var objRegExp: String; 
     path: Variant; 
begin 
    path := ExpandConstant('{userappdata}') +'\Adobe\' + Param + '\.+'; 
    objRegExp := CreateOleObject('VBScript.RegExp'); 
    objRegExp.Pattern := '(.+(\\Version)?(CS)?\d.+)'; 
    if objRegExp.Test(path) then 
     begin 
     objRegExpMatches := objRegExp.Execute(path); 
     Result := objRegExpMatches.Item[0].Value; 
     end; 
end 
+0

請注意,將文件作爲每臺計算機安裝的一部分安裝到每個用戶路徑中並不安全。所以確保你的設計合理。 – Miral

回答

3

由於它在the reference真實所示,腳本常數的原型是這樣的:

{code:FunctionName|Param} 

所以,你需要的功能之後添加|炭名稱並使用腳本常量函數調用中的單引號標記去除括號。在僞代碼中,它可能如下所示:

[Files] 
Source: "AppName\*"; DestDir: "{code:GetPath|Your input string value}"; 

[Code] 
function GetPath(Param: string): string; 
begin 
    MsgBox(Param, mbInformation, MB_OK); 
end; 
+0

Thanx!它正是我所搜索的! – user1552003

+0

不客氣! – TLama