Javascript 使用Electron builder在Mac上对Electron Windows应用程序进行EV代码签名

Javascript 使用Electron builder在Mac上对Electron Windows应用程序进行EV代码签名,javascript,java,node.js,electron,code-signing,Javascript,Java,Node.js,Electron,Code Signing,我正在使用electron builder()在Mac上对我的Windows应用程序进行代码签名。我可以让应用程序在没有代码签名的情况下正常运行。我正在使用Docker在Mac上为Windows构建应用程序 我找到了这篇文章,从中我创建了我的尝试: sign.js const CERTIFICATE_NAME = "My Company"; process.env.TOKEN_KEY = "my-password"; exports.default =

我正在使用electron builder()在Mac上对我的Windows应用程序进行代码签名。我可以让应用程序在没有代码签名的情况下正常运行。我正在使用Docker在Mac上为Windows构建应用程序

我找到了这篇文章,从中我创建了我的尝试:

sign.js

const CERTIFICATE_NAME = "My Company";
process.env.TOKEN_KEY = "my-password";

exports.default = async function(configuration) {
  const tokenPassword = () => {
    if (!process.env.TOKEN_KEY) {
      process.env.TOKEN_KEY = require("readline-sync").question(
        "\n\n\tPlease enter the password for the hardware token: ",
        {
          hideEchoBack: true
        }
      );
    }
    return process.env.TOKEN_KEY;
  };

  require("child_process").execSync(
    `java \
    -jar jsign-2.1.jar \
    --keystore hardwareToken.cfg \
    --storepass "${tokenPassword()}" \
    --storetype PKCS11 \
    --tsaurl http://timestamp.sectigo.com \
    --alg SHA-256 \
    --alias "${CERTIFICATE_NAME}" \
    "${configuration.path}"
    `,
    {
      stdio: "inherit"
    }
  );
};
因为这需要Java,所以在Docker容器中运行
Java-version
失败,所以我像这样安装了Java:

apt-get update && \
   apt-get install -y openjdk-8-jdk && \
   apt-get install -y ant && \
   apt-get clean;

apt-get update && \
   apt-get install ca-certificates-java && \
   apt-get clean && \
   update-ca-certificates -f;
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
运行electron builder的build命令后,我得到以下结果:

stderr: pesign: Failed to create a SunPKCS11 provider from the configuration file hardwareToken.cfg
Error executing command: pesign: Failed to create a SunPKCS11 provider from the configuration file hardwareToken.cfg
stderr: 
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at net.jsign.PESignerHelper.createSunPKCS11Provider(PESignerHelper.java:367)
    at net.jsign.PESignerHelper.build(PESignerHelper.java:258)
    at net.jsign.PESignerHelper.sign(PESignerHelper.java:377)
    at net.jsign.PESignerCLI.execute(PESignerCLI.java:109)
    at net.jsign.PESignerCLI.main(PESignerCLI.java:40)
Caused by: java.security.ProviderException: Library /Library/Frameworks/eToken.framework/Versions/A/libeToken.dylib does not exist
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:304)
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103)
    ... 9 more
Try `pesign --help' for more information.
stderr:pesign:无法从配置文件hardwareToken.cfg创建SunPKCS11提供程序
执行命令时出错:pesign:无法从配置文件hardwareToken.cfg创建SunPKCS11提供程序
标准:
java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
在net.jsign.PESignerHelper.createSunPKCS11Provider(PESignerHelper.java:367)
net.jsign.PESignerHelper.build(PESignerHelper.java:258)
在net.jsign.PESignerHelper.sign处(PESignerHelper.java:377)
在net.jsign.PESignerCLI.execute(PESignerCLI.java:109)
net.jsign.PESignerCLI.main(PESignerCLI.java:40)
原因:java.security.ProviderException:Library/Library/Frameworks/eToken.framework/Versions/A/libeToken.dylib不存在
位于sun.security.pkcs11.SunPKCS11。(SunPKCS11.java:304)
位于sun.security.pkcs11.SunPKCS11。(SunPKCS11.java:103)
... 9更多
有关详细信息,请尝试“pesign--help”。
为什么会发生这种错误