Wix Installer обнаруживает SELFFOUND, когда он должен быть ПРЕДЫДУЩИМ - PullRequest
1 голос
/ 13 января 2020

У меня странная проблема, из-за которой установщик WiX, по-видимому, обнаруживает SELFFOUND вместо PREVIOUSFOUND.

Я перемещаю старый проект InstallAware в WiX, поэтому скопировал код обновления из проекта в этот продукт. .wxs

    <Upgrade Id='MyGuid'>
  <UpgradeVersion OnlyDetect='yes' Property='SELFFOUND' Minimum='!(bind.FileVersion.MainEXE)' IncludeMinimum='yes' Maximum='!(bind.FileVersion.MainEXE)' IncludeMaximum='yes' />
  <UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND' Minimum='!(bind.FileVersion.MainEXE)' IncludeMinimum='no' />
  <UpgradeVersion Minimum="1.0.0"
          IncludeMinimum="yes"
          OnlyDetect="no"
          Maximum="!(bind.FileVersion.MainEXE)"
          IncludeMaximum="no"
          Property="PREVIOUSFOUND" />
</Upgrade>

<CustomAction Id='AlreadyUpdated' Error='[ProductName] is already installed.' />
<CustomAction Id='NoDowngrade' Error='A later version of [ProductName] is already installed.' />

<InstallExecuteSequence>
  <RemoveExistingProducts After="InstallInitialize"/>
  <Custom Action='AlreadyUpdated' After='FindRelatedProducts'>SELFFOUND</Custom>
  <Custom Action='NoDowngrade' After='FindRelatedProducts'>NEWERFOUND</Custom>
</InstallExecuteSequence>

и GUID обновления соответствуют этому в моем теге Product атрибута UpgradeCode. Коды продуктов между двумя версиями различаются, но я не думаю, что делать их одинаково - хорошая идея.

Версия, установленная старым проектом InstallAware, - 4.11.7311.0, и она видна на панели управления с этим версия. Версия, которую я пытаюсь установить через Обновление и удалить старую версию: 4.11.7314.0.

По какой-то причине, когда я пытаюсь запустить новый WiX .msi, он выдает сообщение [ProductName] уже установлено .

Я что-то упустил? Потому что мне все кажется правильным. Заранее спасибо. Wix Toolset v3.11.

1 Ответ

0 голосов
/ 14 января 2020

Хорошо, я нашел проблему, ну, на самом деле их было несколько.

Сначала я запустил установщик через командную строку, чтобы сгенерировать файл журнала.

msiexec /i "C:\Path\To\Installer.msi" /L*V "C:\ProgramData\Install.log"

Затем я искал это файл для

FindRelatedProducts

, и он нашел приложение, которое устанавливало свойство SELFFOUND, теперь я искал в реестре GUID и понял, что это старый из мое тестирование, поэтому я удалил его, используя

msiexec /x {FoundGuid}

Тем не менее, проблема еще не решена, поэтому повторил процесс и нашел сообщение, в котором было указано

FindRelatedProducts: текущая установка за машину. Связанная установка для продукта '{MyGUID}' осуществляется для каждого пользователя. Пропуск ...

, поэтому все, что мне нужно было сделать, это изменить мой InstallScope с perMachine на perUser, и он обнаружил правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...