2010-02-04 84 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

相关问题