У меня есть два компонента, в которых один компонент имеет simple.exe
, а другой компонент sample.dll
в одном MSI. Если я установлю MSI, будут установлены и simple.exe
, и sample.dll
, а в программных файлах в какой-то папке будет два: .exe
и .dll
. Если я сделаю серьезное обновление всего MSI, он заменит папку, созданную в файлах программы, новой. Итак, как заставить wix не заменять .exe
, если я изменяю / предоставляю обновление для файла .dll
и наоборот. И при обновлении .dll
я буду регистрировать и отменять регистрацию ключей с помощью какого-нибудь .bat
файла. Пожалуйста, помогите мне решить эту проблему. Мне нужно условное серьезное обновление, которое заменит определенные файлы при их изменении.
Пожалуйста, найдите приведенный ниже код:
product.wxs
<?xml version="1.0" encoding="UTF-8"?>
<?define ProductVersion = "0.0.4"?>
<?define ProductUpgradeCode = "d3170abf-b41c-4274-a3a0-85576052f35c"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="saranSample" Language="1033" Version="$(var.ProductVersion)" Manufacturer="example" UpgradeCode="$(var.ProductUpgradeCode)">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of product is already installed." AllowSameVersionUpgrades="no" AllowDowngrades="no" />
<MediaTemplate EmbedCab="yes" />
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/>
<UpgradeVersion Minimum="0.0.0" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED"/>
</Upgrade>
<InstallExecuteSequence>
<Custom Action="Filecleaner" After="InstallFinalize"></Custom>
</InstallExecuteSequence>
<Condition Message="A newer version of this software is already installed.">NOT NEWERVERSIONDETECTED</Condition>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="saranSample_$(var.ProductVersion)">
<Component Id="exeFiles" Guid="12345678-1234-1234-1234-222222222222">
<File Id="exe" Source="$(sys.CURRENTDIR)npp.7.5.7.Installer.exe" KeyPath="yes"/>
</Component>
<Component Id="dllFiles" Guid="12345678-1234-1234-1234-222222222223">
<File Id="dll" Source="$(sys.CURRENTDIR)saran.dll" KeyPath="yes"/>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="saranSample" Level="1">
<ComponentRef Id="exeFiles"/>
<ComponentRef Id="dllFiles"/>
</Feature>