Я пишу установщик для существующего продукта, для которого более ранний установщик был написан в NSIS ( Система установки Nullsoft Scriptable). Мне нужно написать установщик на основе MSI для этого продукта, используя WiX. У меня есть определенный вопрос по этому поводу: -
- Как определить, установлено ли мое приложение на целевой машине? Приложение могло быть установлено с помощью NSIS (более старые версии) или MSI (теперь и далее).
- Как написать установщик WiX, который может обновляться, если на целевой машине установлена более старая / такая же версия продукта. Я нашел эту тему на нескольких сайтах, но все они не работают. В частности, я хочу знать, какую информацию (GUID, версию и т. Д.) Необходимо изменить в базе кода установщика для каждого выпуска программного обеспечения.
- Каждый год выпускаются три / четыре версии нашего продукта. Какой установщик мне больше подойдет?
Обратите внимание: если я просто изменю версию элемента продукта в коде Wix, более новый установщик не сможет заменить старую. Когда я дважды щелкаю новую версию установщика, появляется диалоговое окно с сообщением об ошибке.
Другая версия этого продукта уже установлена. Установка этой версии не может быть продолжена. Чтобы настроить или удалить существующую версию этого продукта, используйте «Установка и удаление программ на панели управления».
Образец кода:
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<Product Name='Baton' Id='41B8F929-B6CF-41BE-9E40-C96D9BD6D672'
UpgradeCode='E1F03FA4-D470-4FA6-86BA-F5CDD3007C1D'
Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Company Name.'>
<Package Id='*' Keywords='Installer' Description="product Installer"
Comments='product comments'
InstallerVersion='100' Languages='1033' Compressed='yes'
SummaryCodepage='1252' />
<Upgrade Id='E1F03FA4-D470-4FA6-86BA-F5CDD3007C1D'>
<UpgradeVersion OnlyDetect='no' Property='PREVIOUSFOUND' Minimum='1.0.0'
IncludeMinimum='yes' Maximum='1.1.0' IncludeMaximum='yes' />
</Upgrade>
<!-- ***Install execution sequence*** -->
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize"/>