如何构建没有许可证页面的最小WiX安装程序UI?


Answers:


91

我将只使用一个已经创建的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>

9
这个答案会更好,如果它说明了把UI标签
阿伦

3
@Alan我将<UI>元素放入<Product>元素,效果很好。
theDmi

@Justin UI和UIRef东西显然不能成为Product下的第一个元素。我不知道为什么,但是对于我来说,它也失败了,直到我有了一些超越。不知道这是否是相同的错误。
乔什·萨特菲尔德

1
无法编译:错误LGHT0091:找到重复的符号'ControlEvent:WelcomeDlg / Next / NewDialog / VerifyReadyDlg / Installed AND PATCH'。这通常意味着Id是重复的。检查并确保给定类型(文件,组件,功能)的所有标识符都是唯一的。……等等
Andreas Niedermair 2015年

1
@Justin:有关错误代码2819的信息,请参见stackoverflow.com/a/24439962/569302
Jared,

54

关键是要创建自定义UI并连接不同的页面。参见WixWiki上的页面

您想要获取WixUI最小代码,然后对其进行一些修改。您要使用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之后设置下一步对话框的方法。在哪里可以找到对话框堆栈?我怎么能知道,在WelcomeDlg之后的下一个对话框应该是PrepareDlg?
卡洛斯(Carlos)2010年

我上面的代码有问题,并且启动应用程序,该应用程序也使用ExitDialog <Publish Dialog =“ ExitDialog” Control =“ Finish” Event =“ DoAction” Value =“ LaunchApplication”>没有WIXUI_EXITDIALOGOPTIONALCHECKBOX且未安装</ Publish>,该应用程序没有关闭不正确
se_pavel

1
我使用了上面的代码(从2009年开始),并获得了“ Windows Installer XML变量!(wix.WixUICostingPopupOptOut)未知。要解决此问题,我获取了最新的源代码,并复制了\ src \ ext \ UIExtension \ wixlib \ WixUI_Minimal.wxs片段然后删除<DialogRef Id =“ WelcomeEulaDlg” />,并根据Adam的回答添加了新的DialogRef和Publish
Martin Capodici 2014年

3
wixwiki链接已损坏。
Nicolas Raoul 2014年

1
在使用Visual Studio的Wix 3.11.0中,您会收到错误消息“重复的符号WixUI:WixUI_Minimal ...”。要修复,只需在上述代码块中找到WixUI_Minimal并将其替换为WixUI_CustomMinimal,然后在主产品中执行<UIRef Id =“ WixUI_CustomMinimal“ />
user922020 '18

11

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

例:

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

3
具体来说:<Property Id="LicenseAccepted" Value="1"/>
Nathan


3

@Ran Davidovitz的回答非常好

但要小心:

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

它必须具有Order =“ 2”,否则将无法工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.