在 macOS 上為單檔案 JavaScript 執行檔進行程式碼簽名
解決執行 JavaScript 執行檔時出現的“無法開啟,因為來自未識別的開發者”Gatekeeper 警告。
使用 --compile 標誌編譯你的執行檔。
shell
bun build --compile ./path/to/entry.ts --outfile myapp
列出可用的簽名身份。在後續步驟中,你將把其中一個傳遞給 codesign。此命令需要 macOS。
terminal
security find-identity -v -p codesigning
Text
1. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "Developer ID Application: Your Name (ZZZZZZZZZZ)"
1 valid identities found
可選,但推薦:建立一個包含必要許可權的 entitlements.plist 檔案,以保證 JavaScript 引擎正常工作。
entitlements.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
使用 codesign 命令對你的執行檔進行簽名並驗證其有效性。
terminal
codesign --entitlements entitlements.plist -vvvv --deep --sign "XXXXXXXXXX" ./myapp --force
codesign -vvv --verify ./myapp
有關 macOS 程式碼簽名的更多資訊,請參閱 Apple 的程式碼簽名文件。有關使用 Bun 建立獨立執行檔的詳細資訊,請參閱 獨立執行檔。本指南要求 Bun 版本 1.2.4 或更新版本。