Я работаю над установщиком bootstrapper/bundle для WiX, который устанавливает пакет MSI и несколько пакетов .exe. Установщик пакета должен будет иметь возможность обновлять свои компоненты при установке нового пакета. Первоначально я столкнулся с проблемой, когда мои компоненты ExePackage не были установлены при обновлении, а затем я узнал, что вы можете избежать этого, поставив dep: Предоставляет запись в элементах ExePackage. Это исправило проблему с установкой обновления, но теперь я вижу проблему, когда компоненты ExePackage не обновляются с помощью нового установщика пакетов.Установка установщика пакетов WiX - ExePackage не обновляется при обновлении установки
Я протестировал это, создав 2 версии установщика пакетов - один с более новой версией одного из компонентов ExePackage. Если я установил пакет с более низкой версией, то установите пакет новой версии, кажется, что ничего не обновляется. Один компонент ExePackage, который он должен обновить, по-прежнему является более старой версией. Запись реестра, созданная элементом dep: Предоставляет элемент, который обновляется с новой версией. Затем, когда я удалю установку пакета, все удаляется, за исключением компонента ExePackage, который он должен был обновить.
Похоже, что недостает документации или примеров для этого сценария, а другие - с WiX. Есть ли у кого-нибудь пример для этого сценария?
Один из моих ExePackage элементов выглядит примерно так:
<ExePackage Id="BLAH_INSTALLER"
SourceFile="$(var.SolutionDir)\InputBin\BlahSetup.exe"
Compressed="yes"
InstallCommand="/install /quiet"
UninstallCommand="/uninstall /quiet"
DetectCondition="BlahPresent"
Cache="always" >
<dep:Provides Key="Blah" Version="5.0.0.0" />
</ExePackage>
Моя DetectCondition логика является FileSearch, который выглядит примерно так:
<util:FileSearch
Id="Blah_Installed"
Path="[ProgramFiles64Folder]\blah\blah.exe"
Variable="BlahPresent"
Result="version" />