#msiを使用したインストールでハマった
VisualStudio2019をインストールしようとしたら、突然現れたエラーと延々格闘したのでメモ。
##エラー内容
VisualStudio Installerでインストールを進めようとしたら、10秒くらいでエラーで落ちる。
その内容が以下
\Microsoft.VisualStudio.MinShell.Msi.Resources.msi のインストールはソフトウェア制限ポリシーで許可されていません。Windows インストーラーでは制限されていない項目のみインストールできます。ソフトウェア制限ポリシーによって返された承認レベルは 0x0 でした (返された状態: 0x800b010c)。
つまり、Microsoft.VisualStudio.MinShell.Msi.Resources.msiが叩けないってことらしい。
msiを叩けないことなんて初めてなので、手動で同じmsiを叩いてみたら、確かに叩けず、以下のエラー。
システム管理者によりこのプログラムはブロックされています。詳細はシステム管理者に問い合わせてください。
え。2017は問題なく入れられたし、ほかのmsiは叩けるし、PCから見えるメモリは足りてるし、ユーザーの権限も十分あるし・・・なんで?
##やったこと
VisualStudioをインストールしようとして、制限ポリシーで引っかかるなんて意味わからん。
周りの人はハマってないし。と思いつつ、
ローカルセキュリティポリシー>ソフトウェアの制限のポリシー>強制>強制のプロパティの変更
管理者権限の確認と管理者実行
といった、日本語で出てくる制限ポリシーで検索できる解決策はほとんど試した。でも解決できなかった。
##原因
これだった。
https://support.microsoft.com/en-us/help/925336/fix-error-message-when-you-try-to-install-a-large-windows-installer-pa
つまり、Windowsインストーラプロセスに、.msiパッケージまたは.mspパッケージが正しく署名されていることを確認するのに十分な連続仮想メモリがないときに発生するエラー、とのこと。
確かに、軽いmsiは叩けるけど、重いmsiは叩けなくなっていた。
##解決法
レジストリエディターのPolicyScopeの値を書き換えることで解決しました。
!レジストリの値を書き換えるのは自己責任でお願いします!
↑のMicrosoftサポートサイトのエラー回避手順の中の、
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers
以下にある、PolicyScopeファイルを編集し、値のデータを1に変更。
この作業だけでインストールできない問題は解決しました。
インストールできたら値はちゃんと戻してね、と書いてあるので戻しましょう。
なんでメモリが足りないのかは引き続き要調査。。。