問題 (Symptoms)
この問題は以下の兆候、および条件があります。
- Epic Games Launcher を起動し、Unreal Engine -> Library を選ぶと、”Project files not associated” というメッセージが表示される
- 前述のメッセージ ダイアログで “Fix Now” をクリックすると、”Error: Couldn’t update file associations” というダイアログが表示されて修正できない
- PowerToys を使っている
- Epic Games Launcher を管理者権限で起動したり、管理者権限で起動したコマンド プロンプトから UnrealVersionSelector.exe /fileassociations を実行しても、同様に “Error: Couldn’t update file associations” というダイアログが表示されて関連付けを修正できない
解決方法
この問題が、この記事で述べている原因で起きている場合は、以下の方法で解決できます。
- PowerToys を起動し、File Management > File Explorer Add-ons のカテゴリから、Source code files (Monaco) を Off にする
- レジストリ キー HKCU\Software\Classes\.uproject を削除する
- Epic Games Launcher を一度完全に終了(※)してから起動し、Unreal Engine -> Library を選んで関連付けを修正する
(※)システムトレイに常駐している Epic Games Launcher も終了させる。または Windows を再起動する。
原因と解説
解決方法で Off にしている PowerToys の設定は、ソースコード ファイルのプレビューを表示するエクスプローラーのアドオンです。これを On にすると、PowerToys は .uproject に対する設定もレジストリに追加します。これにより HKCU\Software\Classes\.uproject が作られ、その下にもいくつかの設定が追加されます。
この PowerToys によって追加されたレジストリ キーは、Epic Games Launcher により検出され、.uproject ファイルの関連付けが正しくないと判断されるため、警告が表示されます。
関連付けを修正するよう選択すると、Epic Games Launcher は UnrealVersionSelector.exe /fileassociations を実行します。これが失敗するため、関連付けの修正は失敗します。UnrealVersionSelector.exe は RegDeleteKey() API を使ってこのキーを削除しようとしますが、RegDeleteKey() は空のレジストリ キーしか削除できないため、PowerToys が登録した(空ではない)このキーの削除に失敗します。
PowerToys によって作られた HKCU\Software\Classes\.uproject を手動で削除すれば、UnrealVersionSelector.exe /fileassociations は成功し、Epic Games Launcher は関連付けの不正を検出しなくなります。
しかし、PowerToys のソースコード ファイル プレビュー機能を有効にしていると、次回の PowerToys の起動時に、再び HKCU\Software\Classes\.uproject およびその下にレジストリ キーが作られるため、Epic Games Launcher はそれを関連付けの不正として検出します。