删除许可证对话框

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

我正在使用 Wix 3.6 制作一个内部使用的简单 MSI。我想知道是否有一种简单的方法可以删除许可协议对话框。

感谢您的建议

wix wix3.6
5个回答
57
投票

我使用以下方法跳过了它:

<UI>
  <UIRef Id="WixUI_InstallDir" />
  <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>

8
投票

上面提到的 XML 的简化 (http://www.howdoicode.net/2011/09/wix-how-to-hide-license-agreement.html) 对我有用;这有效地跳过了许可证,而不是挂钩在自定义页面中

<UI Id='Mondo'>
  <UIRef Id="WixUI_Mondo" />
  <UIRef Id="WixUI_ErrorProgressText" />
  <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg"  Order="3">1</Publish>
   <!-- skip the page on the way back too -->
   <Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg"  Order="3">1</Publish>
</UI>

我得说复制wix代码并对其进行一些修改的一般方法(“更改内置对话框集的UI顺序”(http://wixtoolset.org/documentation/manual/v3/wixui/ wixui_customizations.html))真的有点注定了......但是嘿


6
投票

我最近遇到了一个项目 Wix#,它模仿 Wix XML 文件,但允许您使用 C# 编写设置代码。您可以在 https://wixsharp.codeplex.com 上找到该项目。我最初对带有“条款和条件”的许可证文件遇到了同样的问题,用户需要先接受该“条款和条件”,然后才能安装软件。由于解决方案的性质不要求接受“条款和条件”,我必须找到一种方法来删除此对话框。

经过一番搜索(在 Wix# 中),我得出以下结论:

WixSharp.CommonTasks.Tasks.RemoveDialogsBetween(project, 
                              WixSharp.Controls.NativeDialogs.WelcomeDlg,
                              NativeDialogs.InstallDirDlg);

好吧,我知道这并不能彻底解决问题,因为这意味着您必须重新编码您的解决方案,因此下一个调用端口是查看在此期间发出的 WiX 源文件过程。

因此,我看到有一个

<UI>
元素,其中包含以下内容:

<UI>
  <Publish Dialog="WelcomeDlg" 
           Control="Next" 
           Event="NewDialog" 
           Value="InstallDirDlg" 
           Order="5">1</Publish>

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

它将欢迎对话框上的下一步按钮绑定到安装目录对话框(或许可证对话框之后的对话框),并将安装对话框后退按钮绑定到欢迎对话框 -有效删除许可证对话框。


5
投票

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

您想要获取您正在使用的对话框集的WixUI代码(例如Minimal等),将其命名为

<UI Id='MyAppWix_UIMinimal'>
并对其进行一些修改并在您的主wxs中引用它。您希望使用WelcomeDlg,而不是WelcomeEulaDlg 欢迎对话框。调整引用,并将 WelcomeDlg 上的 Next 按钮连接到堆栈中的下一个对话框。

这是一个很好的代码链接:http://www.howdoicode.net/2011/09/wix-how-to-hide-license-agreement.html


0
投票

user176145 的答案在 2023 年仍然适用于 wix 3.11!由于声誉级别,我无法发表评论,但想让其他人知道。

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