Electron使用electron-builder打包签名后软件无法正常更新

  • 首页
  • SSL证书、代码签名证书常见的问题

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证书,所以在打包过程中会弹出弹窗提示你需要输入密码,输入你在第二步的密码即可。全程中不能拔下来你的签名狗,不然签名会断开。

输入设备密码.png

运行成功之后,在你的打包出来的exe上进行右击属性,即可看到签名成功:


签名后的效果.png

如果您在签名过程中任何问题,可以随时联系我们的在线客服或者致电 400-9989-115,环度网信将热忱为您服务。