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
- 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-builderにissueがあります。
▼ Windows Security からフォルダを除外した様子。
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.
おわり
【Electron】PCのスリープと起動イベントを検知する
ElectronNodejsJavaScriptTypeScriptschedule2021-09-06