2012-02-10 4 views
0

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

У меня есть условный чек в 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.

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

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

+0

Что говорит вездесущий журнал? –

+0

Создайте журнал установки для получения более подробной информации. Я предполагаю, что каким-то образом это свойство установлено. – Ciprian

+0

Был ли мудрый установщик также MSI? (Ключ, который вы цитируете, предполагает, что это не так.) Но если это возможно, вы, вероятно, можете использовать обновления, чтобы найти предыдущее. –

ответ

1

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

OLDKEY 

Для

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

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