Программе, которую я разрабатываю, для работы требуется OBS Studio.Для удобства я создаю пакет Burn, который будет устанавливать каждую зависимость в правильном порядке перед установкой основного приложения.
Удаление - проблема.OBS имеет свой собственный исполняемый файл для удаления, и сообщить Burn, где находится этот исполняемый файл, оказалось невозможным.Каталог установки хорошо читается в реестре (OBS сохраняет каталог установки в качестве значения по умолчанию для ключа):
<util:RegistrySearch
Variable="OBS"
Root="HKLM"
Key="SOFTWARE\WOW6432Node\OBS Studio" />
Но я не могу получить переменную в SourceFile из ExePackage, которая использовала бы ее при удалении,Следующий код потерпел неудачу в моих попытках:
<ExePackage Id="Uninstall_OBSStudio"
SourceFile="!(wix.OBS)\uninstall.exe"
DetectCondition="NOT OBS_exists"
Cache="no"
Compressed="no" />
Передача переменной как «[OBS]» также не удалась, читая как буквенную строку.Использование переменной в условиях работает без проблем, но это совсем не так.Я даже пытался передать значение в WixVariable, тоже:
<WixVariable Id="OBS_location" Value="[OBS]" />
Безрезультатно.Пока что это выглядит как util: RegistrySearch заблокирован в некоторых частях Burn, по причинам, которые я не понимаю.
Что я должен делать, чтобы использовать переменную RegistrySearch в строке SourceFile? Ничего из того, что я сделал для форматирования данных, не сработало.Может ли Burn даже передавать данные так, как я пытаюсь?Есть ли лучший способ извлечь информацию из реестра для цепочек записи?
Я действительно надеюсь, что это всего лишь синтаксическая проблема.Заранее благодарим за любые рекомендации, которые вы можете предоставить.