2016-10-20 4 views
1

Я работаю над установщиком 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" /> 

ответ

0

Кажется, что DetectCondition мешает пакеты исполняемые от обновления. Однако причина, по которой я добавил DetectCondition, заключалась в том, чтобы решить другую проблему: без DetectCondition установщик пакетов не удалит установки exe-пакетов. Поэтому мне кажется, что я должен выбирать между тем или другим вопросом - я не уверен, как решить обе проблемы.

2

Ваше обнаруженное условие должно быть истинным, если установлена ​​точная версия пакета, а в противном случае - false. Поэтому, вероятно, должно быть что-то вроде BlahPresent = v5.0.0.0, а не только BlahPresent (что верно, даже если установлена ​​другая версия).

Смежные вопросы