我正在构建一个Electron应用程序并使用npm包电子构建器来构建Windows的应用程序和安装程序。我正在尝试使用CSC_LINK
和CSC_KEY_PASSWORD
环境变量来对应用进行签名,如下所述:https://github.com/electron-userland/electron-builder#travis-appveyor-and-other-ci-servers
首先尝试错误和堆栈跟踪:
Unhandled rejection Error: unable to verify the first certificate
at Error (native)
at TLSSocket.<anonymous> (_tls_wrap.js:1065:38)
at emitNone (events.js:80:13)
at TLSSocket.emit (events.js:179:7)
at TLSSocket._init.ssl.onclienthello.ssl.oncertcb.TLSSocket._finishInit (_tls_wrap.js:593:8)
at TLSWrap.ssl.onclienthello.ssl.oncertcb.ssl.onnewsession.ssl.onhandshakedone (_tls_wrap.js:425:38)
From previous event:
at Object.downloadCertificate (C:\projects\presentation\Electron\node_modules\electron-builder\src\codeSign.ts:97:18)
...
然后我尝试设置环境变量NODE_TLS_REJECT_UNAUTHORIZED=0
,现在得到一个不同的错误:
Unhandled rejection Error: Request error, status 400: Bad Request
at ClientRequest.<anonymous> (C:\projects\presentation\Electron\node_modules\electron-builder\src\httpRequest.ts:36:16)
...
在电子制作工具httpRequest.ts
中调用的特定行似乎只是使用了Node的https模块:https.request(...)
https://github.com/electron-userland/electron-builder/blob/master/src/httpRequest.ts#L28
这让我相信Windows机器或证书存在问题。我在Windows 10上运行它,节点5.9.0。
答案 0 :(得分:1)
最好直接向https://github.com/electron-userland/electron-builder/issues提交问题以获得维护者的答复。我是活跃的当前维护者,不检查SO,所以,你不太可能快速得到答案;)
如果问题仍然存在,请提交文件:)
答案 1 :(得分:1)
不确定问题的根源是什么,但我能够通过将文件移动到Dropbox来使一切工作正常。我仍然需要设置NODE_TLS_REJECT_UNAUTHORIZED=0
和CSC_LINK
,而不需要引号:
成功:
SET CSC_LINK=https://www.dropbox.com/s/path/to/file.p12?dl=1
失败:
SET CSC_LINK="https://www.dropbox.com/s/path/to/file.p12?dl=1"
有关电子建设者GitHub问题讨论的链接,请访问:https://github.com/electron-userland/electron-builder/issues/291