Как избежать многократной установки / ремонта одного и того же продукта с помощью установщика MSI

Я хочу создать установщик MSI для своего приложения, и мне также нужно удаленно развернуть это приложение с помощью развертывания программного обеспечения Active Directory. Мне также нужно убедиться, что это приложение не устанавливается несколько раз и не должно допускать какого-либо ремонта или модификации. Чтобы убедиться в этом, я установил ARPNOREPAIR = 1 в моем установщике. Это отлично работает, если я пытаюсь установить несколько экземпляров вручную или даже без вывода сообщений. Но я сталкиваюсь с проблемой, когда делаю это с использованием активного каталога. Он всегда допускает множественную установку, что приводит к повреждению состояния установки. Я хочу узнать, могу ли я каким-либо образом убедиться, что несколько экземпляров приложений не установлены, даже если версии разные.

Спасибо


person Dalchand    schedule 07.05.2013    source источник
comment
Вы действительно имеете в виду несколько экземпляров? Это расширенный сценарий разработки, реализация которого требует времени. Какое значение имеет ваше свойство ALLUSERS? Я предполагаю, что вы хотите сказать, что он устанавливается в контексте каждого пользователя снова и снова для разных профилей.   -  person Christopher Painter    schedule 07.05.2013


Ответы (1)


Самый простой способ заблокировать установку всех версий пакета .msi - использовать информацию, предоставленную файлом UpgradeCode. Вы можете узнать, есть ли другие версии связанных пакетов, добавив следующее (используя синтаксис набора инструментов WiX):

<Upgrade Id='PUT-UPGRADE-CODE-HERE'>
   <UpgradeVersion OnlyDetect='yes' Property='FOUND_RELATED_PACAKGE' />
</Upgrade>

Это установит свойство с именем FOUND_RELATED_PACKAGE в список ProductCodes из уже установленных пакетов. Затем вы можете заблокировать установку следующим образом (используя синтаксис набора инструментов WiX):

<Condition Message='Another version of [ProductName] is already installed.">
    Installed OR NOT FOUND_RELATED_PACAKGE
</Condition>

Наконец, очень опасно блокировать восстановление пакета .msi. Есть много ситуаций (включая незначительное обновление и исправление), которые зависят от исправления пакета. Было бы намного лучше сделать ваш установочный пакет устойчивым к восстановлению, поскольку он имеет фундаментальное значение для того, как все работает.

Удачи!

person Rob Mensching    schedule 07.05.2013
comment
Привет, Роб, я поставил все эти условия, но моя проблема в том, что эти проверки не работают, когда я устанавливаю это приложение с использованием групповой политики активного каталога. - person Dalchand; 08.05.2013