我有一个使用 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应用程序应该是一个众所周知的解决方案,所以我犹豫是否开始黑客攻击我自己的解决方案 .
综上所述:
-
我正在Windows上构建我的应用程序 .
-
我的证书位于此处:
${HOME}/certificates/certificate.pfx
-
我的密码位于此处:
${HOME}/certificates/certificate_pw.txt
-
我可以使用
npm run ewin
成功构建unsigned .
如何添加将构建已签名Windows应用程序的 ewinsign
命令?
2 回答
如果您想使用该命令并尝试使用Windows替换,那么您将寻找以下内容:
set
是用于创建Windows环境变量(而不是导出)的命令type
相当于windows的bash 'cat' .什么是适合您?这是在您的"C:\Users"您的用户名“目录中吗?如果是这样,您可以使用
%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"部分中设置:
您可能必须使用这些值来使某些工作正常,但基于文档,我就是这样做的 . 引用父选项here
我最终编写了一个设置环境变量的bat脚本包装器 . 这更容易调试,因为我可以添加
env
语句来查看环境变量的设置 .这是脚本:
特别值得注意的是
=<
批处理语法将文件读入变量 . 和/p
语法只读一行 .