8

Visual C ++ Runtime8.0sp1に依存するカスタムアクションを使用するInstallShieldインストールがあります。以前は、MicrosoftがVisualStudioで提供しているマージモジュールを使用してランタイムをインストールできました。Visual C ++ Runtime 8.0 sp1のサイドバイサイドインストールがVistaで機能する方法に基づいて、ランタイムはインストールのコミットシーケンスまで使用できません。

つまり、カスタムアクションの実行をコミットシーケンスに移動するか(問題が発生した場合、このシーケンス中にインストールをロールバックできないため、望ましくありません)、InstallShield前提条件を使用してインストールする前にVisualC++ランタイムをインストールする必要があります。 。

Visual C ++ランタイムを前提条件としてインストールしたいのですが、その前提条件はInstallShieldによって提供されていないため、独自に作成する必要がありました。ランタイムをインストールするための前提条件を構成する方法を理解できましたが、ランタイムが既にインストールされているかどうかを判断する方法がわかりません。これを判断するために確認できるレジストリキーまたはファイルバージョンはありますか?

4

1 に答える 1

11

Visual C++ ランタイム 8.0およびVisual C++ ランタイム 8.1の検出について説明しているブログ投稿を見つけました。基本的に、MSI Automation Interface を使用して、各ランタイムの製品コードを探すことができます。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode]を探すこともできます。 [ProductCode] は、検出しようとしているランタイムの製品コードです (例: {7299052b-02a4-4627-81f2- 1818da5d550d} は、8.0 sp1 ランタイムの x86 バージョンの製品コードです)。

これらのメソッドは、ランタイム再頒布可能パッケージがインストールされているかどうかを検出するためにのみ機能します。これらのメソッドが示していない場合でもランタイムがインストールされる可能性があります (たとえば、再配布可能パッケージを使用する代わりにマージ モジュールとしてインストールされた場合)。ただし、この場合、再配布可能パッケージをインストールしても問題はありません。 .

于 2009-02-20T15:11:41.957 に答える