2013-02-21 76 views
3

我試圖僅在用戶到達文件夾選擇頁面時顯示一個消息框,下面是在安裝開始時顯示消息框的實際代碼:Inno Setup,在文件夾選擇步驟中顯示一個msgbox

[code] 
var ApplicationPath: string; 

function GetAppPath(Param: String): String; 
begin 
RegQueryStringValue(HKLM, 'SOFTWARE\XXX\XXX', 'Install Dir', ApplicationPath) 
    if ApplicationPath = '' then 
    begin 
    MsgBox('Install folder non found', mbError, MB_OK); 
    result:=ApplicationPath; 
    end 
    else 
    MsgBox('Install folder found in "' + ApplicationPath + '". NOTE: close the program before proceeding.', mbInformation, MB_OK); 
    result:=ApplicationPath; 
    end; 
end. 

我需要這樣的東西:

如果(的PageId = wpSelectDir)然後...... [運行上面的代碼]

但我真的不知道怎麼回事,謝謝您幫幫我。

回答

2

對此的理想事件是CurPageChanged。當選擇目錄頁面顯示時,您可以通過這種方式運行代碼:

[Code] 
procedure CurPageChanged(CurPageID: Integer); 
var 
    AppPath: string; 
begin 
    if (CurPageID = wpSelectDir) then 
    begin 
    // this will query the string value in registry; if that succeed and the 
    // value is read, then the message box about success is shown, otherwise 
    // the error message box about failure is shown 
    if RegQueryStringValue(HKLM, 'SOFTWARE\XXX\XXX', 'Install Dir', AppPath) then 
     MsgBox('Installation folder found...', mbInformation, MB_OK) 
    else 
     MsgBox('Installation folder not found...', mbError, MB_OK); 
    end; 
end; 
+1

請記住,此事件在第一次到達頁面時以及返回時都會運行。這包括如果用戶移動下一個頁面,然後返回它 - 當返回時,他們不希望他們先前的選擇被覆蓋。因此,從上一頁的「NextButtonClick」執行任何自動填充任務通常是一個更好的主意。 – Miral 2013-02-22 18:37:57

+0

@病毒,好點!對於這種情況,下一個按鈕事件可能對用戶更友好。 – TLama 2013-02-22 18:44:30

+0

感謝您的幫助,但如果我把這樣的代碼: [code] var ApplicationPath:string; 程序CurPageChanged(CurPageID:Integer);如果(CurPageID = wpSelectDir)然後 開始 //這裏是上面的代碼「函數GetAppPath(Param:String):String;」等等。 結束; 結束; 它給了我一個錯誤,這是不正確 – LukeNet 2013-02-25 00:42:34

相關問題