ChocolateyでVimを更新するときにエラー終了する問題の対策方法(gvimext.dllを使っているプロセスを探す)
どちらかというと PowerShell スクリプトの方にフォーカスをして記事にまとめました:
調べたいこと
ChocolateyでVimの更新をしていると、gvimext.dll
が利用中なので、更新に失敗したというニュアンスのエラーメッセージが表示され、choco upgrade
がエラー終了する。この問題を解決したい。
ついでに、このDLLは何で、誰が使っているのか確認したい。
エラーの内容
ERROR: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Cannot remove item C:\tools\vim\vim90\GvimExt64\gvimext.dll: Access to the path 'gvimext.dll' is denied.
The upgrade of vim was NOT successful.
この gvimext.dll
は Expolorer のコンテキストメニューに Vim 関連のリンクを出すために使われているようだ:
参考:
/RestartExplorer - Restart Explorer to unlock GVimExt.dll used for Edit with Vim context menu feature.
choco upgrade -y vim --params "/RestartExplorer"
としても問題が解決しないので、その他のファイルがDLLをロックしている模様。
しょうがないので、DLLを使っているプロセスを確認する PowerShell スクリプトを作成:
参考にしたもの:
これで特定した利用プロセスを taskkill などを使って個別にKillすれば、とりあえず問題は解決する。
しかし、できれば chocolatey のスクリプト側で対応してほしいものだ。
一旦 Close しておく。
ちなみに、Expolorer のコンテキストメニューを流用するような種類のソフトウェアが検索に引っかかる。たとえば Tablacus Explorer