Как предотвратить обнаружение состояния WIX при запуске программы установки в процессе удаления? - PullRequest
0 голосов
/ 12 апреля 2019

Я изучаю Windows Installer xml (WIX), и в моем коде есть условие, которое проверяет, установлено ли программное обеспечение A перед установкой моего программного обеспечения. Я хочу, чтобы мое программное обеспечение могло быть установлено, когда установлено программное обеспечение A, но когда я удаляю свое программное обеспечение, это условие не должно запускаться.

Комплект работает нормально, когда он находится в процессе установки, это означает, что если программное обеспечение A уже установлено, оно продолжит установку. Но если программное обеспечение A вообще не было установлено, комплект будет запускать процесс проверки состояния, отображать сообщение о состоянии и останавливать установку. Я перепробовал два условия: «НЕ установлен» и «Установлен», но процесс проверки состояния по-прежнему запускается все время, даже в процессе удаления. Это означает, что независимо от процесса пакет всегда ищет один и тот же реестр.

Логика установщика достаточно проста, но я новичок в технологии xml установщика Windows.

<bal:Condition Message="Software-A is Required.">
   <![CDATA[NOT Installed OR SoftwareAInstalled]]>
</bal:Condition>

<util:RegistrySearch Id="SoftwareAInstalled"
                 Root="HKLM"  
                 Key="SOFTWARE\SoftwareA\"
                 Variable="SoftwareAInstalled"
                 Result="exists" />

Я хочу знать, как предотвратить процесс проверки, когда установщик находится в процессе удаления. Или любые другие предложения будут признательны.

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Поскольку вы хотите определить состояние вашего комплекта, вам следует взглянуть на Записать встроенные переменные .WixBundleInstalled даст вам состояние установки текущего пакета.Поэтому

WixBundleInstalled OR SoftwareAInstalled

Позволит программе установки продолжить работу, если либо текущий пакет уже установлен, либо если вы выполняете новую установку пакета, а программное обеспечение А уже присутствует.

0 голосов
/ 13 апреля 2019

У меня нет времени, чтобы проверить это прямо сейчас, но похоже, что вы можете использовать:

Installed OR SoftwareAInstalled

Я бы прописал последнее свойство в верхнем регистре, но тогда его можно установить в командной строке. Я думаю, это должно работать с тем, что у вас есть. Не могу проверить прямо сейчас. Совет: не забудьте проверить в silent installation mode, в modify, repair, self-repair, uninstall, major upgrade, etc ... Много проверок.

Некоторые предыдущие ответы на похожие вопросы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...