Microsoftが最新バージョンのレジストリエントリのパターンを変更した場合、Visual C++ 2017 Redistributableがマシンにインストールされているかどうかをどのように検出しますか?
ソフトウェアはVS2015を使用して記述されているため、私の目的はVC++ 2015Redistをインストールすることです。マシンでVC++ 2017Redistを正常に検出できる場合、VC++ 2015Redistのインストールをスキップします
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バージョン)も入手しました。
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-この製品の別のバージョンがすでにインストールされています。このバージョンのインストールを続行できません...