难以捉摸的wix安装程序和AdvancedWelcomeEulaDlg对话框问题

时间:2015-04-07 13:41:00

标签: wix wix3.7

我正在构建一个WixUI_FeatureTree类型的WiX安装程序,但是我有一个轻微的问题,即使在我同意许可后,AdvancedWelcomeEulaDlg会弹出两次。

流程很简单,在AdvancedWelcomeEulaDlg之前显示了一个额外的对话框(这是一个额外的同意协议页面)。

流程是:WelcomeDlg - > CustomEulaDlg - > AdvancedWelcomeEulaDlg,我可以选择CustomizeDlg(Advanced)或VerifyReadyDlg(Install)。

  <Publish Dialog="CustomEulaDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
  <Publish Dialog="CustomEulaDlg" Control="Next" Event="NewDialog" Value="AdvancedWelcomeEulaDlg">1</Publish>      

  <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Advanced" Event="NewDialog" Value="CustomizeDlg">1</Publish>
  <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Install" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>

  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="AdvancedWelcomeEulaDlg" Order="1">1</Publish>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="ServiceAccountDlg" Order="2">NOT Installed OR WixUI_InstallMode = "Change"</Publish>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="3">Installed</Publish>

一旦我进入AdvancedWelcomeEulaDlg页面并点击同意,我希望安装程序继续进行安装,而不是再次重新出现。我没有验证什么?也许我在VerifyReadyDlg中错过了一步。

任何帮助将不胜感激。 WiX有点令人费解。

修改

Action 14:00:23: EulaDlg. Dialog created
MSI (c) (A4:5C) [14:00:23:760]: PROPERTY CHANGE: Adding EULACHECK property. Its value is '1'.
Action 14:00:24: AdvancedWelcomeEulaDlg. Dialog created
MSI (c) (A4:5C) [14:00:25:019]: PROPERTY CHANGE: Adding LicenseAccepted property. Its value is '1'.
Action ended 14:00:25: WelcomeDlg. Return value 1.
MSI (c) (A4:B8) [14:00:25:645]: Doing action: AdvancedWelcomeEulaDlg
Action 14:00:25: AdvancedWelcomeEulaDlg. 
Action start 14:00:25: AdvancedWelcomeEulaDlg.
Action 14:00:25: AdvancedWelcomeEulaDlg. Dialog created
Action ended 14:00:26: AdvancedWelcomeEulaDlg. Return value 1.
MSI (c) (A4:B8) [14:00:26:336]: Skipping action: MaintenanceWelcomeDlg (condition is false)
MSI (c) (A4:B8) [14:00:26:336]: Skipping action: ResumeDlg (condition is false)
MSI (c) (A4:B8) [14:00:26:336]: Doing action: ProgressDlg
Action 14:00:26: ProgressDlg. 
Action start 14:00:26: ProgressDlg.
Action 14:00:26: ProgressDlg. Dialog created
Action ended 14:00:26: ProgressDlg. Return value 1.
MSI (c) (A4:B8) [14:00:26:362]: Doing action: ExecuteAction
Action 14:00:26: ExecuteAction. 
Action start 14:00:26: ExecuteAction.

1 个答案:

答案 0 :(得分:0)

这是旧的,但我会添加它以防其他人遇到它。

我一直在尝试在 WelcomeDlg 之前显示 AdvancedWelcomeEulaDlg,但是将 NewDialog 添加到发布调用会使其出现两次。结束欢迎对话框后,高级 EULA 只会出现一次。

<!--This is after copying the WixUI_UIAdvanced.wxs and modifying-->

<!--Publish action added to close WelcomeDlg on Next rather than NewDialog the EULA-->
<Publish Dialog="WelcomeDlg" Control="Next" Event="EndDialog" Value="Ignore">NOT Installed</Publish>

<!-- ... -->

<InstallUISequence>
    <!--Adding the 1 condition, makes it show even when not in maintenance-->
    <Show Dialog="WelcomeDlg" After="MigrateFeatureStates" >1</Show>
</InstallUISequence>

我仍然对 WiX/MSI 有感觉,但从 the source 来看,似乎因为他们在 ProgressDlg 之前打电话给节目,欢迎不应该打开它。< /p>

<InstallUISequence>
    <Show Dialog="AdvancedWelcomeEulaDlg" Before="ProgressDlg">NOT Installed</Show>
</InstallUISequence>