Installshield - необходимо удалить продукты с «плохим» кодом обновления - PullRequest
3 голосов
/ 07 февраля 2011

У нас есть продукт installshield, в котором у нас был один и тот же код обновления в течение всего жизненного цикла проекта.Каким-то образом вышел релиз с новым кодом обновления, так что теперь мы начинаем видеть несколько записей в программах установки и удаления наших клиентов.

Есть ли способ (возможно, установить скрипт)и проверьте продукт на наличие другого кода обновления и удалите его, если он не совпадает с текущим (мы собираемся сбросить его на старый и НИКОГДА не менять его снова!)?заранее за ваше время!

Ответы [ 3 ]

5 голосов
/ 07 февраля 2011

Установщик может удалить Продукты, принадлежащие к любому числу семейств UpgradeCode. Просто создайте другое правило MajorUpgrade (Таблица обновлений), чтобы охватить как старый, так и новый код UpgradeCode, и все будет в порядке.

1 голос
/ 28 мая 2011

Я сам прошел через это, и это была боль.Мы используем VS 2005 для создания наших MSI, и по какой-то причине я случайно изменил код обновления в последнем выпуске.Это привело к тому, что программа дважды отображалась в диалоговом окне «Установка и удаление программ», несмотря на установленный флаг RemovePreviousVersions.Я обнаружил, что мне пришлось отредактировать таблицу обновлений, чтобы добавить запись для кода обновления румян.

Этот процесс должен быть проще для вас с InstallShield, но я включу инструкции VS, которые мне пришлось использовать тольков случае.

В VS 2005 у вас нет доступа для редактирования таблицы обновлений (по крайней мере, я не смог ее найти), поэтому мне пришлось установить программу под названием Microsoft Orca (MS имеет несколько классных кодовых имен,но названия продуктов ужасные).Он поставляется вместе с Windows SDK, поэтому он уже был у меня на компьютере.Вот ссылка: http://msdn.microsoft.com/en-us/library/aa370557%28v=vs.85%29.aspx

Откройте файл MSI в этой программе, и вы увидите Upgrade в нижней части списка.Вы должны добавить новую запись для кода обновления, с которым хотите иметь дело.Вот ссылка, объясняющая это: http://msdn.microsoft.com/en-us/library/aa372379%28VS.85%29.aspx

Я создал новую строку с кодом обновления, который я хотел удалить, с правильными номерами версий, с атрибутом 4 (msidbUpgradeAttributesIgnoreRemoveFailure) и ActionProperty PREVIOUSVERSIONSINSTALLED.

Если я правильно понимаю, я в основном сказал MSI, что вместе с флагом RemovePreviousVersions он будет рассматривать этот другой код обновления и удалять его.В моем случае это сработало, так что, надеюсь, что-то из этого вам поможет.

Удачи!

1 голос
/ 09 февраля 2011

Проверьте, где хранится информация об установке приложения в системном реестре.Если вы можете найти, где хранится код продукта, вы можете написать скрипт для чтения кода из реестра и затем выполнить скрипт удаления программы.

...