Ant*_*rio 4 windows electron electron-builder
我在 Mac 上使用 Apple 生成并存储在 Mac 钥匙串中的 .p12 证书对 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
},
Run Code Online (Sandbox Code Playgroud)
这也是我的 .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]
Run Code Online (Sandbox Code Playgroud)
最后,这是我运行的用于打包构建的纱线命令(这是在纱线脚本中)
export $(grep -v '^#' ./path/t/my/env/file/staging.env | xargs) && electron-builder -p never -mw --ia32
Run Code Online (Sandbox Code Playgroud)
我不确定我在这里缺少什么?有没有人知道我还需要做什么?谢谢!:)
据我了解,您必须使用兼容的证书:
https://www.electron.build/code-signing
要在 Windows 上签署应用程序,有两种类型的证书:
EV 代码签名证书
代码签名证书
个人很难获得正确的证书。适用于 Windows 的证书并不容易获得,我必须通过大量文书工作才能完成。我希望这篇文章能让你的生活更轻松:https : //blog.dcpos.ch/how-to-make-your-electron-app-sexy
转到部分:签名安装程序
引用文章:
要获得 Windows 签名证书,我们推荐 Digicert。Windows 应用程序签名的文档非常糟糕。如果您选择了错误的供应商,他们会要求您将经过公证的文件邮寄给他们。这使得获得证书成为一个缓慢而烦人的过程。Digicert 更简单:他们只需通过 Certified Mail 向您发送密码,您去邮局,出示您的身份证件即可领取,然后,您将获得签名证书。