2012-02-10 44 views
0

私たちの製品のインストーラを作成しています。インストーラーは以前WISEでやっていましたが、このリリースでこれをwixに変更したかったのです。ユーザーが新しいバージョンをインストールする前に古いバージョンの製品をアンインストールする必要があるため、古いインストーラーによって作成されたレジストリーのキーを確認する必要があります(古いバージョンをアンインストールするとキーが削除されます)。存在しないレジストリキーを見つける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コードページに注目してください。

マシンに古いバージョンがインストールされている場合、レジストリにキーが見つかると、インストーラにメッセージが表示されます。私が古いバージョンを削除すると、レジストリキーが消えるのが見えますが、インストーラはまだ私にメッセージを表示して終了します。私は無駄に再起動(あなたは知らない)を試みました。

私はアイデアが不足している...任意の考えですか?

+0

冗長ログは何を表していますか? –

+0

詳細については、インストールログを作成してください。私の推測は、何とかそのプロパティが設定されているということです。 – Ciprian

+0

ワイズインストーラもMSIでしたか? (あなたが引用したキーはそれがそうではないことを示唆しています)。もしそうなら、アップグレードを使用して以前のものを見つけることができます。 –

答えて

1

レジストリ検索では、キーが見つからない場合は1が返されます。だから私は

​​

OLDKEY 

を変更し、それが修正されました。

関連する問題