用的 Electron Forge 脚手架,好不容易搞定签名打包的问题,现在就差最后一步了,但是卡在 Transporter 的校验上了,说我的 plist 文件里面 CFBundleExecutable key 不合法,但是我检查了个遍都是和执行文件一样的名字,网上也没有找到任何有价值的信息。很难受,有知道的老哥吗。
能解决请一杯咖啡 (免费应用,本人不富有)
这是我的打包配置
packagerConfig: {
appBundleId: `ChrisFreeManDev-hotmail.com.${appName}`,
appCopyright: `© ${(new Date()).getFullYear()} ${appName}`,
buildVersion: '8',
executableName: appName,
appCategoryType: 'public.app-category.productivity',
asar: true,
osxUniversal: {
x64ArchFiles: 'leveldown.node',
},
osxSign: {
type: 'distribution',
identity: 'Apple Distribution: MyName (SomeCertID)',
provisioningProfile: './some-production.provisionprofile',
optionsForFile: () => {
return {
hardenedRuntime: true,
entitlements: './entitlements',
}
}
},
icon: './src/resources/icon/AppIcon'
},
rebuildConfig: {},
makers: [
new MakerPKG({
identity: '3rd Party Mac Developer Installer: MyName (SomeCertID)',
install: './out',
name: appName
}, ['mas'])
],
PS 发在 electron 节点没人看,一晚上才 10 个点击😫
1
NouveauNom 2023-08-16 13:37:11 +08:00
先看下.app 里面的 info.plist CFBundleExecutable 值是多少
|
2
NouveauNom 2023-08-16 13:37:32 +08:00
这个看样子是你目前没有这个值
|
3
ChrisFreeMan OP @NouveauNom 都有的主 plist 里面有 CFBundleExecutable, 然后在 Frameworks 下面的 4 个 helper 以及 Electron Framework 的 plist 都检查过了,所以我觉得很奇怪。。。
|
4
Belmode 2023-08-16 13:50:54 +08:00
|
5
Belmode 2023-08-16 13:53:02 +08:00
还有可能要考虑一下文件编码和 Unicode 零宽字符的问题
|
6
ChrisFreeMan OP @Belmode 他的第一个图片是针对 Xcode 的环境的,因为它是个占位符,Xcode 会在打包后自动填充,而我已经在打包后的应用检查过了,都没有问题,我在上面解释了。第二个图片也是错的,CFBundleExecutable 是指定的二进制可执行文件的。
|
7
ChrisFreeMan OP @Belmode 我的应用名称是纯英文的,编码都是 utf-8
|
8
NouveauNom 2023-08-16 13:57:56 +08:00
把 plist 发下看下,CFBundleExecutable 得值是什么,是否触发了关键词
|
9
ChrisFreeMan OP @NouveauNom
```xml <?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>CFBundleDisplayName</key> <string>Simark</string> <key>CFBundleExecutable</key> <string>Simark</string> <key>CFBundleIconFile</key> <string>electron.icns</string> <key>CFBundleIdentifier</key> <string>ChrisFreeManDev-hotmail.com.Simark</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>Simark</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>1.0.0</string> <key>CFBundleVersion</key> <string>8</string> <key>DTCompiler</key> <string>com.apple.compilers.llvm.clang.1_0</string> <key>DTSDKBuild</key> <string>22E245</string> <key>DTSDKName</key> <string>macosx13.3</string> <key>DTXcode</key> <string>1431</string> <key>DTXcodeBuild</key> <string>14E300c</string> <key>LSApplicationCategoryType</key> <string>public.app-category.productivity</string> <key>LSEnvironment</key> <dict> <key>MallocNanoZone</key> <string>0</string> </dict> <key>LSMinimumSystemVersion</key> <string>10.13</string> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> <key>NSBluetoothAlwaysUsageDescription</key> <string>This app needs access to Bluetooth</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>This app needs access to Bluetooth</string> <key>NSCameraUsageDescription</key> <string>This app needs access to the camera</string> <key>NSHighResolutionCapable</key> <true/> <key>NSMainNibFile</key> <string>MainMenu</string> <key>NSMicrophoneUsageDescription</key> <string>This app needs access to the microphone</string> <key>NSPrincipalClass</key> <string>AtomApplication</string> <key>NSQuitAlwaysKeepsWindows</key> <false/> <key>NSRequiresAquaSystemAppearance</key> <false/> <key>NSSupportsAutomaticGraphicsSwitching</key> <true/> <key>NSHumanReadableCopyright</key> <string>© 2023 Simark</string> <key>ElectronAsarIntegrity</key> <dict> <key>Resources/app.asar</key> <dict> <key>algorithm</key> <string>SHA256</string> <key>hash</key> <string>5a3b8dd2e1e307b64a7f84579e7fcc78552b1a8c7bb5a659108902410fd96fd8</string> </dict> </dict> </dict> </plist> ``` 这是主 plist |
10
BlackHole1 2023-08-16 14:03:16 +08:00
在 2019 年的时候,forge 修复了类似的问题:
1. https://github.com/electron/electron-packager/pull/1046 2. https://github.com/electron/forge/pull/1118 你可以确认下你的 forge 版本是否是最新的。如果不是尝试升级到最新。如果依旧不行的话,你可以尝试构建 DMG ,而非 PKG ,我怀疑是 MakerPKG 的问题 |
11
ChrisFreeMan OP @BlackHole1 我用的是 6.3.0 的版本,DMG 不能上传到 Transporter 耶,好像 DMG 是自由分发的格式类似 Zip ,就是方便拖入到应用库
|
12
BlackHole1 2023-08-16 14:14:46 +08:00
你是想公证还是想上架到 apple store ?如果是公证不需要 pkg 。
BTW ,你可以在打包之前输入: export DEBUG=* 方便看到详细的日志。 以及你可以在 electron/forge 里建立一个 issue |
13
ChrisFreeMan OP @BlackHole1 Transporter 就是用来上传到 App Store 的,forge issue 也已经提交了😂,我是走投无路才来 v 站的。实在不行我只有去翻 osxSign 的源码了😭
|
14
NouveauNom 2023-08-16 14:19:24 +08:00
换个名字试试吧,看不出来别的异常了
|
15
BlackHole1 2023-08-16 14:21:44 +08:00
@ChrisFreeMan #13 方便发下 issues 的 URL 么?
|
16
ChrisFreeMan OP |
17
ChrisFreeMan OP @NouveauNom 我试试吧
|
18
ChrisFreeMan OP @NouveauNom 一样的😭,总之还是谢谢了
|
19
sipt 2023-08-16 16:10:27 +08:00
```
optionsForFile: () => { return { hardenedRuntime: true, entitlements: './entitlements', } } ``` ./entitlements ? ./entitlements.plist ?? |
20
ChrisFreeMan OP @sipt 这里指向的应该是一个目录,因为签名需要有个父证书,和子证书。
```md entitlements/ - default.mas.child.plist - default.mas.plist ``` |
21
BlackHole1 2023-08-16 18:31:34 +08:00 5
我已经在 Issue 中评论了,为了让 V2EX 其他参与者了解,我这边把相关信息在这里进行同步。
---- 我基于你的 repo 进行测试后,一切正常,并没有出现你遇到的情况,如下图: https://user-images.githubusercontent.com/8198408/260978001-7931e439-db8e-44f8-b5ca-34586299cae2.png 但是在测试过程中,我发现了一些 bug 和优化项,你可以进行修改后再进行测试。 1. MakerPKG class 中的 install 应该是 /Applications 而不是 ./out ,这个参数的用途是安装 pkg 后,app 应该安装的目录,如果需要上传到 App Store 则这个值必须是 /Applications 2. optionsForFile 函数中的 entitlements 应该是一个文件,而非目录。关于这一点,可以见: https://github.com/electron/osx-sign/blob/013ca00893e13594b87fd66fe865793011453de9/src/util-entitlements.ts#L46-L49 3. 你其实不需要传入 optionsForFile ,因为 electron-osx-sign 会自动处理 entitlements 。 最终的改动如下图: https://github.com/electron/forge/assets/8198408/7b06a3ad-d23e-4ab0-8978-57ba8442baf2 |
22
ChrisFreeMan OP @BlackHole1 😂感谢大佬,确实通过了,我以为这个 install 路径是指 pkg 输出的路径。我是直接点外卖送你桌位上,你挑时间,还是我把咖啡钱转给你。❤️
|
23
BlackHole1 2023-08-16 18:58:18 +08:00
@ChrisFreeMan #22 解决了就好,咖啡就不用啦。也感谢你使用 Electron~
|
24
ChrisFreeMan OP @BlackHole1 🌹🌹🌹 必须用的,Electron 贼 TM 好用,从开头爽到结束,再也不想用 SwiftUI 了。
|