Программа установки Wix находит раздел реестра, который не существует - PullRequest
1 голос
/ 10 февраля 2012

Я создаю установщик для одного из наших продуктов. Установщик был сделан с WISE ранее, но мы хотели изменить это на wix с этим выпуском. Важно, чтобы наши пользователи удалили старую версию продукта перед установкой новой версии, и поэтому мне нужно проверить ключ в реестре, который был создан старой программой установки (ключ удаляется при удалении старой версии).

У меня есть условная проверка в wxs, вот так:

<!-- Check if older version of Product has been installed. Must be removed by user-->
<!-- The key below is set by the old installer. If it exists, the old version is there.-->
<Property Id="OLDKEY">
  <RegistrySearch Id="OldRegKey" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Company Product för Product" Name="DisplayName" Type="raw"></RegistrySearch>
</Property>

<Condition Message="You need to uninstall the old version of Product before installing this one.">
  OLDKEY
</Condition>

Вы заметите там шведского персонажа. Я подозреваю, что это может быть причиной некоторых проблем. Вот как я настроил, поскольку мне приходилось обрабатывать шведские символы:

<Product
  Id="*"
  Name="$(var.Manufacturer) $(var.ApplicationName)"
  Language="1033"
  Version="!(bind.FileVersion.Product.exe)"
  Manufacturer="$(var.Manufacturer) AB"
  UpgradeCode="[GUID]"
  Codepage="1252"
>

Обратите внимание на кодовую страницу 1252.

Когда я установил и установил старую версию на машине, я нашел ключ в реестре, и установщик покажет мне сообщение. Если я удаляю старую версию, я вижу, что раздел реестра исчезает, но установщик все равно покажет мне сообщение и завершит работу. Я попытался перезагрузить (вы никогда не знаете) безрезультатно.

У меня заканчиваются идеи ... есть мысли?

1 Ответ

2 голосов
/ 10 февраля 2012

Оказывается, поиск в реестре возвращает 1, если ключ не найден. Поэтому я изменил

OLDKEY

Для

<![CDATA[OLDKEY <> 1]]>

И это было исправлено.

...