删除许可证对话框

use*_*609 33 wix wix3.6

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

谢谢你的任何建议

Sea*_*ean 39

我跳过它使用:

<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>
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案。但是,对于那些具有固定安装路径且只有一项功能的“简单”安装的人,我建议将“InstallDirDlg”替换为“VerifyReadyDlg”。这更类似于没有 EULA 的简单 UI。 (3认同)
  • 我建议更高的顺序为“ 2”。之所以在这里使用“ 2”是因为OP比发布的源代码高了一个。但是谁想阅读源代码?其他WixUI的其他对话框可以使用最大为4的顺序。因为顺序表示权重之类的东西-优先级较高。对于您要覆盖的任何行为,我都会使用Order =“ 99”。发布的源中唯一较高的顺序是ExitDialog上的“完成”按钮,其顺序为999。 (2认同)

Nat*_*arr 7

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

你想抓住你正在使用的对话框集(例如最小,等等),这可以称为WixUI代码<UI Id='MyAppWix_UIMinimal'>并修改它了一下,在你的主WXS引用它.您不想使用WelcomeEulaDlg欢迎对话框,而是使用WelcomeDlg.调整引用,并将WelcomeDlg上的Next按钮连接到堆栈中的下一个对话框.

以下是与代码的良好链接:http://www.howdoicode.net/2011/09/wix-how-to-hide-license-agreement.html


jol*_*yon 7

上面提到的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>
Run Code Online (Sandbox Code Playgroud)

我必须说一下复制wix代码的一般方法并将其破解("更改内置对话框的UI序列"(http://wixtoolset.org/documentation/manual/v3/wixui/wixui_customizations). html))真的有点注定......但是嘿


小智 5

我最近遇到了一个模仿Wix XML文件的Wix项目,但是你可以用C#编写设置代码.您可以在https://wixsharp.codeplex.com上找到此项目.我最初遇到了与用户可以安装软件之前需要接受的"条款和条件"的许可文件相同的问题.由于解决方案不具备要求接受"条款和条件"的性质,我必须找到一种方法来删除此对话框.

经过一些搜索(在Wix#中)后,我想出了以下内容:

WixSharp.CommonTasks.Tasks.RemoveDialogsBetween(project, 
                              WixSharp.Controls.NativeDialogs.WelcomeDlg,
                              NativeDialogs.InstallDirDlg);
Run Code Online (Sandbox Code Playgroud)

好吧,我知道这并不能彻底解决问题,因为这意味着您必须重新编写解决方案的代码,因此下一个调用端口是查看在此过程中发出的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>
Run Code Online (Sandbox Code Playgroud)

欢迎对话框中Next按钮绑定到安装目录对话框(或许可对话框后的对话框),将安装对话框Back按钮绑定到欢迎对话框 - 有效删除许可证对话框.