2013-07-29 105 views
4

我正在使用Inno Script Studio構建一個安裝程序,到目前爲止Inno Setup是一個非常成功的安裝包。Inno Setup - 顯示警告頁面

但是,我想添加一個警告頁面,當用戶取消選中一個重要的任務時顯示。我認爲這只是一個簡單的檢查。一些谷歌搜索後,我意識到,這將需要一些帕斯卡爾腳本 - 我遺憾的是沒有的(以下證據)知識的東西...

begin 
    if not IsTaskSelected('ImportantTask') then 
    WarningPage := CreateOutputMsgPage(wpSelectTasks, 'Caution', 
    'Please read the following important information before continuing.', 
    'You have not selected the ImportantTask option. Click "Back" to 
    reselect ImportantTask, or click "Next" to continue at your own risk.'); 
    end; 

毫不奇怪,這沒有奏效。


這裏是要求:

  • ImportantTask是被默認選中。
  • 如果ImportantTask未被選擇然後顯示WarningPage風險承擔複選框。
  • 如果風險確認複選框未勾選,請禁用下一步按鈕。

我不想結束一個大的代碼部分,但可能沒有其他選項。
在此先感謝您的幫助。

回答

6

使用msgbox代替嚮導頁面。 Msgbox's特別用於給用戶任何指示(info,warning..etc)..
此腳本按照您的要求工作。

[Setup] 
AppName=MySetup 
AppVersion=1.5 
DefaultDirName={pf}\MySetup 
[Tasks] 
Name: "ImportantTask"; Description: "This task should be selected"; GroupDescription: "Important tasks"; 
[Code] 
function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    Result := True; 
    if (CurPageID = wpSelectTasks) and not IsTaskSelected('ImportantTask') then 
    Result := Msgbox('You have not selected the ImportantTask option.' + #13#10 + 
     'Are you sure you want to continue ?', mbInformation, MB_YESNO) = IDYES; 
end; 

歸功於TLama ...

+0

謝謝! - 那很棒。好主意也可以使用消息框,因爲這是吸引用戶注意力的絕佳方式。 如果'CurPageID'不是'wpSelectTasks',我修改了你的代碼以得到'else Result:= True;'因爲我在我的安裝文件中有一些其他頁面。 – Fidelius

+0

不用客氣......!振作起來...... – Gangadhar

+1

這裏是[上述腳本的修復](http://pastebin.com/mJzvxd5S)。有幾件事要注意。不需要如此多的'if'條件來得到結果,總是評估爲真。只需在方法開始時將其設置爲True即可。當用戶用'IDNO'回答對話時,我想你想留在頁面上,而IDNO不在這裏。 「IsTaskSelected」函數的用法是正確的。你不應該依賴固定的索引。最後,換行符是'#13#10',而不是'#13' ;-) – TLama