ottijp blog

electron-builderで作ったmacのアプリが起動時に「"<アプリ名>.app" will damage your computer. You should move it to the Trash.」となる場合の解決法

  • 2024-09-28

以前から公開しているMarkuPrevというアプリをローカルでビルドした後,アプリを起動しようとすると以下のようなメッセージで2つのダイアログが表示され,起動ができなくなりました. (スクリーンショットを撮り忘れました.)

The application “MarkuPrev.app” can’t be opened.

“MarkuPrev.app” will damage your computer. You should move it to the Trash.

TL;DR

Appleの開発者ライセンスの証明書がRevokeしていたので,新しい証明書をキーチェーンに入れたら直りました.

環境

以下のプラグインを使って,vue-cli-service経由でelectron-builderを使っています.

  • @vue/cli-service: 5.0.8
  • electron-builder: 24.13.3
  • vue-cli-plugin-electron-builder: 2.1.1

現象

yarn electron:build:mac(= vue-cli-service electron:build --mac)でmac用のアプリをビルドし,正常に終了したのでMarkuPrev.appファイルを開いたところ, 冒頭の2つのエラーダイアログが表示され,アプリが起動できませんでした.

今回,アプリケーションのソースコードは変更していますが,ビルドに関連するコードの変更やライブラリのアップデート等は行っていません.

また,ビルド時のコンソール出力を見ても,エラー等は出ていませんでした.

問題の特定

Console.appを使い,エラーダイアログが表示されたときのログを確認したところ,以下のようなログが出力されていました.

mac_vnode_check_signature: /Users/otti/src/github.com/ottijp/markuprev/dist_electron/mac-arm64/MarkuPrev.app/Contents/MacOS/MarkuPrev: code signature validation failed fatally: When validating /Users/otti/src/github.com/ottijp/markuprev/dist_electron/mac-arm64/MarkuPrev.app/Contents/MacOS/MarkuPrev:
  The code contains a Team ID, but validating its signature failed.
Please check your system log.

このログから,コード署名がうまくいっていないことを確信しました.

electron-builderでコード署名するときの証明書の場所

electron-builderのドキュメントを読むとちゃんと書いてありました.

On a macOS development machine, a valid and appropriate identity from your keychain will be automatically used.

cf. Code Signing - electron-builder

そこでキーチェーンを見ると,確かにRevokedと表示された証明書が存在しました. (スクリーンショットを撮り忘れました.)

最新の証明書のインポート

Apple Developerのアカウントページにログインし,証明書のページから TypeがDevelopmentの証明書をクリックしてDownloadボタンで証明書をダウンロードします.

apple dev01

apple dev02

ダウンロードした.cerファイルをダブルクリックすると,キーチェーンにインポートされます.

keychain

画像はRevoked証明書の削除後に撮ったもので,Revoked証明書もここに存在していました.

ビルドの再実行と起動

新しい証明書をキーチェーンに入れたあとでリビルドすると,無事アプリが起動できるようになりました.

ちなみに,現象が起きていた時に,仮にelectron-builderを25.0.5にアップデートしてみたところ,ビルド時にコード署名できない旨のエラーが出ることを確認しました. アップデートしていればもっと早く気付けたかもしれません.


ottijp
都内でアプリケーションエンジニアをしています
© 2024, ottijp