签署Windows Electron应用程序

签署Windows Electron应用程序,electron,Electron,我有一个Electron应用程序,可以在Windows上使用npm run ewin进行良好编译: "scripts": { "start": "electron main.js", "pack": "build", "ewin": "build --win --ia32 --x64", "ewinsign": "export CSC_LINK=file:///${HOME}/certificates/certificate.pfx; export CSC_K

我有一个Electron应用程序,可以在Windows上使用
npm run ewin
进行良好编译:

  "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

ewinsign
失败,出现以下错误:

'export' is not recognized as an internal or external command,
operable program or batch file.
我真的不希望它能工作,因为我正在Windows上运行我的构建,而bash命令在Windows上通常不可用

Windows应用程序的签名应该是一个众所周知的解决方案,所以我很犹豫是否要开始破解我自己的解决方案

总之:

  • 我正在Windows上构建我的应用程序
  • 我的证书在这里:
    ${HOME}/certificates/certificate.pfx
  • 我有一个密码在这里的文件:
    ${HOME}/certificates/certificate_pw.txt
  • 我可以使用
    npm run ewin
    成功构建unsigned

  • 如何添加将生成已签名Windows应用程序的
    ewinsign
    命令?

    如果要使用该命令并尝试Windows替换,请查找以下内容:

  • set
    是用于创建窗口的命令 环境变量(而不是导出)
  • 类型
    相当于 窗户
  • 家对你来说是什么?在你的“C:\Users\”中是这样的吗 用户名“目录”?如果是,您可以使用
    %USERPROFILE%
    获取该值
  • 生成的代码如下所示:

    “ewinsign”:“set CSC_LINK=file:///%USERPROFILE%/certificates/certificate.pfx;设置CSC_KEY_PASSWORD=\“$(键入%USERPROFILE%/certificates/certificates_pw.txt)\”;npm干净运行:win&&build--win--ia32--x64“

    但是,我还没有测试过该代码,所以我不确定它是否能工作

    现在,我还没有使用electron builder进行代码签名,但我假设您将使用来强制执行证书。这将在package.json文件的“build”部分进行设置:

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

    您可能需要处理这些值才能使某些内容正常工作,但根据文档,我会这样做。参考父选项,我最终编写了一个设置环境变量的bat脚本包装器。这更容易调试,因为我可以添加
    env
    语句来查看环境变量变量设置为

    以下是脚本:

    set CSC_LINK=file://%USERPROFILE%/certificates/certificate.pfx
    
    set /p CSC_KEY_PASSWORD=<"%USERPROFILE%/certificates/certificates_pw.txt"
    
    npm run ewin
    
    set CSC\u LINK=file://%USERPROFILE%/certificates/certificate.pfx
    设置/p CSC\u密钥\u密码=