2013-10-12 67 views
1

我需要IDL虛擬機添加到我的目標位置爲我的IDL文件名爲.sav我使用Inno Setup的, 而下面的代碼行如何創建一個目標快捷方式將應用程序鏈接到正確的程序 - Inno Setup?

[Icons] 
Name: "{group}\clas"; Filename: "{code:GetIDLPath}"; Parameters: """{app}\bin\BATCH_CLAS_MAIN.sav"""; IconFilename: "{app}\clas_icon.ico" 

[Code] 
function GetIDLPath(dummy: string): string; 
begin 
    RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\idlrt.exe', '', Result); 
    if Result = '' then 
    Result := 'idlrt.exe'; 
end; 

但目標位置最終被:

C:\clas\bin\BATCH_CLAS_MAIN.sav 

它應該是:

"C:\Program Files\Exelis\IDL82\bin\bin.x86\idlrt.exe" -vm C:/clas/bin/BATCH_CLAS_MAIN.sav 

我在註冊表檢查idlrt.exe位置和我我正在提供正確的路徑,

有誰知道什麼是錯的?

回答

1

至少我可以看到Parameters參數值有問題。如果您傳遞可展開的"{app}\bin\BATCH_CLAS_MAIN.sav"常數,則無法通過-vm選項跟隨{app}/bin/BATCH_CLAS_MAIN.sav路徑以正斜槓得到預期結果。這可能會更好一點:

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName=My Program 

[Icons] 
; because of use of the "useapppaths" flag, there's no need to have the 
; GetIDLPath function anymore; that flag do its work for you 
Name: "{group}\clas"; Filename: "idlrt.exe"; Parameters: "{code:GetIDLParams}"; IconFilename: "{app}\clas_icon.ico"; Flags: useapppaths 

[Code] 
function GetIDLParams(Value: string): string; 
begin 
    // prepare the -vm option followed by a quoted application path to a file 
    Result := '-vm ' + AddQuotes(ExpandConstant('{app}\bin\BATCH_CLAS_MAIN.sav')); 
    // and replace backslashes to forward slashes 
    StringChangeEx(Result, '\', '/', False); 
end; 
+0

好,只有當我改變工作: 名稱:「{組} \ CLAS」;文件名:「{code:GetIDLPath}」;參數:「{code:GetIDLParams}」; IconFilename:「{app} \ clas_icon.ico」 With Name:「{commondesktop} \ clas」;文件名:「{code:GetIDLPath}」;參數:「{code:GetIDLParams}」; IconFilename: 「{應用} \ clas_icon.ico」 的問題是, 它創建兩個圖標,一個 組外, 但它正確的路線我想: 「C:\ Program Files文件\ Exelis \ IDL82 \ bin \ bin.x86_64 \ idlrt.exe「-vm C:/clas/bin/BATCH_CLAS_MAIN.sav 偉大的一段代碼,謝謝, – user2333346

+0

另一個是在組內,或者有組名 但是隻顯示: C:/clas/bin/BATCH_CLAS_MAIN.sav 我想我不知道如何將兩個語句加在一起,即 「{commondesktop} \ clas」;和「{group} \ clas」; 你知道爲什麼嗎? – user2333346

+0

對不起,但我有點失落。那麼你想在哪裏創建這個快捷方式?而且,如果使用['useapppaths'](http://jrsoftware.org/ishelp/topic_iconssection.htm#useapppaths),也可以刪除'GetIDLPath'。看到更新... – TLama

相關問題