Отображение WixUI_dialog условно
В настоящее время борется с установщиком, который должен вести себя по-разному в зависимости от значения реестра.
Если значение реестра не задано, установщик должен отобразить классический диалог для выбора пути установки, а затем сохранить этот путь в реестре, чтобы в следующий раз при обработке файла .msi или его обновленной версии программа «знала» где именно должен быть сделан ремонт или развернуто обновление.
У меня есть эти фрагменты в моем product.wxs:
<!-- Registry key location -->
<Property Id="MBREGISTRYKEY" Value="SOFTWARE\MyCompany\MyApp" Secure="yes"/>
<Property Id="PREVIOUS_PATH" Secure="yes">
<RegistrySearch Root="HKLM" Key="[MBREGISTRYKEY]" Name="Path" Type="directory" Id="PreviousPath"/>
</Property>
и
<Fragment>
<WixVariable Id="WixUIBannerBmp" Value="$(var.SolutionDir)Assets\Visuals\wix-banner.bmp"/>
<WixVariable Id="WixUIDialogBmp" Value="$(var.SolutionDir)Assets\Visuals\wix-background.bmp"/>
<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>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLATIONDIR">
<Directory Id="CONFIGINSTALLATIONDIR" Name="config" />
</Directory>
</Directory>
<SetDirectory Id="INSTALLATIONDIR" Value="[WindowsVolume]MyApp" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLATIONDIR" />
</Fragment>
Я нашел множество примеров здесь, в SO и в других местах, которые позволяют установщику отображать разные диалоги в зависимости от условий, таких как значение реестра или переменная среды. То, что я нигде не нашел, является примером того, чего я пытаюсь достичь, то есть полностью пропускаю пользовательский интерфейс, а не только один или два диалоговых окна в пользовательском интерфейсе, если установлено мое значение реестра. Это требование, так как развертывание обновлений должно быть автоматическим.