ElectronのMacの手動公証

1766366102

 

署名はローカルで行うのでまず失敗することはない。

問題はAppleで、公証のレスポンスがあまりに遅すぎることが多い。

稀に10〜30分で完了することもあるが、ほぼほぼ、1〜3日かかる。

散々待った挙句、Rejected だったり Invalid だと笑えない。

こんなものに付き合ってたら時間を浪費するだけだ。

デベロッパーのサポートもとにかく何もしない感じで全く役に立たない。

Windowsのアプリに比べてMacのアプリが極端に少ない意味がよくわかる。

 

ということで、署名付きの .app ができたら、一気に20〜30個くらい手動で公証に送っておき、後でどれか一つでも成功してたらチケットが発行されるので、Stapleすればいい。

という考えに辿り着いた。

 

調べたところ、1日のレート制限は75回のようだ。

70回くらい送ってもいいが、最初は20個とかで様子を見てみる。

 

公証の流れ

.appに署名がついているか確認

zipを手動で作成

手動で公証に送信

一度に20個送る場合

 

.appに署名がついているか確認

まずはBuildした後に、.appに署名がきちんとついているか確認

cd dist

codesign -dv --verbose=2 mac-arm64/APP_NAME.app

 

zipを手動で作成

.app から zip を手動で作成

ditto -c -k --keepParent mac-arm64/APP_NAME.app APP_NAME.zip

 

手動で公証に送信

--wait オプションを付けると、そのまま待機。待っている間に公証に通れば、自動でdmg生成までいける。

xcrun notarytool submit APP_NAME.zip --apple-id "$APPLE_ID" --password "$APPLE_APP_SPECIFIC_PASSWORD" --team-id "$APPLE_TEAM_ID" --wait

途中でやめたい場合は、control + C もしくは、ターミナルを閉じる。

その場合、Appleのサーバーでは公証手続きが続行されている。

 

一度に20個送る場合

for i in {1..20}; do
    xcrun notarytool submit APP_NAME.zip --apple-id "$APPLE_ID" --password "$APPLE_APP_SPECIFIC_PASSWORD" --team-id "$APPLE_TEAM_ID" &
done
wait

 

wait をつけると、送信完了の確認までできる。
省略すると、即完了。

 

そのままPCも閉じて暫く放置。

 

ログを確認

時々、ログを確認する。

xcrun notarytool history --apple-id "$APPLE_ID" --password "$APPLE_ID_PASSWORD" --team-id "$APPLE_TEAM_ID" | head -40

40行だけ見る。
全部見たい場合は、

xcrun notarytool history --apple-id "$APPLE_ID" --password "$APPLE_ID_PASSWORD" --team-id "$APPLE_TEAM_ID"

 

詳細を確認

失敗したやつは失敗した理由を見るためにID指定で詳細を確認

xcrun notarytool log b4e89241-d4e7-4379-8a52-4d277b45173e --apple-id "$APPLE_ID" --password "$APPLE_ID_PASSWORD" --team-id "$APPLE_TEAM_ID"

 

 

Stapleする

時々ログを確認し、どれか一つでも成功してたら後で、手動でStapleする。cd 

 

.appのあるディレクトリに移動

cd dist/mac-arm64

 

Staple

xcrun stapler staple APP_NAME.app

 

.dmgファイルを作成

create-dmgを使って.dmgファイルを作成する。

create-dmg \
  --volname "APP_NAME" \
  --window-size 600 400 \
  --icon-size 100 \
  --icon "APP_NAME.app" 150 190 \
  --app-drop-link 450 185 \
  APP_NAME.dmg \
  APP_NAME.app

 

 確認

 xcrun stapler validate APP_NAME.app

 

公証はzip圧縮して送信し、.appに対して行われる。
.dmgに公証はできない。

 

https://developer.apple.com/jp/

https://appstoreconnect.apple.com/