2013-07-29 89 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