我在使用Mac上使用Apple生成并存储在Mac钥匙串中的.p12证书在Mac上对Windows .exe构建进行代码签名时遇到问题。
我的电子生成器版本是:20.28.1 我要运行的目标版本是Windows ia32版本。
协同设计适用于Mac应用程序。但是,当尝试对Windows版本进行签名时,它无法对其进行签名。
如果可能的话,我想尝试在macOS机器上对Windows构建进行签名,因为我已经在文档中读到了这句话(我希望我已经正确阅读了吗?)
尝试进行代码签名后,我使用以下命令检查构建:
codesign -dv [path/to/app/appname].exe
总是得到(仅对于Windows构建,Mac应用程序可以正常运行):
code object is not signed at all
我同时在Mac和Windows上进行构建,但是对于Windows我目前仅针对ia32体系结构进行构建。这是我的配置配置在package.json中的样子
"build": {
"appId": "[my-app-id]",
"files": [
"public/**/*",
"node_modules/**/*",
"package.json"
],
"directories": {
"buildResources": "build/resources"
},
"mac": {
"category": "public.app-category.productivity",
"target": [
"dmg",
"zip"
],
"publish": {
"provider": "s3",
"bucket": "[BUCKET_NAME]",
"path": "my-path"
}
},
"win": {
"target": [
{
"target": "nsis",
"arch": [
"ia32"
]
}
],
"publish": {
"provider": "s3",
"bucket": "[BUCKET NAME]",
"path": "my-path"
}
},
"extends": null
},
这也是我的.env文件的外观,在其中为电子生成器加载环境变量:
export ENV_NAME=staging
export CSC_NAME='[certificatename]' #example 1A3JKJD89O
export CSC_LINK=./path/to/mycert/cert.p12
export CSC_KEY_PASSWORD='my-passowrd'
export WIN_CSC_LINK=./path/to/mycert/cert.p12
export WIN_CSC_KEY_PASSWORD='my-passowrd'
export CSC_IDENTITY_AUTO_DISCOVERY=true
export DEBUG=electron-builder
export AWS_ACCESS_KEY_ID=[AWSKEYID]
export AWS_SECRET_ACCESS_KEY=[AWSSECRETACCESSKEY]
export AWS_S3_ENDPOINT=[S3ENDPOINT]
最后,这是我运行的yarn命令,用于打包构建文件(这是在yarn脚本中)
export $(grep -v '^#' ./path/t/my/env/file/staging.env | xargs) && electron-builder -p never -mw --ia32
我不确定这里缺少什么吗?有人会想到我还需要做什么吗? 谢谢! :)
答案 0 :(得分:3)
据我了解,您必须使用兼容的证书:
https://www.electron.build/code-signing
要在Windows上签名应用,有两种类型的证书:
EV代码签名证书
代码签名证书
个人很难获得正确的证书。要获得适用于Windows的证书并不容易,我必须完成大量文书工作才能完成此工作。 我希望本文能使您的生活更轻松: https://blog.dcpos.ch/how-to-make-your-electron-app-sexy
转到“已签名的安装程序”部分
引用该文章:
要获取Windows签名证书,建议使用Digicert。的 Windows应用程序签名的文档非常糟糕。如果你走的话 使用错误的供应商,他们会要求您邮寄经过公证的 文书工作。这使得获取证书的过程缓慢而烦人。 Digicert更容易:他们只是通过认证邮件向您发送密码, 你去邮局,出示你的身份证去取,然后ba, 获得您的签名证书。
答案 1 :(得分:0)
对于在 Mac 上实际获取证书时遇到问题的任何人,以下是对我有用的方法:(我最终通过 Windows 获取它,通过 Mac 获取证书太麻烦了)
如果有人知道更简单的方法,请分享!