こんにちは。エクセルソフトの田淵です。
開発用マシンに MS SQL Server 2017 Developer Edition をインストールしていた時に、以下のエラーが出てインストールができませんでした。
結論から言うと、私の場合は、Visual Studio 2017 をインストールした時に一緒にインストールされた(と思われる)「Visual Studio 2017 用 Microsoft Visual C++ 再頒布可能パッケージ」を削除したらインストールできた。でした。
汎用的な書き方をすると、
VC++ 2015 再頒布パッケージ(=Visual Studio 2015 用 Microsoft Visual C++ 再頒布可能パッケージ)を同時にインストールするインストーラーは、VC++ 2017 再頒布パッケージ(=Visual Studio 2017 用 Microsoft Visual C++ 再頒布可能パッケージ)がインストールされているとダウンロードに失敗してインストールに失敗する。
です。
経緯
え、こんなことある?と思って、エラーを見てみると、「Microsoft Visual C++ 2015 再頒布可能パッケージ」のインストールエラーとのこと。
再頒布パッケージって、アップデートが色々あって、どれが一番新しいのかわかりづらいですよね。探したら再頒布パッケージの最新版のリンクが纏まっているページ 最新のサポートされる Visual C++ のダウンロード を見つけたので、このページにあったリンク Visual Studio 2015 Update 3 用 Microsoft Visual C++ 再頒布可能パッケージ をダウンロードしてインストールしてみました。
んんん??別のバージョンが入っているからインストールできない…??
以下のログが出ていました。
[4BC4:1604][2018-12-11T10:21:58]i001: Burn v3.7.3813.0, Windows v10.0 (Build 17134: Service Pack 0), path: C:\Users\<ユーザー名>\Downloads\vc_redist.x64.exe, cmdline: '' [4BC4:1604][2018-12-11T10:21:58]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\<ユーザー名>\AppData\Local\Temp\dd_vcredist_amd64_20181211102158.log' [4BC4:1604][2018-12-11T10:21:58]i000: Setting string variable 'WixBundleOriginalSource' to value 'C:\Users\<ユーザー名>\Downloads\vc_redist.x64.exe' [4BC4:1604][2018-12-11T10:21:58]i000: Setting string variable 'WixBundleOriginalSourceFolder' to value 'C:\Users\<ユーザー名>\Downloads\' [4BC4:1604][2018-12-11T10:21:58]i000: Setting string variable 'WixBundleName' to value 'Microsoft Visual C++ 2015 Redistributable (x64) - 14.0.24212' [4BC4:1604][2018-12-11T10:21:59]i100: Detect begin, 10 packages [4BC4:1604][2018-12-11T10:21:59]i000: Setting version variable 'windows_uCRT_DetectKey' to value '10.0.17134.319' [4BC4:1604][2018-12-11T10:21:59]i000: Setting numeric variable 'windows_uCRT_DetectKeyExists' to value 1 [4BC4:1604][2018-12-11T10:21:59]i102: Detected related bundle: {427ada59-85e7-4bc8-b8d5-ebf59db60423}, type: Upgrade, scope: PerMachine, version: 14.16.27012.6, operation: Downgrade [4BC4:1604][2018-12-11T10:21:59]i108: Detected compatible package: vcRuntimeMinimum_x64, provider: Microsoft.VS.VC_RuntimeMinimumVSU_amd64,v14, installed: {3ECD99CB-EDAF-45DA-AD9C-2C4875F375FB}, version: 14.16.27012, chained: {FAAD7243-0141-3987-AA2F-E56B20F80E41} [4BC4:1604][2018-12-11T10:21:59]i103: Detected related package: {3ECD99CB-EDAF-45DA-AD9C-2C4875F375FB}, scope: PerMachine, version: 14.16.27012.0, language: 0 operation: Downgrade [4BC4:1604][2018-12-11T10:21:59]i108: Detected compatible package: vcRuntimeAdditional_x64, provider: Microsoft.VS.VC_RuntimeAdditionalVSU_amd64,v14, installed: {DF5B1280-A057-4536-9D03-3BCAA0D4C6F0}, version: 14.16.27012, chained: {F20396E5-D84E-3505-A7A8-7358F0155F6C} [4BC4:1604][2018-12-11T10:21:59]i103: Detected related package: {DF5B1280-A057-4536-9D03-3BCAA0D4C6F0}, scope: PerMachine, version: 14.16.27012.0, language: 0 operation: Downgrade [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.3 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.3 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.2 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.2 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.1 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.1 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.0 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i052: Condition '(VersionNT = v6.0 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' evaluates to false. [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: vcRuntimeMinimum_x64, state: Obsolete, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: vcRuntimeAdditional_x64, state: Obsolete, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: Windows81_x86, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: Windows81_x64, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: Windows8_x86, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: Windows8_x64, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: Windows7_MSU_x86, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: Windows7_MSU_x64, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: WindowsVista_MSU_x86, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i101: Detected package: WindowsVista_MSU_x64, state: Absent, cached: None [4BC4:1604][2018-12-11T10:21:59]i052: Condition 'VersionNT64 >= v6.0 OR (VersionNT64 = v5.2 AND ServicePackLevel >= 1)' evaluates to true. [4BC4:1604][2018-12-11T10:21:59]i199: Detect complete, result: 0x0 [4BC4:2B8C][2018-12-11T10:22:10]e000: Error 0x80070666: Cannot install a product when a newer version is installed.
ログで気になったのは、ダウングレードしようとしているバージョンが「14.16.27012.6」で、これって C++ 2017 の再頒布パッケージですよね。実際、私の環境には C++ 2015 のパッケージは入っていませんでした。
また、SQL Server インストーラーに C++ 2015 のインストールをさせない(=VC 2017 のライブラリを参照するようにするとか?)事も、さっとはできないっぽかったので、VC++ 2015 のパッケージをインストールできるように、VC++ 2017 パッケージを削除しました。ついでに VC++ 2013 のパッケージが複数入っていたので、それも最新だけ残して削除してます。
で、再度 C:\SQLServer2017Media\Developer_JPN
にダウンロードされたインストールメディアからインストールしてみました。
おおおおおおお!!やったぜ。
まとめ
ということで、冒頭に書いたとおり、私の場合は、Visual Studio 2017 をインストールした時に一緒にインストールされた(と思われる)「Visual Studio 2017 用 Microsoft Visual C++ 再頒布可能パッケージ」を削除したらインストールできた。でした。
アンインストールした VC++ 2017 のパッケージも 最新のサポートされる Visual C++ のダウンロード のページからインストーラーをダウンロードして再度インストールしました。
と、ここで衝撃の事実w VC++ 2017 再頒布パッケージをインストールすると、VC++ 2015 再頒布パッケージが消えちゃうw 同じファイルとして認識されているから、VC++ 2015 パッケージをインストールしようとすると、VC++ 2017 の再頒布パッケージをダウングレードしようとしたのかー。
結果として、最終的にインストールされている VC++ の再頒布パッケージは最初とほぼ同じようになりましたw
一通り SQL Server 関連のツールを起動してみたけど問題なさそうなので、これで終了とします。
今時こんなインストールでのコンフリクト問題とか発生するんですね…
宣伝
エクセルソフトでは様々な開発ツールを取り扱っていますが、Microsoft SQL と関係ありそうな製品といえば、、、
CData API Server です。MySQL、PostgreSQL、MS SQL、Oracle などに接続し、一瞬でデータを操作する Web API を作れる製品です。ご興味あれば触ってみてください。
API を作ったら、API Gateway の Kong も見ていただけると嬉しいですw
以上です。