Microsoft Installer: может ли он обновить продукт без изменения номера версии?

Мы хотим использовать популярные major.minor.update.build_number схема управления версиями. Наше следующее обновление продукта будет версия 1.0.1.

Наш внутренний механизм управления конфигурациями производит сборки выпуска и ежедневные сборки, все из которых автоматически упаковываются как MSI. Разработчики и QA регулярно загружают сборки и обновляют тестовые стенды, чтобы проверить исправления ошибок и т. Д.

Каждая сборка CM увеличивает build_number поле, так что версии сборки могут выглядеть примерно так

1.0.1.001 // Release build  
1.0.1.002 // Daily build  
1.0.1.003 // Another Daily build  
1.0.1.004 // New Release build  

Наша проблема в том, что, поскольку наша ProductVersion не меняется, технология Microsoft Installer не позволяет нам запускать эти MSI в качестве обновлений на наших испытательных стендах. Мы должны полностью удалить существующий продукт и переустановить нужный MSI.

Есть ли способ написать MSI для применения обновлений независимо от штампа ProductVersion?

Мы используем InstallShield. Есть ли альтернативная технология установки, которая позволила бы нам делать то, что мы хотим?

Спасибо!

1 ответ

Решение

Вы должны быть в состоянии сделать небольшое обновление в этой ситуации. Если ваша цель - сделать серьезные обновления, вы должны изменить одно из первых трех полей свойства ProductVersion.

Если ваша цель - плыть вверх по течению, вам понадобится специальное действие, вставленное между FindRelatedProducts и RemoveExistingProducts, чтобы переопределить встроенную логику обнаружения продуктов MSI. По сути, вы захотите использовать Msi API для поиска установленных кодов продуктов для вашего кода обновления.

Лично я рекомендую

Major.Minor.Build.Patch, так что моя увеличенная последовательность сборки

1.0.1.0 1.0.2.0 1.0.3.0 1.0.4.0 1.1.5.0 1.1.6.0 1.1.7.0

.0 позволяет мне гибко перестраивать сборки и при необходимости отправлять их как патчи.

Другие вопросы по тегам