2012-10-24 74 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在許可證對話框中輸入。