schedule2021-08-24

Electronのビルドで他のプロセスがファイルを利用しているためコード証明ツールがエラーになる問題 SignTool Error The file is being used by another process.

Windows10のPCでElectronのアプリをビルドすると、以下のように他のプロセスがファイルを利用しているためコード証明ツールがエラーになることがある。

SignTool Error: The file is being used by another process.
SignTool Error: An error occurred while attempting to sign: C:\my\app\dist_electron\__uninstaller-nsis-popup.exe

環境

  • Windows 10 Home
  • Windows Security
    • picture 1
  • vue-cli-plugin-electron-builder: ~2.0.0-rc.5
    • electronでVueが使えるプラグイン
    • electron-builder: ^21.2.0 -> 22.2.0 に依存しています。

vue-cli-plugin-electron-builderの内部でelectron-builderを利用してます。 electron-builderの最新もv22.11.7ですのでそこまで古いわけではなさそう。

原因と解消方法

ほとんどは Windows Security (Windows Defender) が原因です。 ウィルススキャンの対象からアプリのdistフォルダを除外すると解消できます。

electron-userland/electron-builder SignTool error: NSIS installer EXE is being used by another process #933

electron-builderにissueがあります。

▼ Windows Security からフォルダを除外した様子。

picture 2

Windows Defenderでウィルスの脅威を検知するからフォルダーを除外するとコード証明に成功するようになる。 これはインストーラ作成ツールのnsisを利用していると良く起きることらしいです。

ログ

yarn run v1.22.11
$ vue-cli-service electron:build
 INFO  Bundling render process:

...省略

 INFO  Building app with electron-builder:
  • electron-builder  version=22.9.1 os=10.0.19043
  • writing effective config  file=dist_electron\builder-effective-config.yaml
  • packaging       platform=win32 arch=x64 electron=9.3.4 appOutDir=dist_electron\win-unpacked
  • signing         file=dist_electron\win-unpacked\アプリ.exe certificateFile=./コード証明書.pfx
  • building        target=nsis file=dist_electron\アプリ Setup 1.1.7.exe archs=x64 oneClick=false perMachine=false
  • signing         file=dist_electron\win-unpacked\resources\elevate.exe certificateFile=./コード証明書.pfx
  •   Signing NSIS uninstaller  file=dist_electron\__uninstaller-nsis-popup.exe certificateFile=./コード証明書.pfx
  • First attempt to code sign failed, another attempt will be made in 15 seconds: Exit code: 1. Command failed: C:\Users\suzu6\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0\windows-10\x64\signtool.exe sign /tr http://timestamp.digicert.com /f ./コード証明書.pfx /fd sha256 /td sha256 /d アプリ /du https://github.com/Thincacti/popup /as /p 3febf4b19288639096481d6ce68fc7a08f6149979281cecfd44d423d4e10a6f9 (sha256 hash) /debug C:\my\app\dist_electron\__uninstaller-nsis-popup.exe       
SignTool Error: The file is being used by another process.
SignTool Error: An error occurred while attempting to sign: C:\my\app\dist_electron\__uninstaller-nsis-popup.exe

...省略

Number of files successfully Signed: 0
Number of warnings: 0
Number of errors: 1

SignTool Error: The file is being used by another process.
SignTool Error: An error occurred while attempting to sign: C:\my\app\dist_electron\__uninstaller-nsis-popup.exe

    at C:\my\app\node_modules\builder-util\src\util.ts:129:16
    at ChildProcess.exithandler (child_process.js:397:5)
    at ChildProcess.emit (events.js:400:28)
    at maybeClose (internal/child_process.js:1055:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

おわり