Inno Setup 中许可证页面之前的 InfoBeforeFile 页面

问题描述 投票:0回答:2

默认情况下,显示

InfoBeforeFile
文件的页面显示在许可证页面之后。通过阅读文档,我应该能够在显示这些页面时重新排列,但我看不到 Inno 安装脚本或 default.isl 中的排序结构。这些都在
[Setup]
部分下。

我只是想在显示许可证页面之前移动要显示的

InfoBeforeFile
页面。

任何帮助或指导将不胜感激。

inno-setup
2个回答
4
投票

您无法对标准页面重新排序。

您可以通过巧妙地实现

NextButtonClick
BackButtonClick
CurPageChanged
ShouldSkipPage
事件函数来编写不同的顺序。但那样就太复杂了。您必须重新实现 Inno Setup 的许多内置功能。


更简单的方法是按照您想要的顺序插入自定义许可证页面或信息页面。

此示例添加自定义 license 页面:
如何在 Inno Setup 中创建两个 LicenseFile 页面

尽管如此,添加自定义 info 页面是 更容易,因为它没有单选按钮。您所需要做的就是将文件加载到使用

CreateOutputMsgMemoPage
函数创建的页面。


3
投票

在查看了两个设置帮助和文档后,我找到了解决方案。

总结:基本上,它的作用是克隆信息页面的页面并使用该页面中的语言变量(

WizardInfoBefore
),当使用
CreateOutputMsgMemoPage
创建页面时,它被设置为“欢迎页面”
wpWelcome
的第一个参数。

  1. 您必须定义一个欢迎页面文本

    #define WelcomeFile 'welcome.rtf'
    
  2. [Setup]
    部分定义您的普通许可证文件:

    LicenseFile=gnu.rtf
    
  3. [Files]
    部分包含以下行:

    Source: "{#WelcomeFile}"; Flags: dontcopy
    
  4. [Code]
    部分包含以下行:

    [Code]
    var
      WelcomePage: TOutputMsgMemoWizardPage;
    
    procedure InitializeWizard();
    var
      WelcomeFileName: string;
      WelcomeFilePath: string;
    begin
      { Create welcome page, with the same labels as the information page }
      WelcomePage :=
        CreateOutputMsgMemoPage(
          wpWelcome, SetupMessage(msgWizardInfoBefore), SetupMessage(msgInfoBeforeLabel),
          SetupMessage(msgInfoBeforeClickLabel), '');
    
      { Load welcome page }
      WelcomeFileName := '{#WelcomeFile}';
      ExtractTemporaryFile(WelcomeFileName);
      WelcomeFilePath := ExpandConstant('{tmp}\' + WelcomeFileName);
      WelcomePage.RichEditViewer.Lines.LoadFromFile(WelcomeFilePath);
      DeleteFile(WelcomeFilePath);
    end;
    

输出:

© www.soinside.com 2019 - 2024. All rights reserved.