У меня есть служба Windows, написанная на C # с использованием VS2005.
Установка осуществляется с помощью мастера, который вызывает msiexec для установки файла msi, также созданного с использованием VS2005.
У меня проблемы с генерацией MSI-файла, который будет обновляться с одной версии службы на другую. Программа-мастер обрабатывает обнаружение установленной в данный момент версии, останавливает службу, подбирает соответствующую командную строку для msiexec и затем перезапускает службу.
Существующая версия MSI имеет свойство версии 1.1.02, новое - 1.1.03. Код продукта и обновления идентичны.
Удаление 1.1.02 вручную с помощью программ добавления / удаления работает нормально, также как и установка 1.1.03 в «чистую» систему.
Обновление 1.1.02 до 1.1.03 проходит через движения, но конечный результат установлен 1.1.02.
Командная строка, используемая мастером для обновления:
msiexec / qb / i "MyProduct.msi" REINSTALL = "ALL" REINSTALLMODE = "vos"
Куда я иду не так? Я предполагаю, что, должно быть, я пропустил что-то довольно фундаментальное ...
Резервная позиция - информировать клиентов о том, что им необходимо вручную удалить 1.1.02 перед запуском мастера для установки 1.1.03, но я бы предпочел этого не делать.
Отредактировано, чтобы добавить:
Изменение кода продукта (как VS2005 также предлагает вам) фактически лишает возможности обновления вообще, поскольку программа установки не позволит вам выполнить переустановку, если этот код продукта ранее не был установлен.
Все, что вам затем будет позволено сделать, это установить (и тогда вы получите обычное сообщение типа «служба уже существует»).