首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows电子应用程序签名

Windows电子应用程序签名
EN

Stack Overflow用户
提问于 2017-04-13 13:06:57
回答 2查看 3.3K关注 0票数 0

我有一个使用npm run ewin在Windows上编译的电子应用程序

代码语言:javascript
复制
  "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失败:

代码语言:javascript
复制
'export' is not recognized as an internal or external command,
operable program or batch file.

我并没有真正期望它能够工作,因为我正在Windows上运行我的构建,而bash命令通常在Windows上不可用。

签署Windows应用程序应该是一个众所周知的解决方案,所以我不太愿意开始自己的解决方案。

总结如下:

  1. 我正在Windows上构建我的应用程序。
  2. 我的证书在这里:${HOME}/certificates/certificate.pfx
  3. 我有一个密码位于这里的文件:${HOME}/certificates/certificate_pw.txt
  4. 我可以成功地用npm run ewin构建未签名的文件。

我如何添加一个ewinsign命令来构建一个签名的Windows应用程序?

EN

回答 2

Stack Overflow用户

发布于 2017-05-26 23:40:44

最后,我编写了一个设置环境变量的bat脚本包装器。这更容易调试,因为我可以添加env语句来查看环境变量设置为什么。

下面是脚本:

代码语言:javascript
复制
set CSC_LINK=file://%USERPROFILE%/certificates/certificate.pfx

set /p CSC_KEY_PASSWORD=<"%USERPROFILE%/certificates/certificates_pw.txt"

npm run ewin

特别要注意的是将文件读入变量的=<批处理语法。以及只读取一行的/p语法。

票数 1
EN

Stack Overflow用户

发布于 2017-04-14 13:45:28

如果您想使用该命令并尝试使用windows替换,您将查找以下内容:

  1. set是用来创建windows环境变量(而不是导出)的命令。
  2. type相当于用于windows的bash 'cat‘。
  3. 你的家是什么?这是在您的“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构建选项来强制执行证书。这将在package.json文件的"build“部分中设置:

代码语言:javascript
复制
"build":{
    "appid":"yourid",
    "asar": true,
    "forceCodeSigning": true,
    "win":{
        "target": "...",
        "publisherName": "..."
        "certificateFile": "...",
        "certificatePassword":"...",
        "certificateSubjectName":"...",
        "certificateSha1":"...",
        "signingHashAlgorithms":"..."
    }

}

您可能需要使用这些值才能正常工作,但根据文档,这就是我所要做的。引用父选项这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43393194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档