删除许可证对话框
Posted
技术标签:
【中文标题】删除许可证对话框【英文标题】:Removing license dialog 【发布时间】:2012-10-14 06:47:44 【问题描述】:我正在使用 Wix 3.6 制作一个内部使用的简单 MSI。我想知道是否有一种简单的方法可以删除许可协议对话框。
感谢您的任何建议
【问题讨论】:
How to build a minimal WiX installer UI without a license page?的可能重复 【参考方案1】:我跳过它使用:
<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>
【讨论】:
谢谢你,肖恩,你的建议。在我的情况下,我使用 SetupTypeDlg 作为下一个对话框 很好的答案。但是,对于那些具有固定安装路径且只有一项功能的“简单”安装的用户,我建议将InstallDirDlg
替换为VerifyReadyDlg
。这更类似于没有 EULA 的简单 UI。
我推荐比“2”更高的阶数。 “2”在这里有效,因为 OP 比已发布的源代码高一倍。但是谁想阅读源代码?其他 WixUI 的其他对话框可以使用最大为 4 的订单。因为订单意味着重量之类的东西 - 更高的优先级。对于您希望覆盖的任何行为,我都会使用 Order="99"。已发布源代码中唯一更高的顺序是 ExitDialog 上的 Finish 按钮,它的 Order 为 999。
我还要补充一点,没有@JoshuaGilman 的VerifyReadyDlg
建议,我得到了一个错误。【参考方案2】:
上面提到的 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))确实有点注定要失败......但是嘿
【讨论】:
之所以有效,是因为“SetupTypeDlg”很神奇;它恰好是通常在许可证之后出现的对话框。不错吧? 当您在 SetupType 对话框中单击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
【讨论】:
【参考方案4】:我最近遇到了一个项目 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>
它将欢迎对话框上的下一步按钮绑定到安装目录对话框(或许可对话框之后的对话框),并且安装对话框的返回按钮到欢迎对话框 - 有效地删除许可对话框。
【讨论】:
project.UI = WUI.WixUI_InstallDir; project.RemoveDialogsBetween(NativeDialogs.WelcomeDlg, NativeDialogs.InstallDirDlg); //这 2 行对我有用以上是关于删除许可证对话框的主要内容,如果未能解决你的问题,请参考以下文章
哪位仁兄能告诉我这是咋回事?启动虚拟机的时候就弹出这个对话框了。
Visual Studio安装项目中的“Checkboxes(A)”和“Checkboxes(B)”对话框之间有什么区别?