環境変数HOMEが存在すると、HTML5パッケージ化が出来ない

UE4のバージョン4.11、4.12、4.13で、HTML5のパッケージ化が失敗するようになっていました。
4.10だと問題は起きません。
環境はWindows10 Professional版です。

再現手順は、

  1. コントロールパネルのシステムから、環境変数HOMEに適当なフォルダを設定する
  2. FPSテンプレート(デスクトップ/ハイエンド)のプロジェクトを新規作成
  3. そのままHTML5を指定してパッケージ化
  4. .emscripten が存在しないというエラーが出て失敗
  5. HOMEで指定したフォルダに.emscripten というファイルが出来ている

という手順です。
一部伏せ字にしたログを添付します。
HTML5パッケージ化失敗のログ

英語で質問しているのを見つけた、この方も多分同じ原因ではないかと思います。

とりあえず環境変数HOMEを消せば100%パッケージ化に成功するようになりました。
ただ、環境変数にHOMEがないと、他のアプリを使う時に支障があるので、出来ればHOMEを残したままで上手く動くようにしたいです。

なにかいい方法はないでしょうか?

ご報告ありがとうございます。

こちらでもHOMEが存在するときにWindowsでHTML5パッケージ化に失敗する現象を確認しました。UE-36717として開発者データベースに報告しました。

調査したところ、emscriptenのshared.pyの中でCONFIG_FILE = os.path.expanduser(EM_CONFIG) としてコンフィグファイルの場所を展開していました。HOMEが存在しないときはパッケージツールが値を設定しているUSERPROFILE環境変数の値を使って展開するのですが、HOMEが存在するときはHOMEの値が優先して使われているようです。そのため予期した場所に設定ファイルが作成されない→設定ファイルがないエラーでパッケージが失敗するという現象になります。

C:\Program Files (x86)\Epic Games\4.13\Engine\Extras\ThirdPartyNotUE\emsdk\emscripten\1.35.0\tools\shared.py

C:\Program Files (x86)\Epic Games\4.12\Engine\Source\ThirdParty\HTML5\emsdk\emscripten\1.35.0\tools\shared.py

正式な修正としてはおそらくパッケージツールでの値の設定、渡し方を変更することになると思います。

ただ、現状のビルドで回避するのであればshared.pyの

CONFIG_FILE = os.path.expanduser(EM_CONFIG)

CONFIG_FILE = os.path.expandvars(‘${USERPROFILE}/.emscripten’)

といったようにUSERPROFILEを常に使うように変更すれば、あくまでも一時的な回避策としてですが、HOME環境変数が存在してもパッケージが成功するようにはできるのではないかと思います。

ありがとうございます。

こちらの問題ですが修正が行われました。4.16に含まれる予定です。