3

Visual Studio 2010 で作成されたインストーラーを使用して、インストールとアプリケーションの前に 2 つの条件を検出する必要があります。

既存のアプリケーションを検出する

別のアプリケーションが既にインストールされていない限り、アプリのインストールを許可する必要はありません。たとえば、MS Office が PC にインストールされていない場合、ユーザーに警告してインストールを中止します。

GAC にインストールされているアセンブリを検出する

また、アセンブリが GAC にあるかどうかを確認する必要があります。特定のバージョン以上が GAC にあるかどうかを確認するのが理想的です。

アセンブリを含めたり、前提条件をインストールしたりしたくありません。インストールされているかどうかを確認し、そうでない場合はユーザーに警告してインストールを中止するだけです。

4

2 に答える 2

6

この状況を処理する最善の方法は、起動条件を使用することです

セットアップ プロジェクトを右クリックして、起動条件エディターを開くことができます。

View->Launch Conditions

ここに画像の説明を入力

既存のアプリケーションを検出する

既存のアプリケーションを検出する 1 つの方法として、レジストリ検索と起動条件を設定できます (ターゲット マシンの検索を右クリック -> レジストリ検索の追加)。

Office 10 のレジストリ検索のプロパティは次のようになります。

Name: Search for Office 10
Property: OFFICE10REGISTRY
RegKey: SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot
Root: vsdrrHKLM
Value: Path

次に、これらのプロパティを使用して起動条件を追加できます

Name: Office Installed Condition
Condition: OFFICE10REGISTRY
Message: Office 10 not detected

Office の任意のバージョンを検索する場合は、いくつかのレジストリ検索を作成してから、OFFICE10REGISTRY OR OFFICE11REGISTRY OR OFFICE12REGISTRY.

GAC にインストールされているアセンブリを検出する

今回は、ファイル検索を追加して、gac にインストールされたファイルを検索します。

Name:Search for Assembly In GAC
Depth: 5
FileName: Microsoft.JScript.dll
Folder: [WindowsFolder]\assembly\GAC\Microsoft.JScript
MaxVersion: 8
MinVersion: 7
Property: JSCRIPTEXISTS

ファイル名は dll であり、フォルダーは名前空間のパターンに従うことに注意してください。また、必要に応じて最小バージョンのみを指定できることにも注意してください。

次に、起動条件を追加します

Name: Assembly Gac Condtion
Condition: JSCRIPTEXISTS
Message: Missing JScript

完了すると、最終結果は次のようになります

ここに画像の説明を入力

于 2013-01-07T23:01:53.220 に答える
0

2 つのチェックを行う必要があるため、Installer クラス (http://msdn.microsoft.com/en-us/library/79e7ka7s(v=vs.100).aspx) を派生させてカスタム インストール手順を記述することをお勧めします。

ここでは、OnBeforeInstall メソッドをオーバーライドし、チェックするロジックをコーディングする必要があります。

  1. 前提条件アプリがインストールされている場合
  2. アセンブリが GAC にある場合

いずれかのチェックが失敗した場合は、例外をスローしてインストールを停止できます。

前提条件アプリについては、レジストリ ハイブを確認することをお勧めします。Windows は、インストールされているアプリケーションごとにレジストリ エントリを作成します。

GAC チェックについては、パスを指定せずにアセンブリをリフレクティブにロードすることをお勧めします。アセンブリがロードされた場合、GAC にあると想定しても安全です。

お役に立てれば

乾杯、DK

于 2013-01-04T20:06:57.420 に答える