2011-08-03 91 views
2

我的安裝非常簡單,它基本上是:Inno Setup的簡單進度頁面

  1. 歡迎頁面
  2. 進度頁
  3. 最後一頁

的歡迎和最後幾頁是標準的(只有一個按鈕)。 在進度頁面,我正在安靜地安裝一堆其他程序。

實際腳本正在`[Run]部分中安裝每個程序。
問題是酒吧達到100%,然後停留在那裏。
我只能改變消息文本。

我想達成什麼是使用Pascal腳本顯示進度(因爲它可以讓我有更多的靈活性),是這樣的:

procedure InitializeWizard; 
begin 
    ProgressPage.SetProgress(1, 100); 
    exec(.......) 
    ProgressPage.SetProgress(15, 100); 
    exec(.......) 
    ProgressPage.SetProgress(40, 100); 
    ... 
    ... 
end; 

這樣我可以顯示更準確的進度條。這是我(模擬安裝來自一個例子服用。):

[Code] 

var 
    ProgressPage: TOutputProgressWizardPage; 

procedure InitializeWizard; 
begin 
    ProgressPage := CreateOutputProgressPage('My App',''); 
end; 

function NextButtonClick(CurPageID: Integer): Boolean; 
var 
    I: Integer; 
begin 
    if CurPageID = wpWelcome then begin 
    ProgressPage.SetText('Starting installation...', ''); 
    ProgressPage.SetProgress(0, 0); 
    ProgressPage.Show; 
    try 
     for I := 0 to 10 do begin 
     ProgressPage.SetProgress(I, 10); 
     Sleep(100); 
     end; 
    finally 
     ProgressPage.Hide; 
    end; 
    end else 
    Result := True; 
end; 

的問題是,當我生成安裝程序不顯示歡迎頁(安裝程序正在運行,但沒有顯示) 。

我在做什麼錯了?

預先感謝您!

+0

呃,不要在NextButtonClick裏面做。 CurStepChanged(ssInstall)最早。 – Deanna

+0

爲什麼不在NextButtonClick中?它是我第一次在Inno Setup中使用Pascal腳本,所以我可能不知道它應該如何。 – lepe

+0

因爲它可以被稱爲1次或更多時間,所以在大多數安裝中,在用戶確認「是,安裝這個」之前,它也是。 – Deanna

回答

2

找到了!

我失蹤:

  • Result := True;ProgressPage.Hide;
  • if CurPageID = wpReady(而不是wpWelcome

這個問題解決了!

4

您可以使用WizardForm.ProgressGauge來控制代碼中真實的進度條位置。

+0

你能指點我一些例子嗎?我找不到它是如何使用的(只有文檔)。 – lepe

+0

沒有例子,但對象引用int幫助顯示你需要訪問的屬性。它們可以從[Run]條目的Before/AfterInstall條目中調用。 – Deanna

+0

我想使用WizardForm.ProgressGauge會更簡單和優雅。然而,由於我沒有例子,我的安裝程序工作得很好(因爲它是),我可以爲您的建議投票。我無法將其設置爲正確的答案,因爲我無法測試它。我希望你明白。 – lepe