2012-10-24 33 views
24

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

感谢您的任何建议

+0

[如何在没有许可页的情况下构建最小的WiX安装程序UI?](https://stackoverflow.com/questions/597025/how-to-build-a-minimal-wix-installer-ui-没有许可页面) –

回答

7

关键是要制作一个自定义用户界面,并挂接不同的页面。请参阅WixWiki上的页面

您想要获取您正在使用的对话框集(例如Minimal等)的WixUI代码,将其命名为<UI Id='MyAppWix_UIMinimal'>并修改它并在您的主要wxs中引用它。您需要使用WelcomeDlg,而不是WelcomeEulaDlg欢迎对话框。调整引用,并将WelcomeDlg上的Next按钮连接到堆栈中的下一个对话框。

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

7

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

<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> 

我得说的一般方法复制威克斯代码并攻击它大约一个位(“更改内置的对话框中设置的UI序列” (http://wixtoolset.org/documentation/manual/v3/wixui/wixui_customizations.html))是有点注定真的....但嘿

+0

这是可行的,因为“SetupTypeDlg”是魔术;它恰好是许可证后通常会出现的对话框。很好吧? – jolyon

+0

当您在SetupType对话框上单击'back(返回)时,您的方法会发生什么? – harper

+0

我快速插入这条线:-) <发布对话框=“SetupTypeDlg”控制=“返回”事件=“NewDialog” VALUE =“WelcomeDlg”订单=“3”> 1 – jolyon

22

我跳过它使用:

<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> 
+0

为我工作,谢谢。 –

+0

谢谢你,肖恩,你的建议。在我的情况下,我使用SetupTypeDlg作为下一个对话框 –

+0

很好的答案。但是,对于那些使用固定安装路径和只有一个功能的“简单”安装,我建议用'VerifyReadyDlg'替换'InstallDirDlg'。这更类似于没有EULA的简单UI。 –

4

我最近遇到一个模仿维克斯XML文件的项目维克斯#来,但让你用C#编写安装程序。你可以在https://wixsharp.codeplex.com找到这个项目。我最初在许可证文件中遇到了与用户可以安装软件之前需要接受的“条款和条件”相同的问题。由于该解决方案不具有这样的性质,它需要“条款和条件”才能被接受,所以我必须找到一种方法来删除此对话框。

后位(维克斯#)搜索,我想出了以下内容:

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

好吧,我明白,这并不完全解决问题,因为这将意味着你” d必须重新编码您的解决方案,因此下一个端口是查看在此过程中发出的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> 

结合的下一页按钮欢迎对话框安装目录对话框(或对话框后的对话框)和返回按钮的安装对话框欢迎对话框 - 有效rem在许可证对话框中输入。