我正在使用Wix 3.6制作一个内部使用的简单 MSI。我想知道是否有一种简单的方法可以删除许可协议对话框。
感谢您的任何建议
我跳过它使用:
<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>
上面提到的 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 )) 真的有点注定要失败......但是,嘿
我最近遇到了一个模仿 Wix XML 文件的项目 Wix#,但可以让您在 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>
它将欢迎对话框上的Next按钮绑定到安装目录对话框(或许可证对话框之后的对话框),并将安装对话框的Back按钮绑定到欢迎对话框- 有效地删除了许可证对话框。
关键是制作自定义 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