Обновить ProductName существующего продукта
Я создал установщик exe с помощью Inno Setup и упаковал его в MSI с помощью MSIWrapper.
Для этого я вставил следующие строки в файл iss (InnoSetup):
[...]
#define MyAppName "New_product_name"
AppName={#MyAppName}
AppId={#MyAppName}
[...]
И следующие строки в XML-файле конфигурации MSIWrapper:
[...]
<ProductName Detect="" Value="Value" />
[...]
Я хочу изменить название продукта, отображаемое в разделе " Удалить " панели управления.
Если я изменю iss MyAppName следующим образом:
[...]
#define MyAppName "New_product_name"
AppName={#MyAppName}
AppId={#MyAppName}
[...]
или XML конфигурации следующим образом:
[...]
<ProductName Detect="" Value="New_product_name" />
[...]
или оба, и я выполняю обновление, две разные программы, названные Old_product_name и New_product_name, отображаются в Панели управления.
Как я могу продолжить, чтобы достичь своей цели?
Спасибо,
Даниэле
2 ответа
MSI Tool Preferred: MSI сложный. Намой взгляд,вы должны либо использовать подходящий инструмент MSI, либо полностью полагаться на устаревшую технологию установки. Эти обертки кажутся ненадежными. Можно ли спросить, что это за программное обеспечение и как оно будет использоваться? (влияет на то, что имеет смысл делать).
Приведенное ниже не является ответом для MSIWrapper, а представляет собой ускоренный курс по MSI, чтобы понять, что вы видите, и, возможно, выбрать лучший инструмент для создания MSI, если это необходимо (вы можете нормально работать с тем, что у вас есть).
Записи ARP: для пакетов MSI две записи в апплете "Добавить / удалить" обычно означают, что две версии одного и того же MSI были установлены дважды - без использования в качестве обновления (которое удалит старую версию).
Основное обновление MSI: Основное обновление MSI - это удаление существующей версии MSI, а затем установка новой версии MSI с различными параметрами планирования, контролирующими, в каком порядке это происходит. Механизмы управления этим в основном находятся в таблице обновлений внутри MSI. файлы. Если вы хотите, чтобы обновления MSI работали, эта таблица должна быть создана. Если все сделано правильно, старая версия исчезает как часть установки нового пакета MSI. Я не знаком с тем, как это делается с помощью MSIWrapper, но ниже приведены несколько примеров, показывающих, как работает таблица обновлений.
Некоторые лакомые кусочки:
- Файлы MSI - это не zip-файлы, а файлы хранилища со структурой COM- по сути, урезанные базы данных SQL Server ( подробнее). Вы можете просматривать их с помощью Orca и некоторых других инструментов.
- Есть ряд вещей, которые могут привести к сбою крупного обновления, вот несколько причин неудачного крупного обновления, которые приведут к двум записям в программах добавления / удаления (как вы описываете).
Как создать серьезное обновление с помощью различных инструментов:
WiX:
- https://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html
- https://support.firegiant.com/hc/en-us/articles/230912187-Implement-major-upgrade-
Installshield:
- Создание пакетов обновлений MSI (рекомендуется)
- https://docs.revenera.com/installshield26helplib/helplibrary/MajorMinorSmall.htm
- Во время удаления обновленный продукт обращается к MSI-файлу старой сборки для удаления.
Расширенный установщик:
- Видео: создание основного обновления MSI (рекомендуется)
Ссылки:
В AppId
Значение директивы является ключом к записи в списке программ.
Если вы хотите изменить имя приложения, измените AppName
, но сохрани старый
AppId
.
Это противоположно Автоматическому созданию новой записи в "Программы и компоненты" для каждой новой версии.