У меня есть служба 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 также предлагает вам) на самом деле вообще исключает возможность обновления, поскольку установщик не позволит вам выполнить переустановку, если этот код продукта не был ранее установлен.
Все, что он тогда позволит вам сделать, это установить (а затем вы получите обычное сообщение типа «служба уже существует»).