删除许可证对话框

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 时,您的方法会发生什么? 我快速插入这一行 :-) 1 (已更新原始的 sn-p 以在按下“返回”时跳过许可证...)【参考方案3】:

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

您想要获取您正在使用的对话框集的 WixUI 代码(例如 Minimal 等),将其命名为 &lt;UI Id='MyAppWix_UIMinimal'&gt; 并稍作修改并在您的主 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 源文件在这个过程中。

因此,我看到有一个 &lt;UI&gt; 元素具有以下内容:

<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 行对我有用

以上是关于删除许可证对话框的主要内容,如果未能解决你的问题,请参考以下文章

RENIX_license操作——网络测试仪实操

在WIX中设置对话框和习惯的顺序

修改内置 WixUI 对话框集时遇到问题

哪位仁兄能告诉我这是咋回事?启动虚拟机的时候就弹出这个对话框了。

Visual Studio安装项目中的“Checkboxes(A)”和“Checkboxes(B)”对话框之间有什么区别?

React Native - 启动应用程序后的权限对话框 - “远程”不起作用