【问题标题】:How to build a minimal WiX installer UI without a license page?如何在没有许可证页面的情况下构建最小的 WiX 安装程序 UI?
【发布时间】:2010-10-10 11:13:55
【问题描述】:

我想使用 WixUI_Minimal 安装程序,但我不想要许可证页面。我该怎么做?

【问题讨论】:

    标签: wix installation wix3


    【解决方案1】:

    关键是制作自定义 UI 并连接不同的页面。请参阅WixWiki上的页面

    您想要获取WixUI minimal code,并对其进行一些修改。您想使用 WelcomeDlg,而不是 WelcomeEulaDlg 欢迎对话框。调整引用,并将 WelcomeDlg 上的 Next 按钮连接到堆栈中的下一个对话框,即 PrepareDlg。

    完整代码:

      <UI Id="WixUI_Minimal">
        <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
        <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
        <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
    
        <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
        <Property Id="WixUI_Mode" Value="Minimal" />
    
        <DialogRef Id="ErrorDlg" />
        <DialogRef Id="FatalError" />
        <DialogRef Id="FilesInUse" />
        <DialogRef Id="MsiRMFilesInUse" />
        <DialogRef Id="PrepareDlg" />
        <DialogRef Id="ProgressDlg" />
        <DialogRef Id="ResumeDlg" />
        <DialogRef Id="UserExit" />
    
        <!-- This is the welcome dialog you specified-->
        <DialogRef Id="WelcomeDlg" /> 
    
        <!-- Hook the new welcome dialog to the next one in the stack-->
        <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="PrepareDlg">1</Publish> 
    
        <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
    
        <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
    
        <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
    
        <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
        <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
        <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
    
        <Property Id="ARPNOMODIFY" Value="1" />
      </UI>
    
      <UIRef Id="WixUI_Common" />
    

    【讨论】:

    • 谢谢,我知道我必须做什么,但是我不知道在 WelcomeDlg 之后设置 Next 对话框的内容。我在哪里可以找到对话框堆栈是什么?我怎么知道 WelcomeDlg 之后的下一个对话框应该是 PrepareDlg?
    • 我对上面的代码有问题并启动也使用 ExitDialog 的应用程序 NOT WIXUI_EXITDIALOGOPTIONALCHECKBOX 和 NOT已安装应用程序未正确关闭
    • 我使用上面的代码(从 2009 年开始)并得到“Windows Installer XML 变量!(wix.WixUICostingPopupOptOut)未知。为了解决这个问题,我获得了最新的源代码并复制了片段 \src\ext \UIExtension\wixlib\WixUI_Minimal.wxs。然后删除 并根据亚当的回答添加新的 DialogRef 和发布。
    • wixwiki 链接已损坏。
    • 在使用 Visual Studio 的 Wix 3.11.0 中,您会收到错误“重复符号 WixUI:WixUI_Minimal ...”要修复只需在上面的代码块中查找并替换 WixUI_Minimal 为 WixUI_CustomMinimal,然后在您的主产品做一个
    【解决方案2】:

    我会简单地使用一个已创建的 WiX UI 并覆盖序列(使其更高,以便覆盖之前的设置):

        <Product> 
            ...
            <UI>
                <UIRef Id="WixUI_InstallDir" />
    
                <!-- Skip license dialog -->
                <Publish Dialog="WelcomeDlg"
                         Control="Next"
                         Event="NewDialog"
                         Value="InstallDirDlg"
                         Order="2">1</Publish>
                <Publish Dialog="InstallDirDlg"
                         Control="Back"
                         Event="NewDialog"
                         Value="WelcomeDlg"
                         Order="2">1</Publish>
            </UI>
    
            <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
            ...
        </Product>
    

    【讨论】:

    • 这个答案会更好,如果它解释了放置 UI 标签的位置
    • @Alan 我将 元素放入 元素中,效果很好。
    • @Justin UI 和 UIRef 的东西显然不能是 Product 下的第一个元素。我不知道为什么,但它对我来说也失败了,直到我有了上面的东西。不知道是不是同样的错误。
    • 无法编译:错误 LGHT0091:找到重复的符号“ControlEvent:WelcomeDlg/Next/NewDialog/VerifyReadyDlg/Installed AND PATCH”。这通常意味着一个 Id 是重复的。检查以确保给定类型(文件、组件、功能)的所有标识符都是唯一的。 ...等等
    • @Justin:有关错误代码 2819,请参阅 stackoverflow.com/a/24439962/569302
    【解决方案3】:

    解决此问题的低技术方法是将属性 LicenseAccepted 设置为 1 并将一些有用的自述文件类型信息放入许可证框中。这意味着用户不必单击该框,您也不必担心创建额外的对话框:)

    例子:

    <Property Id="LicenseAccepted" Value="1"/>
    

    【讨论】:

    • 具体:&lt;Property Id="LicenseAccepted" Value="1"/&gt;
    【解决方案4】:

    @Ran Davidovitz 的回答很好

    但要小心:

    <Publish Dialog="InstallDirDlg"
             Control="Back"
             Event="NewDialog"
             Value="WelcomeDlg"
             Order="2">1</Publish> 
    

    它必须有 Order="2",否则它不能工作。

    【讨论】:

      【解决方案5】:

      请参阅answer to a related questionWiX script with only Welcome and Completed screens,了解最简单的最小 UI:

      1. WelcomeDlg
      2. 安装进度
      3. 退出对话框

      【讨论】:

      • 这是我一直在寻找的答案。这里的所有其他解决方案都有缺点,需要更多点击才能通过对话框。
      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 2016-06-10
      相关资源
      最近更新 更多