我有一个用 Java 编写的应用程序,将在 Mac OS X、Windows 和 Linux 上分发。目前,我正在为每个平台打包应用程序,如下所示(但如果需要替代方案,我愿意更改它):
- Mac OS X:使用 Eclipse,转到“文件”->“导出...”并选择 Mac OS X 应用程序包
- Windows:使用Launch4j将 jar 文件捆绑到 exe 文件中
- Linux:使用Jnix将 jar 文件捆绑成 sh 文件
问题是,我开始遇到我的程序不受信任的问题。Google Chrome 报告说我的应用程序的 beta 版本不是来自受信任的来源,Windows 8 Smartscreen 过滤器也是如此。我的理解是,让这些安全措施信任我的应用程序(如果我想真正分发它肯定是必要的)的唯一方法是让应用程序签名。但是,我发现很少有关于如何执行此操作的文档,其中大部分是针对一个平台的(例如,这告诉我有关签署 Windows 8 的信息)。
我的问题是:有没有办法对我的 Java 代码进行一次签名并自动对我创建的可执行文件进行签名?还是我必须单独签署每个可执行文件?如果是后者,是否有一个我可以使用的代码签名机构,或者我必须让它与不同的组分别签名?