Я работаю над приложением со множеством старых компонентов. У нас возникли проблемы при создании обновлений с помощью нашего старого установщика WISE. Я изучаю возможность создания обновленного MSI для приложения с помощью WiX, который включает только файлы, которые мы изменяем для сборки. Я работаю с файлом, подобным этому:
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='My Product' Id='AGUID-xxx-xxx-xxx-xxx' UpgradeCode='AGUID-xxx-xxx-xxx-xxx'
Language='1033' Codepage='1252' Version='5.60.0' Manufacturer='Me'>
<Package Id='*' Keywords='Installer' Description="My Upgrade Installer"
Comments='This is an awesome installer because I wrote it' Manufacturer='Me'
InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Upgrade Id='AGUID-xxx-xxx-xxx-xxx'>
<UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND'
Minimum='5.51.1' IncludeMinimum='yes' />
</Upgrade>
<Property Id='BINDIR'>
<RegistrySearch Id='TheRegEntry' Type='raw' Root='HKLM' Key='Software\Me\MyApp\Startup' Name='Location' />
</Property>
<CustomAction Id='NoDowngrade' Error='A later version of [ProductName] is already installed.' />
<Media Id='1' Cabinet='My.cab' EmbedCab='yes' DiskPrompt="You should not see this disk prompt" />
<Property Id='DiskPrompt' Value="You should not see this disk prompt" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='BINDIR' Name='Bin'>
<Component Id='MyExeComponent' Guid='*'>
<File Id='MyExeFile' Name='something.exe' DiskId='1' Source='<local path>\something.exe' KeyPath='yes'></File>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id='MainProgram' Title='AnExe' Description='This is just one file of many' Level='1'>
<ComponentRef Id='MyExeFile' />
</Feature>
<InstallExecuteSequence>
<Custom Action='NoDowngrade' After='FindRelatedProducts'>NEWERFOUND</Custom>
</InstallExecuteSequence>
</Product>
</Wix>
Это в основном пример обновления из документации по WiX с поиском в реестре для получения установленного местоположения, а затем только одной копии файла EXE.
У фактического установщика есть несколько файлов в MyExeComponent, которые я пытаюсь обновить, но я указываю только тот, который изменился. Я предполагаю, что я действительно спрашиваю, может ли установщик, который только «объявляет» часть полной установки, действительно обновить существующую установку.
Он будет собран и запущен на целевой системе без ошибок, но файлЯ пытаюсь обновить не обновляется, и программа исчезает из списка установленных программ на панели управления.
Наша устаревшая процедура обновления патча включает создание MSP из нескольких MSI, а затем выполнение дополнительного шага, который создаетEXE-файлЯ могу попробовать вставить MSP, генерируемый WiX, в этот процесс, если я не могу заставить работать вышеперечисленное.