2012-05-03 16 views
3

以前はClickOnceを使用してデプロイされたアプリケーション用のWiXインストーラを作成しています。WiXを使用してClickOnce経由でアプリケーションがインストールされたことを検出するにはどうすればよいですか?

アプリケーションがクライアントコンピュータにインストールされていて、MSIインストールを中止するかどうかを検出したいと考えています。 Stack  オーバーフローで同様の質問を検索しましたが、その方法を見つけることができませんでした。

アプリケーションがインストールされている場所を示すパスまたはレジストリキーが見つかった場合は、条件を介してMSIインストールを中止できます。

this questionの回答を使用して、どこかに取得できました。 ClickOnceショートカットは、.appref-ms拡張子のファイルです。これは私が使用するコードです:アプリケーション一度クリックは、現在のユーザー用にインストールされているのに対し、

<Property Id="APP_CLICKONCE_INSTALLED"> 
    <DirectorySearch Id="dirSearch.APP.CLICKONCE" AssignToProperty="yes" Path="[StartMenuFolder]" Depth="2"> 
    <FileSearch Id="fileSearch.APP.CLICKONCE" Name="APP.appref-ms" /> 
    </DirectorySearch> 
</Property> 

<Condition Message="App is already installed. Please uninstall it then re-run this setup."> 
    <![CDATA[APP_CLICKONCE_INSTALLED = "" OR INSTALLED]]> 
</Condition> 

しかし、StartMenuFolderは、ALLUSERSプロファイルの場所を提供します。私はまだ掘っている。すべては今良いです

<Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" /> 

閲覧者インストールを使用して

StartMenuFolderは、現在のユーザーの場所(私はperMachineを使用していた)を提供します。

答えて

2

私はWiXのについては何も知らないが、ClickOnceアプリケーションがインストールされているかどうかをする別の方法はここにあるレジストリでアンインストール文字列、を反復処理することです:

HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall 

あなたがお勧めしますアプリケーションの製品名がそのキーのセットの表示名と一致するものを検索します。

+0

あなたが正しいです、ClickOnceインストーラは(他のWindowsインストーラと同様に)アンインストール場所にエントリを挿入します。キーは異なりますが、DisplayNameを使用してアプリケーションを見つけることができます。 –

関連する問題