电子应用程序恶名化.无法在其他机器上打开臭名昭著的电子应用程序



目前我正在使用电子构建器("电子构建器":"^22.9.1"(和电子notorize("电子notorize&":^1.0.0(包为Mac开发notorize电子应用程序。生成成功通过。使用检查应用程序签名和恶名状态

pkgutil --check-signature /Path_to_App/My_App.app

Package "XXXXXXX":
Status: signed by a certificate trusted by macOS
Certificate Chain:...

spctl -a -t exec -vvv /Path_to_App/My_App.app 
/Applications/XXXXXX.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: XXXXXXXX

告诉该应用程序已签名并经过公证。但当我在另一台机器上打开它时,我会弹出一条消息,因为无法验证开发人员,所以无法打开应用程序。我在build-config和plist文件中尝试了不同的选项,但仍然无法理解这个问题的原因。我在package.json 中的构建配置

"build": {
"appId": "com.XXXX.XX",
"productName": "XXXXXXX",
"afterSign": "electron/notarize.js",
"extends": null,
"buildDependenciesFromSource": true,
"files": [
"build/**/*"
],
"directories": {
"buildResources": "assets"
},
"mac": {
"category": "public.app-category.productivity",
"icon": "build/icon.icns",
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist",
"electronLanguages": [
"en"
],
"target": ["dmg"]
},
"dmg": {
"sign": false
},

和权利。mac.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>
<!-- https://github.com/electron/electron-notarize#prerequisites -->
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<!-- https://github.com/electron-userland/electron-builder/issues/3940 -->
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.inherit</key>
<true/>
<key>com.apple.security.automation.apple-events</key>
<true/>
<key>com.apple.security.device.audio-input </key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.device.microphone</key>
<true/>
<key>com.apple.security.device.bluetooth</key>
<true/>
</dict>
</plist>

我通过以下操作使其工作:

在package.json中,在";mac":

"asarUnpack": "**/*.node"

这将告诉构建器对这些节点本机二进制文件进行解包,以便公证可以检查这些库。

在用于签名的授权文件中,REMOVE:

<key>com.apple.security.cs.disable-library-validation</key> <true/>

然后,它应该如预期的那样工作。

最新更新