首先,这与从Java类生成EXE这一非常常见的问题并不相同。我不需要那样做。
要解决没有NetBeans RFE #64612的手动步骤问题,我需要一个Java (6+)库,它可以接受现有的*.exe文件,并以通用格式替换其图标。可执行文件是通用的和预构建的(以二进制形式分发),它已经知道如何加载特定于应用程序的配置文件,然后使用各种应用程序JAR等启动JRE;唯一的问题是它有一个通用图标,我希望用特定于应用程序的图标替换该图标作为纯Java构建的一部分,因此它看起来更漂亮。
库必须在非病毒开放源码许可下可用;跨平台(必须运行在Windows、Linux、Mac、Solaris上),因此不能使用一些特定于操作系统的辅助工具;并且必须接受PNG输入,尽管EXE必须在XP上工作,因此根据维基百科应该嵌入BMP格式。在高级别上,假设Ant是构建工具,我希望这样做:
<replaceicon from="app.exe" to="hello.exe" icon="hello.png"/>
是否有人知道符合这些规范的工具是否已经存在?从各种网络搜索中,我发现了Launch4J,但这似乎只是将风风用于实际工作,而不是简单的可移植性。我发现JSmooth看起来更有希望--它似乎包含了处理ICO编解码器和操作PE文件的Java代码--但它是GPL。WinRun4J看起来使用本机代码进行图标操作,尽管我很难跟踪它的源代码。据推测,吉米处理ICO格式(就这一点而言,标准javax.imageio似乎也是如此),但我想它没有更新PE资源的功能。
发布于 2011-12-28 18:31:05
根据我的产品生成器,
您的分发包必须包含所有这些文件才能独立于平台。
我没有使用过其他平台,但是在Windows上,您可以通过右键单击现有图标并单击Properties来更改程序图标。左击“快捷方式”选项卡,然后单击“更改图标”按钮。浏览到分发目录,并选择ICO文件。
我确信,当您交付分发包时,可以自动更改Windows图标。我想在其他平台上也有可能。
发布于 2014-02-18 16:02:30
有一个PE/COFF 4J项目,它似乎能够做你想做的事情。它是根据公共公共许可证(CPL)授权的。
关于这一点的一些说明:
RCEDIT.exe,但正如您自己指出的那样,它使用了本机windows调用。为什么作者不使用他自己的项目(PE/COFF 4J)来完成这一任务,这让我感到不快。也许PE/COFF 4J项目被放弃了,这让我有些担心。和您一样,我也一直在寻找一个纯Java解决方案,它可以操纵.EXE (PE文件)中的资源,并且空手而归。这是目前为止最好的选择。
在使用本机.EXE调用时,替换Win32文件中的图标资源相当简单。当使用纯Java执行此操作时,当您将PE文件写回磁盘时必须确保PE文件是一致的。我还没有深入研究PE文件的格式,但我认为许多引用在替换/添加资源时会发生更改,而不仅仅是与要替换/添加的资源相关的引用。
发布于 2020-07-07 22:51:00
这已经过期很久了,但是我们刚刚发布了一个开源的Maven插件,它可以做到这一点,因为我们有同样的问题。
免责声明:我是这个项目的作者。
这方面的文件可在以下网址查阅:
https://zephyr.sunshower.io/site/
希望这对像我一样偶然发现这件事的人有所帮助。
https://stackoverflow.com/questions/8659286
复制相似问题