9

まず第一に、これは Java クラスから EXE を作成するという非常に一般的な質問と重複するものではありません。私はそれをする必要はありません。

手動の手順なしでNetBeans RFE #64612を解決するには、既存のWindowsファイルを取り、そのアイコンを一般的な形式の代替物に置き換えることができる Java (6+) ライブラリが必要です。汎用でビルド済みの (バイナリ形式で配布されている) 実行可能ファイルは、アプリケーション固有の構成ファイルをロードしてから、さまざまなアプリケーション JAR などで JRE を開始する方法を既に知っています。唯一の問題は、一般的なアイコンがあることです。純粋な Java ビルドの一部として、そのアイコンをアプリケーション固有のアイコンに置き換えて、見栄えを良くしたいと考えています。*.exe

ライブラリは、非ウイルス性のオープンソース ライセンスの下で利用できる必要があります。クロスプラットフォーム (Windows、Linux、Mac、Solaris で実行する必要があります) であるため、OS 固有のヘルパー ツールをフォークすることはできません。PNG入力を受け入れる必要がありますが、EXEはXPで動作する必要があるため、ウィキペディアによるとBMP形式を埋め込む必要があります。大まかに言えば、ビルド ツールとして Ant を想定すると、次のようになります。

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

これらの仕様に一致するツールが既に存在するかどうかは誰にもわかりませんか? さまざまなWeb検索からLaunch4Jを見つけましたが、これは実際の作業のためにwindresをフォークしているように見えるため、簡単には移植できません。より有望に見えるJSmoothを見つけました - ICO コーデックを処理し、PE ファイルを操作する Java コードを含んでいるように見えます - しかし、それは GPL です。WinRun4Jは、アイコンの操作にネイティブ コードを使用しているように見えますが、そのソースをたどるのに苦労しました。Jimiは ICO フォーマットを扱っているとjavax.imageio思われますが (それに関しては、標準も同様のようです)、PE リソースを更新する機能はないと思います。

4

5 に答える 5

2

私の Eclipse リッチ クライアント プラットフォーム プロダクト ビルダーによると、

  • Linux には XPM アイコンが必要です
  • MacOSX には ICNS ファイルが必要です
  • Solaris には、大、中、小、および極小の 4 つの PM アイコンが必要です。
  • Windows (32 ビット) では、6 つの個別の BMP イメージまたは ICO ファイルが必要です。

プラットフォームに依存しないようにするには、配布パッケージにこれらのファイルをすべて含める必要があります。

他のプラットフォームでは作業していませんが、Windows では、既存のアイコンを右クリックし、[プロパティ] を左クリックして、プログラム アイコンを変更できます。[ショートカット] タブを左クリックし、[アイコンの変更] ボタンを左クリックします。配布ディレクトリを参照し、ICO ファイルを選択します。

配布パッケージを配布するときに、Windows アイコンの変更を自動化することは可能だと思います。他のプラットフォームでは可能だと思います。

于 2011-12-28T18:31:05.280 に答える
2

これは非常に遅れていますが、同じ問題があったため、これを実行できるオープンソースの Maven プラグインをリリースしました。

免責事項: 私はこのプロジェクトの作成者です

これに関するドキュメントは、次の場所で入手できます。

https://zephyr.sunshower.io/site/

これが、私と同じようにこれに出くわした人々の助けになることを願っています.

于 2020-07-07T22:51:00.827 に答える
2

あなたがやりたいことができるように見えるPE / COFF 4Jプロジェクトがあります。Common Public License (CPL)の下でライセンスされています。

それに関するいくつかのメモ:

  • 作者はWinRunJと同じらしい。このプロジェクトには、実際には と呼ばれる PE リソース エディターが含まれていRCEDIT.exeますが、ご指摘のとおり、ネイティブの Windows 呼び出しを使用しています。著者がこれを達成するために自分のプロジェクト (PE/COFF 4J) を使用しなかった理由は、私を打ち負かします。PE/COFF 4J プロジェクトが放棄されたのではないかと心配しています。

  • PE/COFF 4J のドキュメント ページには、プロジェクトが PE ファイルを解析できることだけが記載されていますが、解析できるファイルとして、何か (アイコン リソースなど) を変更し、イメージをディスクに書き戻すことができます。

あなたと同じように、私も .EXE (PE ファイル) 内のリソースを操作できる純粋な Java ソリューションを探していましたが、手ぶらでたどり着きました。これは、これまでのところ最善の策です。

ネイティブの Win32 呼び出しを使用すると、.EXE ファイル内のアイコン リソースを簡単に置き換えることができます。純粋な Java から実行する場合、ディスクに書き戻すときに PE ファイルの一貫性を確保する必要があります。PE ファイル形式を詳細に精査していませんが、置換/追加するリソースに関連するものだけでなく、リソースを置換/追加するときに多くの参照が変更されると思います。

于 2014-02-18T16:02:30.003 に答える
1

Eclipse プロジェクトは、アイコンを置き換える小さな Java アプリケーションを作成したようです。

Eclipse プロジェクトの IconExe

Netbeansの
app.exeと app64.exe には、リソース セクションに次のアイコンがある よう です 。




32 x 31 は間違いだと思います

于 2014-07-01T21:06:38.447 に答える
0

実行可能ファイル リソース セクションの最初の ICO または BMP を置き換えるだけです。それは、表示するアイコンとしてエクスプローラーによって自動的に選択されます。

于 2011-12-28T19:07:13.840 に答える