从独立于开源平台的Java代码替换Windows*.exe中的图标

Jes*_*ick 9 java exe bmp ico portable-executable

首先,这与从Java类生成EXE的常见问题不重复.我不需要这样做.

要解决NetBeans RFE#64612而不需要手动步骤,我需要一个Java(6+)库,它可以获取现有的 Windows *.exe文件,并用通用格式的替代品替换其图标.可执行文件是通用的并且是预构建的(以二进制形式分发),已经知道如何加载特定于应用程序的配置文件,然后使用各种应用程序JAR等启动JRE.唯一的问题是它有一个通用图标,我想将该图标替换为纯Java构建的一部分,并带有特定于应用程序的图标,因此它看起来更漂亮.

该库必须在非病毒开源许可下提供; 跨平台(必须在Windows,Linux,Mac,Solaris上运行),因此无法分叉某些特定于操作系统的帮助工具; 并且必须接受PNG输入,尽管EXE必须在XP上工作,因此根据Wikipedia应该嵌入BMP格式.在高层次上,假设Ant作为构建工具,我想要这样的东西:

<replaceicon from="app.exe" to="hello.exe" icon="hello.png"/>

有谁知道是否已经存在符合这些规范的工具?从各种网络搜索,我发现Launch4J,但这似乎只是叉windres的实际工作,因此不平凡的便携性.我发现JSmooth看起来更有前途 - 似乎包含用于处理ICO编解码器和操作PE文件的Java代码 - 但它是GPL.WinRun4J看起来使用本机代码进行图标操作,尽管我很难跟踪它的来源.据说Jimi处理ICO格式(标准javax.imageio似乎也是如此),但我想没有更新PE资源的工具.

Gil*_*anc 2

根据我的 Eclipse 富客户端平台产品构建者的说法,

  • Linux 需要 XPM 图标
  • MacOSX 需要 ICNS 文件
  • Solaris 需要 4 个 PM 图标:大、中、小和微小
  • Windows(32 位)需要 6 个独立的 BMP 图像或 ICO 文件。

您的分发包必须包含所有这些文件才能独立于平台。

我没有使用过其他平台,但在 Windows 上,您可以通过右键单击现有图标并左键单击“属性”来更改程序图标。左键单击“快捷方式”选项卡,然后左键单击“更改图标”按钮。浏览到分发目录,然后选择 ICO 文件。

我确信当您交付分发包时可以自动更改 Windows 图标。我想在其他平台上也是可能的。