Предотвращение установки более низкой версии над более высокой версией

Мы разработали проект с использованием InstallScript MSI Project в Installshield 2008 Premier Edition. В проект мы добавили условие, чтобы старая версия не была установлена ​​на более высокую версию.

Проблема, с которой мы сталкиваемся, заключается в рассмотрении нового проекта, в котором версия продукта будет 1.0.0925.1 и добавлено условие, чтобы избежать более высокой версии по сравнению с более низкой. Чтобы добавить это условие, я получил его по ссылке выше; наряду с этим на вкладке "Общие" основного обновления я включил запрос на обновление; потому что в будущем новая установка поставляется с 1.0.0925.2, она должна запросить обновление.

Теперь я создам новую настройку с версией продукта 1.0.0925.2 и на вкладке "Общее обновление" я отключу приглашение, потому что; если пользователь пытается установить 1.0.0925.1 поверх 1.0.0925.2, он не должен разрешать; в этом случае он работает нормально; появляется сообщение "Другая версия этого продукта уже установлена. Установка этой версии не может быть продолжена. Чтобы настроить или удалить существующую версию этого продукта, используйте" Установка и удаление программ "на панели управления. {2D0E6C46-1CC2-4174-8AAC-0B39312D8ECE}"

Теперь через несколько дней произойдут изменения, и снова будет создана другая установка с версией 1.0.0925.3, в которой приглашение на обновление будет отключено. Теперь я пытаюсь установить 1.0.0925.3 поверх 1.0.0925.2, очевидно, он должен получить обновление; но здесь возникает проблема, вместо того, чтобы спрашивать: "Программа установки выполнит обновление", она скажет: "Другая версия этого продукта уже установлена. Установка этой версии не может быть продолжена. Чтобы настроить или удалить существующую версию этого продукта, используйте" Добавить / удалить ". Программы на панели управления. {2D0E6C46-1CC2-4174-8AAC-0B39312D8ECE} "То есть не разрешено обновляться, поскольку я отключил приглашение 1.0.0925.2. Если я включу это, то любая настройка будет запускаться каждый раз, когда будет запрашиваться обновление, будь то более низкая версия более высокой версии или более высокая версия более низкой версии.

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

2 ответа

Решение

Хорошо, если вы используете установщик Windows, вам нужно переосмыслить номера версий. Установщик Windows распознает major.minor.build только для пакетов установки (однако файлы могут использовать major.minor.build.revision, но не сам установщик)

Таким образом, с точки зрения установщика Windows, 1.0.0925.1 и 1.0.0925.2 фактически являются 1.0.0925, если у них одинаковый код продукта, вы получите стандартную "Другая версия этого продукта уже установлена". диалог.

В основном, если вы хотите поддерживать обновления, измените номер версии major.minor.build. Мы используем четвертое поле "редакция" для внутреннего использования, чтобы идентифицировать бета-установщики, но для установки новой версии требуется удалить предыдущую. Обновления поддерживаются только для общедоступных выпусков, где мы меняем одно из первых трех полей и настраиваем обновление соответствующим образом.

Я думаю, что проблема у вас в том, что вы не меняете ProductCode, Сначала вы должны решить, хотите ли вы сделать обновление Major или Minor. Похоже, вы остановились на главном обновлении. Поэтому вам нужно сгенерировать новый ProductCodeлибо с помощью редактора Direct и изменения таблицы обновлений, либо путем создания нового "крупного элемента обновления" в разделе "Обновления" IDE InstallShield.

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