web-dev-qa-db-ja.com

Visual C ++ 2017 Redistributableがインストールされているかどうかを検出する方法

Microsoftが最新バージョンのレジストリエントリのパターンを変更した場合、Visual C++ 2017 Redistributableがマシンにインストールされているかどうかをどのように検出しますか?

ソフトウェアはVS2015を使用して記述されているため、私の目的はVC++ 2015Redistをインストールすることです。マシンでVC++ 2017Redistを正常に検出できる場合、VC++ 2015Redistのインストールをスキップします

12
Manjunath

2017 VC++再頒布可能インストールのアップグレード/ 2015インストールの置き換え

Visual Studio 2017 Redistributablesのインストールは、2015 Redistributablesの既存のインストールをアップグレードして置き換えます。これを確認したところ、2015年のインストールが[プログラムの追加と削除]から消え、レジストリ値(以下を参照)のバージョン番号が更新されました。さらに、 MSDNごと 、2017 VC++再頒布可能ファイルには、2015バージョンとのバイナリ互換性があります。

以下で説明するレジストリキーを確認することで、2015または2017がインストールされているかどうかを確認できます。これはx64システム用で、32ビットシステムの場合はWow6432Nodeなしで見てください。

キー:

64ビットVC++再頒布可能

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64

32ビットVC++再頒布可能の場合

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x86

プロパティと値は、32ビットと64ビットの両方のインストールで同じ(同じ形式)です。使用のレジストリ値:

Value          2015       2017 
Name      Val. Data  Val. Data
--------  ---------  ---------
Major            14         14
Minor             0         13
Bld           23026      26020

2017の@Minorとビルド(@Bld)の番号は、新しいパッチが更新されるにつれて変化し続けることに注意してください。

2015がインストールされていることを確認する場合は、キーを確認するだけで、@ Majorバージョンは14になります。

2017を確認する場合、存在しない場合はアップグレードを行うつもりで、@ Bld番号を確認し、少なくともインストール可能なバージョンでない場合は、先に進んで現在の2017バージョンをインストールします。 @Minorおよび@Bldバージョンの将来の更新が行われる可能性があることに注意してください-v14.11.25325がインストールされている別のコンピューター(2017バージョン)も入手しました。

9
CJBS

VC再頒布可能パッケージは joinedfor VisualStudio 2015-2019 になりました。新しいバージョン(2017など)がある場合、「古い」バージョン(たとえば、2015年のみ)をインストールしようとすると、エラー(この応答の終わり)が発生します。

@CJBSが書いたように、それはレジストリにそれ自体を書き込みますが、悲しいことに私は別の記録場所に気づきました(それもチェックしてください)。

32ビットVC++再頒布可能の場合

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86

64ビットVC++再頒布可能

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64

@Bld DWordレコードを読んで比較し、より新しいバージョンが必要かどうかを判断することをお勧めします:2015(Bld = 23026)2017(Bld = 26020)2019(Bld = 27820)


エラーメッセージ画像 :0x80070666-この製品の別のバージョンがすでにインストールされています。このバージョンのインストールを続行できません...

0
Mailos