Javascript 使用Electron builder在Mac上对Electron Windows应用程序进行EV代码签名
我正在使用electron builder()在Mac上对我的Windows应用程序进行代码签名。我可以让应用程序在没有代码签名的情况下正常运行。我正在使用Docker在Mac上为Windows构建应用程序 我找到了这篇文章,从中我创建了我的尝试: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 =
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”。
为什么会发生这种错误