Короткая версия заключается в том, что я создаю установочный пакет, и я хочу, чтобы кнопка «Далее» на экране приветствия меняла свое поведение в зависимости от того, существует ли определенный раздел реестра.Кажется, что я должен быть в состоянии изменить условия действий следующей кнопки, чтобы получить такое поведение, но пока не повезло.Я всегда получаю поведение A или B, я не получаю поведение, чувствительное к значению реестра.
Следует отметить, что я могу полностью удалить пользовательский интерфейс и запустить пакет через командную строку, чтобы получить желаемые результаты, но я пытаюсь быть немного более удобным для пользователя, добавляя диалог установки пути, когда это необходимо.
Более подробно ...
Я работаю над установщиками для ряда независимых, но связанных библиотек классов.Если мы устанавливаем библиотеку в чистую коробку, я хочу, чтобы установщик запросил у пользователя путь установки, а затем записал этот путь в реестр во время процесса установки.Однако, если мы устанавливаем библиотеку на коробку, в которой уже есть одна из других библиотек, я хочу, чтобы установщик прочитал реестр и использовал тот же путь, что и предыдущая установка.
Мой мыслительный процесс заключался в изменениистандартный интерфейс WixUI_InstallDir для проверки результатов поиска в реестре и пропуска InstallDirDlg, если он установлен.Однако это не похоже на работу.Вот некоторые фрагменты из XML:
<Property Id="FOOPATH">
<RegistrySearch Id="PathSet" Type="directory" Root="HKLM" Key="Software\Foo" Name="InstallPath"></RegistrySearch>
</Property>
<Property Id="PATHSET">
<RegistrySearch Id="PathSet" Type="directory" Root="HKLM" Key="Software\Foo" Name="InstallPath"></RegistrySearch>
</Property>
<Directory Id="FOOPATH" Name="Foo">
<Component Id="FooPathReg" Guid="Some Guid">
<RegistryKey Root="HKLM" Key="Software\Foo" Action="createAndRemoveOnUninstall">
<RegistryValue Name="InstallPath" Type="string" Value="[FOOPATH]" KeyPath="yes"></RegistryValue>
</RegistryKey>
</Component>
</Directory>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">NOT Installed AND NOT PATHSET</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">NOT Installed AND PATHSET</Publish>
Если мои условия публикации используют свойство PATHSET (как показано), то я всегда получаю диалоговое окно установки каталога, если я переключаю их на использование свойства FOOPATH, тогда яникогда не получай диалог.Я также пытался поиграть с InstallUISequence, и, кажется, не имеет значения, как рано я планирую действие AppSearch, я все равно получаю тот же результат.
Есть ли что-то простое, что мне не хватает?Или мне нужен другой подход к этому?