Electron使用electron-builder打包签名后软件无法正常更新
windows打包基本配置:
"win": { "icon": "build/icons/icon.ico", "target": [ { "target": "nsis", "arch": [ "x64", "ia32" ] } ], "verifyUpdateCodeSignature": false, "signingHashAlgorithms": [ "sha256", "sha1" ], "signDlls": true, "rfc3161TimeStampServer": "http://timestamp.digicert.com", "certificateFile": "ihuandu.pfx", "certificatePassword": "xxxxxx" },
主要参数说明:
'arch:代表需要打包的位数,win64代表打包64位的,ia32代表打包32位的,最好分开打包,因为一起打包的话最后出来的包是正常开发包的两倍。
'signingHashAlgorithms':代表加密的方式,一般分为'sha256'与'sha1'两种方式,都进行加密即可。
'rfc3161TimeStampServer':代表时间戳,一般使用'http://timestamp.digicert.com'来进行时间戳的覆盖即可
'certificateFile':证书的地址,必须位pfx格式(如何导出会在第二步的时候进行讲解)
'certificatePassword':证书的私钥密码,这个在配置证书的时候进行设置(第二步进行讲解)
问题:
由于现在的代码签名证书是存储在token中无法进行导出pfx证书,所以我们只能导出cer格式的不带私钥的证书。它可以对已经打包完的exe进行签名,很明显这对electron来说是不合适的。对打包完的exe进行签名,会导致无法升级的问题,所以需要在打包的时候就将证书打进去。
解决方法:
打开safenet 的软件,右键证书,导出cer格式的证书,然后修改后缀名为pfx,如导出的为ihuandu.cer,修改后缀名为ihuandu.pfx,放到项目的根目录下面,第一步的certificateFile修改为'ihuandu.pfx'即可(当然,ihuandu只是个例子,名字自定义)
进行打包
这个时候,windows上的签名已经可以了,运行你的打包命令吧!
npm run build
由于我们导出的是不带私钥的pfx证书,所以在打包过程中会弹出弹窗提示你需要输入密码,输入你在第二步的密码即可。全程中不能拔下来你的签名狗,不然签名会断开。
运行成功之后,在你的打包出来的exe上进行右击属性,即可看到签名成功:
如果您在签名过程中任何问题,可以随时联系我们的在线客服或者致电 400-9989-115,环度网信将热忱为您服务。