Предотвращение установки более низкой версии по сравнению с более высокой версией - PullRequest
0 голосов
/ 15 июня 2009

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

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

Теперь я создам новую настройку с версией продукта 1.0.0925.2 и на вкладке Common Major Upgrade я отключу приглашение, потому что; если пользователь пытается установить 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 ]

6 голосов
/ 16 июня 2009

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

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

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

1 голос
/ 15 июня 2009

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

...