切换到Inno安装程序安装的完成页面
我在设置中添加了一些自定义页面。在其中一个自定义页面中,我会进行一些检查。如果检查失败,我想切换到结束页面。 我该怎么做?切换到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页安装不包含组件的 )。
对不起,我不明白你为什么不能使用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;
如果我理解正确的话,您要执行检查,如果失败的话,你想跳过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;
编辑
针对您的评论:最简单的解决办法是,以显示与您的检查结果的消息框,而不是一个完整的向导页面。如果你的目的是远远不够的,我建议采取下列措施:
在
InitializeSetup
执行的检查,并将结果保存在一个全局变量。创建一个新的向导页(可以称之为CheckResult),以显示你的检查结果,它应直接
wpWelcome
后显示。在该页面的
OnNextButtonClick
只需要调用CancelButtonClick
,这样在显示此页面现在是修改
ShouldSkipPage
;-)时安装总是中止如果全局检查参数表明一切正常,跳过你CheckResult页面,以便安装时不会自动中止
这应该的工作,但如果一些怎么可以,遵循KISS原则,并采取消息框的方式。
在退出安装之前,我想向用户显示检查结果。 – Sasha 2010-02-10 22:05:53
这个问题太含糊。我尝试了,'ShouldSkipPage'为我工作。向您的问题添加一些最小示例代码,以演示您遇到的问题。 – mghie 2010-02-05 10:41:21
@mghie我给我的问题添加一些代码 – Sasha 2010-02-05 13:32:40
加载'Example1.iss'文件。添加一个'ShouldSkipPage'函数,它说:Result:= PageID wpFinished;'运行安装程序,你将只能看到Welcome和Finished页面。这是一件好事,两者都应该始终在那里,否则这对用户来说会是令人惊讶的。他至少需要能够在第一页上取消,并且他需要知道设置已完成。 – mghie 2010-02-05 14:25:02