2010-02-04 134 views
2

我在設置中添加了一些自定義頁面。在其中一個自定義頁面中,我會進行一些檢查。如果檢查失敗,我想切換到結束頁面。 我該怎麼做?切換到Inno安裝程序安裝的完成頁面

,因爲我不能ShouldSkipPage事件功能做到這一點:

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
    // this will NEVER happened - see documentation below 
    if (PageID = wpInstalling) or (PageID = wpPreparing) or (PageID = wpWelcome) then 
    begin 
    // skip install - simply for example 
    result := True; 
    exit; 
    end; 

    resutl := false; 
end; 

從Inno Setup的文檔:

嚮導調用這個事件函數 以確定是否或不是 特定頁面(由PageID指定)應該顯示。如果返回 爲真,頁面將被跳過;如果你 返回False,頁面可能會顯示。

注:本次活動功能不叫 wpWelcome,wpPreparing和 wpInstalling頁,也沒有爲 安裝程序已經確定要跳過 (例如, 在wpSelectComponents頁安裝不包含組件的 )。

+0

這個問題太含糊。我嘗試了,'ShouldSkipPage'爲我工作。向您的問題添加一些最小示例代碼,以演示您遇到的問題。 – mghie 2010-02-05 10:41:21

+0

@mghie我給我的問題添加一些代碼 – Sasha 2010-02-05 13:32:40

+0

加載'Example1.iss'文件。添加一個'ShouldSkipPage'函數,它說:Result:= PageID <> wpFinished;'運行安裝程序,你將只能看到Welcome和Finished頁面。這是一件好事,兩者都應該始終在那裏,否則這對用戶來說會是令人驚訝的。他至少需要能夠在第一頁上取消,並且他需要知道設置已完成。 – mghie 2010-02-05 14:25:02

回答

2

對不起,我不明白你爲什麼不能使用ShouldSkipPage。 做通常使用的方法是在ShouldSkipPage:

function ShouldSkipPage(curPageId : Integer) : Boolean; 
begin 
    {For a certain condition, skip to wpFinished} 
    if (SomeCondition and (curPageId <> wpFinished)) then 
    Result := True 
    {Probably more checks} 
    else 
    Result := False 
end; 
+0

請參閱我的評論有問題。這是無法完成的。 – Sasha 2010-02-04 17:35:52

+0

+1,很好的答案。 @Sasha - 嘗試一下,它確實有效。但是如果您需要紓困,您可能需要添加檢查來跳過您的正常安裝步驟。 – mghie 2010-02-04 21:09:39

+0

不起作用。看到我的問題! – Sasha 2010-02-05 08:19:10

2

如果我理解正確的話,您要執行檢查,如果失敗的話,你想跳過wpWelcome,wpPreparing和wpInstalling(也許更多自定義頁面)。

我假設您也想跳過顯示這些頁面時執行的操作,具體而言,您不想執行安裝步驟。

如果是這樣的話,您應該取消的安裝,如果沒有執行實際的安裝步驟,請不要繼續。你可以做到這一點在InitializeSetup,例如:

Procedure InitializeSetup(); 
VAR 
    Check: Integer; 
BEGIN 
    // perform you check here, set the variable according to it's result 

    IF (Check <> 0) THEN 
    // abort installation 
    Return False; 
    ELSE 
    Return True; 
END; 

編輯
針對您的評論:最簡單的解決辦法是,以顯示與您的檢查結果的消息框,而不是一個完整的嚮導頁面。如果你的目的是遠遠不夠的,我建議採取下列措施:

  1. InitializeSetup執行的檢查,並將結果保存在一個全局變量。

  2. 創建一個新的嚮導頁(可以稱之爲CheckResult),以顯示你的檢查結果,它應直接wpWelcome後顯示。

  3. 在該頁面的OnNextButtonClick只需要調用CancelButtonClick,這樣在顯示

  4. 此頁面現在是修改ShouldSkipPage ;-)時安裝總是中止如果全局檢查參數表明一切正常,跳過你CheckResult頁面,以便安裝時不會自動中止

應該的工作,但如果一些怎麼可以,遵循KISS原則,並採取消息框的方式。

+0

在退出安裝之前,我想向用戶顯示檢查結果。 – Sasha 2010-02-10 22:05:53

相關問題