Configuration 如何在Wix中为两个独立的非必需功能添加两个配置对话框

Configuration 如何在Wix中为两个独立的非必需功能添加两个配置对话框,configuration,dialog,wix,installation,Configuration,Dialog,Wix,Installation,我正在更新一个具有一个功能的安装项目,该项目具有该功能的相应配置对话框。 现在,我需要在安装项目中再添加一个具有自己配置对话框的功能,当用户选择feature1 display feature1的配置对话框时,当用户选择功能2时,显示功能2的配置对话框;当用户选择两个功能时,依次显示功能1和功能2的配置对话框。显然,如果用户选择“无”,安装程序将无法继续,因为它没有要安装的功能。最后一条规则还没有反映在项目中。 这是该项目的最后一个UI代码段 示例功能是中的翻译器和缓存,示例对话框分别是Tran

我正在更新一个具有一个功能的安装项目,该项目具有该功能的相应配置对话框。
现在,我需要在安装项目中再添加一个具有自己配置对话框的功能,当用户选择feature1 display feature1的配置对话框时,当用户选择功能2时,显示功能2的配置对话框;当用户选择两个功能时,依次显示功能1和功能2的配置对话框。显然,如果用户选择“无”,安装程序将无法继续,因为它没有要安装的功能。最后一条规则还没有反映在项目中。 这是该项目的最后一个UI代码段

示例功能是中的翻译器缓存,示例对话框分别是TransParams缓存参数

<UI Id="MyWixUI_Mondo">
  <UIRef Id="WixUI_Mondo"/>
  <UIRef Id="WixUI_ErrorProgressText"/>

  <DialogRef Id="TransParams"/>
  <DialogRef Id="CacheParams"/>

  <!-- skip license dialog-->
  <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg">1</Publish>
  <Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>

  <!-- Translator parameters -->
  <Publish Dialog="SetupTypeDlg" Control="CompleteButton" Event="NewDialog" Value="TransParams">1</Publish>

  <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="TransParams"><![CDATA[&Translator = "3"]]></Publish>
  <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="CacheParams"><![CDATA[&Translator <> "3" AND &Cache = "3"]]></Publish>

  <Publish Dialog="TransParams" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="1">WixUI_InstallMode = "InstallComplete"</Publish>
  <Publish Dialog="TransParams" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">WixUI_InstallMode = "InstallCustom"</Publish>
  <Publish Dialog="TransParams" Control="Next" Event="NewDialog" Value="CacheParams" Order="1">WixUI_InstallMode = "InstallComplete"</Publish>
  <Publish Dialog="TransParams" Control="Next" Event="NewDialog" Value="CacheParams" Order="1"><![CDATA[WixUI_InstallMode = "InstallCustom" AND &Cache = "3"]]></Publish>
  <Publish Dialog="TransParams" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="2"><![CDATA[WixUI_InstallMode = "InstallCustom"]]></Publish>

  <!-- Cache parameters -->
  <Publish Dialog="CacheParams" Control="Back" Event="NewDialog" Value="SetupTypeDlg">WixUI_InstallMode = "InstallComplete"</Publish>
  <Publish Dialog="CacheParams" Control="Back" Event="NewDialog" Value="TransParams"><![CDATA[WixUI_InstallMode = "InstallCustom" AND &Translator = 3]]></Publish>
  <Publish Dialog="CacheParams" Control="Back" Event="NewDialog" Value="CustomizeDlg"><![CDATA[WixUI_InstallMode = "InstallCustom" AND &Translator <> 3]]></Publish>
  <Publish Dialog="CacheParams" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>

</UI>

1.
1.
1.
“3”和&Cache=“3”]>
WixUI\u InstallMode=“InstallComplete”
WixUI\u InstallMode=“InstallCustom”
WixUI\u InstallMode=“InstallComplete”
WixUI\u InstallMode=“InstallComplete”
3]]>
1.
我尝试了其他几种组合,但没有一种对我的帮助更大。

提前谢谢

自定义对话框中“下一步”按钮的id需要与目标对话框的实际id匹配。 将“SymTransParams”更改为“TransParams”,将“VolCacheParams”更改为“CacheParams”。 另外,“&Translator=3”的语法应该是“!”

对于没有选择任何功能的情况,您可以决定禁用“下一步”按钮。 在“CustomizeDlg”部分/文件的定义中,将“下一步”按钮的定义更改为默认禁用,并添加一个条件,使其仅在选择其中一个功能时启用

    <UI>
  <Dialog Id="CustomizeDlg" ....
    <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" Disabled="yes">
          <Condition Action="enable">!<CDATA[[&Translator = 3 OR &Cache = 3 ]]</Condition>


谢谢@jdh,我将尝试您的建议,但是,为了简化阅读,样本中的名称已更改,因此实际的名称是正确的,我编辑了样本,使其符合您指出的内容。我最需要的是对话框的正确顺序,我仍然无法使其正常工作,如果我选择其中一个,它将正常工作,但如果我同时选择两个,则只会显示一个配置对话框。我用我已经修复的完整配置解决了这个问题,但当选择的设置类型是自定义的时候就没有了。无论如何谢谢你的帮助,我很感激。