【发布时间】:2009-08-01 17:20:05
【问题描述】:
签署我的代码的程序是什么,这样当用户点击安装程序时它不会提示未知供应商。
我的设置是,
应用程序是基于 java 的。 我用launch4j包装罐子 安装程序基于 nsis。
我的构建平台是 xp。
另外一件事,当安装完成时,我会弹出一个提示,从 vista 而不是 nsis 安装不成功,我该如何摆脱它?
【问题讨论】:
标签: java windows nsis code-signing launch4j
签署我的代码的程序是什么,这样当用户点击安装程序时它不会提示未知供应商。
我的设置是,
应用程序是基于 java 的。 我用launch4j包装罐子 安装程序基于 nsis。
我的构建平台是 xp。
另外一件事,当安装完成时,我会弹出一个提示,从 vista 而不是 nsis 安装不成功,我该如何摆脱它?
【问题讨论】:
标签: java windows nsis code-signing launch4j
要消除警告,您需要对 setup.exe 进行签名。获取 microsoft signtool.exe 和代码签名证书(确保已将其导入您的 PC),然后创建一个批处理文件:
signtool sign /v /s my /n "My Display Company" /d "My Display Application" /du "My Support URL" /t "http://timestamp.verisign.com/scripts/timstamp.dll" path_to_setup.exe
SignTool.exe 由 Visual Studio 和平台 SDK 安装,只需 google 一下。
【讨论】:
看看JarSigner。它使用公钥基础设施工作,因此您需要在某处获得由 CA 签名的 ket,费用为 $$$。 Ant 和 Maven 都有插件可以在您构建 jar 时为您执行此操作。这需要在使用 launch4j 和 nsis 包装之前对您的 jar 进行处理。
我不熟悉 nsis,但如果安装程序是基于 java 的,您可能还需要对其输出 jar 进行签名。
【讨论】:
我不知道launch4j 是如何工作的,但我假设您能够更改NSIS 脚本。如果您要签署 .exe,您可能必须添加“CRCCheck off”。
将 RequestExecutionLevel(用户或管理员)添加到 nsis 脚本应该会消除 Vista 警告(如果没有将卸载条目添加到注册表并且 exe 没有 Vista 清单,则被检测为安装程序的程序将显示此警告)
【讨论】: