You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Script/Notarization_Mac/README.md
+69-16Lines changed: 69 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,11 +7,9 @@ This folder contains helper scripts for codesigning, notarizing, and stapling th
7
7
### Files
8
8
9
9
-`Effekseer_cert.sh`
10
-
-Codesigns the app bundle and bundled executables, creates `Effekseer.dmg`, and submits it for notarization with `xcrun notarytool` using a Keychain profile.
10
+
-Signs bundled executables that have any executable bit set with the app entitlements, signs `.dylib` files without entitlements, then signs the app bundle, creates a temporary zip for app notarization, creates `Effekseer.dmg`, and submits both for notarization with `xcrun notarytool` using a Keychain profile.
11
11
-`Effekseer_cert_check.sh`
12
12
- Checks the notarization status using the request ID with `xcrun notarytool` and the same Keychain profile.
13
-
-`Effekseer_cert_post.sh`
14
-
- Staples the notarization ticket to `Effekseer.dmg`.
15
13
-`Effekseer_notarytool_setup.sh`
16
14
- Stores App Store Connect credentials in the Keychain for later use by `notarytool`.
17
15
-`Effekseer_notarytool_log.sh`
@@ -46,11 +44,7 @@ If you want to use a different profile name, pass it as the second argument or s
46
44
sh Effekseer_cert.sh "Developer ID Application: Your Name (TEAMID)""my-notary-profile"
47
45
```
48
46
49
-
After notarization is approved, run:
50
-
51
-
```bash
52
-
sh Effekseer_cert_post.sh
53
-
```
47
+
`Effekseer_cert.sh` now performs the full flow, including stapling both the app bundle and the DMG in the correct order.
54
48
55
49
If you want to check the request status:
56
50
@@ -68,8 +62,39 @@ Notes:
68
62
69
63
- The scripts use `xcrun notarytool` and `xcrun stapler`.
70
64
-`Effekseer_cert.sh` expects the app bundle and related tools to already be built and placed under `Effekseer/`.
65
+
-`notarytool` does not accept a raw `.app` bundle, so the script creates a temporary zip archive for app notarization and removes it afterward.
71
66
-`Effekseer_notarytool_setup.sh` is the only script that handles the App-specific password, and it stores that secret in the Keychain for reuse.
72
67
-`Effekseer_notarytool_log.sh` is useful when `notarytool submit` returns a rejection and you need the JSON issue report.
68
+
- When `Effekseer_cert.sh` fails, it writes notarization logs to `Effekseer-app-notarytool-log.json` or `Effekseer-dmg-notarytool-log.json` if a request ID can be recovered.
69
+
-`Effekseer_cert.sh` now performs this full order: notarize app, staple app, create DMG from the stapled app, notarize DMG, staple DMG.
70
+
-`Effekseer_cert.sh` signs bundled executables and `.dylib` files first, then signs the app bundle and the DMG.
71
+
- If the app still shows the Gatekeeper warning, check whether the bundle was modified after signing or whether the quarantine attribute is still present.
72
+
73
+
### Troubleshooting
74
+
75
+
If the app cannot be opened on macOS, check these in order:
-`codesign` errors usually mean something changed after signing, or a bundled file was not signed correctly.
88
+
- If notarization complains about a specific bundled executable such as `createdump`, the leaf binary likely kept an ad hoc or incomplete signature. Re-sign the leaf binary before the app bundle.
89
+
-`spctl` failures usually mean Gatekeeper does not trust the bundle as distributed.
90
+
-`stapler validate` failures usually mean the notarization ticket was not attached to the app or DMG.
91
+
-`com.apple.quarantine` in `xattr` output means the file still has a downloaded/quarantined state.
92
+
93
+
If the issue persists, check the Gatekeeper log:
94
+
95
+
```bash
96
+
log show --last 1h --predicate 'process == "syspolicyd"'
0 commit comments