首页 文章

签署Windows电子应用程序

提问于
浏览
0

我有一个使用 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 以试图让它签署该应用程序 .

我的讨论基于 ewinsignhttps://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 回答

  • 0

    如果您想使用该命令并尝试使用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"部分中设置:

    "build":{
        "appid":"yourid",
        "asar": true,
        "forceCodeSigning": true,
        "win":{
            "target": "...",
            "publisherName": "..."
            "certificateFile": "...",
            "certificatePassword":"...",
            "certificateSubjectName":"...",
            "certificateSha1":"...",
            "signingHashAlgorithms":"..."
        }
    
    }
    

    您可能必须使用这些值来使某些工作正常,但基于文档,我就是这样做的 . 引用父选项here

  • 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 语法只读一行 .

相关问题