Замена иконки в Windows *.exe из открытого платформо-независимого Java кода

Прежде всего, это не дубликат очень распространенного вопроса о создании EXE из классов Java. Мне не нужно этого делать.

Для решения проблемы NetBeans RFE #64612 без ручных действий мне нужна библиотека Java (6+), которая может взять существующий файл Windows *.exe и заменить его иконку на замену в общем формате. Исполняемый файл, который является общим и предварительно собранным (распространяется в двоичной форме), уже знает, как загрузить специфический для приложения файл конфигурации, а затем запустить JRE с различными прикладными JAR и т.д.; единственная проблема заключается в том, что у него есть общий значок, и я хотел бы заменить этот значок как часть чистой сборки Java на специфический для приложения значок, чтобы он выглядел красивее.

Библиотека должна быть доступна под невирусной лицензией с открытым исходным кодом; кроссплатформенной (должна работать на Windows, Linux, Mac, Solaris), поэтому не может быть форком какого-то специфического для ОС вспомогательного инструмента; и должна принимать PNG, хотя EXE должен работать на XP, поэтому согласно Wikipedia должен быть встроен формат BMP. На высоком уровне, предполагая Ant в качестве инструмента сборки, я хотел бы получить что-то вроде этого:

Кто-нибудь знает, существует ли уже инструмент, соответствующий этим спецификациям? Из различных веб-поисков я нашел Launch4J, но это, похоже, просто форк windres для реальной работы, таким образом, не тривиально переносимый. Я нашел JSmooth, который выглядит более многообещающим - похоже, он включает код Java для работы с кодеком ICO и манипулирования PE-файлами - но он GPL. WinRun4J, похоже, использует родной код для работы с иконками, хотя мне было трудно проследить за его исходниками. Jimi предположительно работает с форматом ICO (впрочем, стандартный javax.imageio, похоже, тоже), но, похоже, не имеет средств для обновления ресурсов PE.

9
задан Jesse Glick 28 December 2011 в 06:40
поделиться