Отображение 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 и в других местах, которые позволяют установщику отображать разные диалоги в зависимости от условий, таких как значение реестра или переменная среды. То, что я нигде не нашел, является примером того, чего я пытаюсь достичь, то есть полностью пропускаю пользовательский интерфейс, а не только один или два диалоговых окна в пользовательском интерфейсе, если установлено мое значение реестра. Это требование, так как развертывание обновлений должно быть автоматическим.

0 ответов

Другие вопросы по тегам