schedule2020-12-11

Electron-builderでパスに日本語を含んでいる場合はビルド出来ない

Electron-builderを利用してWindowsでアプリをビルドすると下記のようなエラーが出ることがあります。

Processing config: C:\Users\�鑺�E��\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\nsisconf.nsh
Processing script file: "<stdin>" (ACP)
Error output:

Error output:
!include: could not find: "C:\Users\鈴村\AppData\Local\Temp\t-lEActj\0-messages.nsh"       
Error in script "<stdin>" on line 75 -- aborting creation process

これはWindowsのユーザ名を日本語(またはASCII以外の文字コード)で登録している場合に起きます。 正確には、Windows向けのインストーラーが作れるNSISがASCII以外の文字列のパスに対応していないことが原因です。

ビルドする際にユーザ名/AppData/の配下に一時ファイルを作るが、そのパスUTF8だと読めずにエラーになる。

NSISの問題であり、対処方法は

  • AppDataがASCIIのパスになるよう移動する
  • ASCIIのユーザ名でアカウントを作成しなおす のどちらかしかありません。 %AppData%はシステムやアプリで使われているため。AppDataを移動するのは大変そうです。

ASCIIのユーザ名でアカウントを作成し直して解決しました。

この件のissue