签署Windows电子应用程序

时间:2017-04-13 13:06:57

标签: electron

我有一个使用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应用程序应该是一个众所周知的解决方案,所以我犹豫是否开始攻击我自己的解决方案。

总结:

  1. 我正在Windows上构建我的应用程序。
  2. 我的证书位于此处:${HOME}/certificates/certificate.pfx
  3. 我的密码文件位于此处:${HOME}/certificates/certificate_pw.txt
  4. 我可以使用npm run ewin成功构建无符号。
  5. 如何添加构建已签名Windows应用程序的ewinsign命令?

2 个答案:

答案 0 :(得分:0)

如果您想使用该命令并尝试使用Windows替换,那么您将寻找以下内容:

  1. set是用于创建窗口的命令 环境变量(而不是出口)
  2. type相当于bash'cat'     视窗。
  3. 什么是{HOME}给你?那是你的“C:\ Users \”你的         用户名“目录?如果是这样,你可以使用         %USERPROFILE%获得该值。
  4. 结果代码如下所示:

    "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语法只能读取一行。