2016-03-21 13 views
0

シンプルなmsiを作成しましたが、msiを実行する前に別のアプリケーションがクライアントマシンにインストールされているかどうかをチェックします。msiが実行される前にインストールされている他のアプリケーションを確認してください

私が作成したアプリケーションは別のアプリケーションの依存関係を持っているためです。私のアプリケーションがクライアントマシン上で動作しなければならない場合、そのマシンは別のアプリケーションをインストールする必要があります。

a.exeはb.exeに依存していると言います。

クライアントマシンのa.exeにmsiを実行すると、このmsiはb.exeがクライアントマシンにisntalledされているかどうかを検出する必要があります。その後、MSIのisntallation別のアプリケーションがMSIを使用してインストールした場合

+0

どのようにインストーラを作成しますか、ビジュアルスタジオパッケージとデプロイメントプロジェクトを使用しますか? –

+0

is b.exeもMSIベースのインストーラを使用して展開されましたか? – yossiz74

+0

Yossiz74、はい。 –

答えて

1

を終了していない場合は、アップグレードのメカニズムを使用することができます。

のWiX:

<Upgrade Id="<UpgradeCode of the another App>"> 
    <UpgradeVersion Property="PREVIOUSINSTALLEDAPP" /> 
</Upgrade> 

<Condition Message="Please Install another application"> 
    <![CDATA[PREVIOUSINSTALLEDAPP]]> 
</Condition> 

そしてFindRelatedProductsがLaunchConditions前に配列決定されていることを確認します。

0

Visual Studio Installerを使用した場合、オプションはいくらか制限されます。 Bのインストールでレジストリキーが作成された場合、セットアップの検索ターゲットマシンはそのキーを検索し、起動条件として使用できます。 BのMSIをお持ちの場合は、Windows SDKキットからOrcaで開き、Componentテーブルを見て、インストールされている実行可能ファイルについてComponent Guidを探してください。ここでも、Search Target MachineでWindows Installerの検索と起動条件に使用できます。

一般的に、これらのチェックは実際のアプリではインストールよりもうまく機能します。 インストールはBに依存しないため、あなたのインストール順序を無理やりにしている可能性があります。アプリケーションのみです。したがって、インストール順序を許可して、アプリがインストールされていない場合はBが動作する必要があると言ってチェックを入れてください。ユーザーがBをアンインストールすると、インストール時にのみチェックが行われるため、アプリがクラッシュする可能性があります。

関連する問題