ぷろじぇくと、みすじら。

Visual Studio 2017のアップデートや変更でエラーが発生する

Created at:

以前から手元の環境でVisual Studio 2017をアップデートすると一部のコンポーネントのインストールに失敗するということが起きていて、一部の機能が正常に動作しないのでなんとかした話です。

まずエラーの発生時にメッセージを見るとMicrosoft.VisualCpp.CRT.Appx.Msi,version=14.10.25506.0のインストールに失敗していることが分かりました。

Package 'Microsoft.VisualCpp.CRT.Appx.Msi,version=14.10.25506.0' failed to install.
    Search URL
        https://aka.ms/VSSetupErrorReports?q=PackageId=Microsoft.VisualCpp.CRT.Appx.Msi;PackageAction=Install;ReturnCode=1603
    Details
        MSI: C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualCpp.CRT.Appx.Msi,version=14.10.25506.0\VC_CRT.Appx.msi, Properties:  REBOOT=ReallySuppress ARPSYSTEMCOMPONENT=1  MSIFASTINSTALL="7"  VSEXTUI="1"  VS7.3643236F_FC70_11D3_A536_0090278A1BB8="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise" 
        Return code: 1603
        Return code details: Fatal error during installation.
    Log
        C:\Users\Tomoyo\AppData\Local\Temp\dd_setup_20170819173137_003_Microsoft.VisualCpp.CRT.Appx.Msi.log
    Impacted workloads
        Universal Windows Platform development (Microsoft.VisualStudio.Workload.Universal,version=15.0.26720.2)
    Impacted components
        Universal Windows Platform tools (Microsoft.VisualStudio.Component.UWP.Support,version=15.0.26621.2)
        Universal Windows Platform tools for Cordova (Microsoft.VisualStudio.ComponentGroup.UWP.Cordova,version=15.0.26711.1)
        Universal Windows Platform tools for Xamarin (Microsoft.VisualStudio.ComponentGroup.UWP.Xamarin,version=15.0.26606.0)

さらにメッセージに書かれているログファイルを見てみると以下のようなメッセージが残っていました。

MSI (s) (2C:68) [17:32:18:305]: Product: Visual C++ Library CRT Appx Package -- Error 1714. The older version of Visual C++ Library CRT Appx Package cannot be removed.  Contact your technical support group.  System Error 1612.

どうやら旧バージョンの"Visual C++ Library CRT Appx Package"のアンインストールに失敗しているようです。よく見るとそのログの少し上にWarning: Local cached package 'C:\WINDOWS\Installer\68f56c6.msi' is missing. とありVisual C++ Library CRT Appx Packageのインストール元となったmsiのキャッシュがないといったメッセージも残っています。

強制的にパッケージをアンインストールする

ともあれこのパッケージが悪そうなのでアンインストールしますが、通常の手順ではアンインストールできないので少し手間をかける必要があります。

パッケージのIDを調べる

まずはアンインストールするパッケージのIDを調べる必要があります。そのためのツールをMicrosoftの人がUsing MsiInv to gather information about what is installed on a computerというエントリで公開しているのでこれをダウンロードします。

このツールをダウンロードしてエントリにあるように以下のように実行してファイルに書き出します。

.\msiinv.exe -p > output.txt

書き出したらその結果から "Visual C++ Library CRT Appx Package" で "Local package" が上記ログにあった見つからないファイルである "68f56c6.msi" (環境によっては異なる) となっているものを探し、そのProduct codeをメモしておきます。

修復ツールでアンインストールする

次にMicrosoftのサポートページからインストール/アンインストールの修復ツールをダウンロードします。

ダウンロードしたものを開くとトラブルシューターが起動するので、問題の種類として"Uninstalling"を選択します。しばらくするとインストール済みのパッケージの一覧が表示されます。

パッケージ名にマウスカーソルをホバーするとGUID的なものが表示されるので、先ほどのProduct codeとおなじものを探し出し、選択して、ウィザードを続けます。しばらくまってアンインストールが完了すれば出来上がりです。

あとはVisual Studioのアップデートや変更でエラーが発生しないことを確認できればめでたしめでたしです。