我有一个使用npm run ewin
在Windows上编译好的电子应用程序:
"scripts": {
"start": "electron main.js",
"pack": "build",
"ewin": "build --win --ia32 --x64",
"ewinsign": "export CSC_LINK=file:///${HOME}/certificates/certificate.pfx; export CSC_KEY_PASSWORD=\"$( cat ${HOME}/certificates/certificates_pw.txt )\"; npm run clean:win && build --win --ia32 --x64",
},
所以我添加了ewinsign
,试图让它在应用上签名。
我以ewinsign
为基础进行了讨论:
https://discuss.atom.io/t/signing-windows-app-installer/32511
ewinsign
因此错误而失败:
'export' is not recognized as an internal or external command,
operable program or batch file.
我真的没想到它会起作用,因为我在Windows上运行我的构建,而Windows上通常不提供bash命令。
签署Windows应用程序应该是一个众所周知的解决方案,所以我犹豫是否开始攻击我自己的解决方案。
总结:
${HOME}/certificates/certificate.pfx
${HOME}/certificates/certificate_pw.txt
npm run ewin
成功构建无符号。如何添加构建已签名Windows应用程序的ewinsign
命令?
答案 0 :(得分:0)
如果您想使用该命令并尝试使用Windows替换,那么您将寻找以下内容:
set
是用于创建窗口的命令
环境变量(而不是出口)type
相当于bash'cat'
视窗。 %USERPROFILE%
获得该值。结果代码如下所示:
"ewinsign": "set CSC_LINK=file:///%USERPROFILE%/certificates/certificate.pfx; set CSC_KEY_PASSWORD=\"$( type %USERPROFILE%/certificates/certificates_pw.txt )\"; npm run clean:win && build --win --ia32 --x64"
但是,我没有测试过该代码,因此我不确定它是否可行。
现在,我没有使用电子制造商签署代码,但我认为您将使用windows build options来强制执行证书。这将在package.json文件的“build”部分中设置:
"build":{
"appid":"yourid",
"asar": true,
"forceCodeSigning": true,
"win":{
"target": "...",
"publisherName": "..."
"certificateFile": "...",
"certificatePassword":"...",
"certificateSubjectName":"...",
"certificateSha1":"...",
"signingHashAlgorithms":"..."
}
}
你可能不得不使用这些值来获得一些工作,但根据文档,我就是这样做的。引用父选项here
答案 1 :(得分:0)
我最终编写了一个设置环境变量的bat脚本包装器。这更容易调试,因为我可以添加env
语句来查看环境变量的设置。
这是脚本:
set CSC_LINK=file://%USERPROFILE%/certificates/certificate.pfx
set /p CSC_KEY_PASSWORD=<"%USERPROFILE%/certificates/certificates_pw.txt"
npm run ewin
特别需要注意的是=<
批处理语法将文件读入变量。并且/p
语法只能读取一行。