ant - 使用 sign4j 和 jsign 在 ant 中签署 launch4j 可执行文件

标签 ant sign launch4j

我在 Jar 中有一个应用程序,我将它包装在一个带有 launch4j 的 exe 文件中,因此用户很容易启动它(在 Windows 中)。我有一个证书,所以我对 jar 进行了签名(我不知道这是否真的有必要,因为它将被包装在 exe 中)并且我想对 exe 进行签名,但它损坏了可执行文件。

我使用 ant 来完成所有过程,看起来像:

<signjar jar="${jar.location}" alias="${key.alias}" storetype="pkcs12" keystore="${key.file}" storepass="${key.password}" tsaurl="https://timestamp.geotrust.com/tsa" />

<launch4j configFile="launch4j_configuration.xml" fileversion="${version}.0" txtfileversion="${build}" productversion="${version}.0" txtproductversion="${build}" outfile="${exe.location}" jar="${jar.location}" />

<signexe file="${exe.location}" alias="${key.alias}" storetype="pkcs12" keystore="${key.file}" storepass="${key.password}" tsaurl="http://timestamp.verisign.com/scripts/timstamp.dll" />

我发现这是因为当您签署 exe 时,它​​破坏了 jar 结构或类似的东西。但我还看到,launch4j 文件夹内有一个 sign4j 文件夹,其中包含我认为可以解决此问题的程序。

我现在的问题是如何使用这个程序?以及如何将其集成到 ant 脚本中以对 exe 进行签名?

文件夹中的 README.txt 文件对我没有帮助。对不起,如果这很明显但对我来说不清楚。另请注意,我使用的是 Ubuntu。

最佳答案

我发现您必须使用签名命令作为参数来执行 sign4j 命令。就像是:

sign4j jsign -s keyfile.p12 -a "(codesign_1091_es_sw_kpsc)" --storepass AVERYGOODPASSWORD --storetype pkcs12 -n MyProgram -u https://www.example.com MyProgram.exe

因此,要将其集成到 ant 中,您需要创建一个 exec任务。例如,类似于:
<exec executable="sign4j">
  <arg line="java -jar jsign-1.2.jar -s ${key.file} -a ${key.alias} --storepass ${key.password} --storetype pkcs12 ${exe.location}"/>
</exec>

它也适用于其他签名工具,例如来自 Microsoft 的验证码……
<exec executable="launch4j/sign4j/sign4j.exe">
    <arg line="signtool.exe sign /fd SHA256 /f mycert.pfx /p foobar /t http://timestamp.verisign.com/scripts/timstamp.dll dist\myapp.exe"/>
</exec>

关于ant - 使用 sign4j 和 jsign 在 ant 中签署 launch4j 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325009/

相关文章:

android - Maven 或 Ant + Ivy

svn - svn 客户端 'svnkit' 不可用

c++ - OpenSSL EVP_DigestSignFinal 段错误

java - 使用 ANT 运行我的应用程序时,找不到 XPath 实现

java - 如何在 Ant 中使用带有 loadproperties 的 Base64 编码?

C++ Sign 函数——来自 MatLab?

android - Google Play 商店显示有关已签名 apk 的错误

java - 如何将 launch4j 与 Java 自定义运行时镜像一起使用?

java - 为什么在 Dos 窗口中运行 Java 会尝试运行包含在 exe 中的应用程序

java - 将 Launch4J 配置为仅使用 32 位 JVM