我们需要在生成的可执行文件中包含元信息,以便右键单击并选择“details”将显示描述、版权和版本。我们已经在releaseConfiguration块中添加了描述和供应商,但是可执行文件仍然没有 meta信息。
owfi6suc1#
在GluonFX插件支持这一点之前,有一种相对简单的方法可以向可执行文件添加元数据。您需要一个version.rc文件,类似于OpenJFX用于不同JavaFX库的文件:version.rc.然后,基本上您需要使用适当的值编译它,最后将它与生成可执行文件的其余obj文件链接。以下是必需的步骤:
version.rc
假设您有一个类似HelloGluon的项目,您需要运行一次:
HelloGluon
mvn gluonfx:build
并且将在target/gluonfx/x86_64-windows/HelloGluon.exe下产生没有元数据的可执行文件。
target/gluonfx/x86_64-windows/HelloGluon.exe
通过target/gluonfx/x86_64-windows/gvm/tmp/icon/IconGroup.obj添加默认图标的事实意味着已经有一个资源文件添加到可执行文件中,由于只能有一个,我们需要通过一些手工操作绕过它。如果检查日志:
target/gluonfx/x86_64-windows/gvm/tmp/icon/IconGroup.obj
Default icon.ico image generated in C:\%path.to.project%\target\gluonfx\x86_64-windows\gensrc\windows\assets. Consider copying it to C:\%path.to.project%\src\windows
所以让我们这样做:创建文件夹C:\%path.to.project%\src\windows,并复制图标icon.ico和version.rc文件。编辑C:\%path.to.project%\src\windows\version.rc并在#define STR(x) #x后面添加以下内容:
C:\%path.to.project%\src\windows
icon.ico
C:\%path.to.project%\src\windows\version.rc
#define STR(x) #x
IDI_ICON1 ICON "icon.ico"
按照OpenJFX win. gradle构建文件中用于编译的标志,您可以从x64命令提示符运行:
cd C:\%path.to.your.project%\src\windows rc /d JFX_FNAME=HelloGluon.exe /d JFX_INTERNAL_NAME=HelloGluon \ /d "JFX_COMPANY=My company" /d "JFX_COMPONENT=My component" \ /d "JFX_NAME=My name" /d "JFX_VER=1.0.0" /d "JFX_BUILD_ID=1.0.0.0+1" \ /d "JFX_COPYRIGHT=My Copyright" /d "JFX_FVER=1,0,0" \ /d "JFX_FTYPE=0x7L" \ /FoC:\%path.to.your.project%\src\windows\version.res version.rc cvtres /machine:x64 -out:C:\%path.to.your.project%\src\windows\version.obj C:\%path.to.your.project%\src\windows\version.res
这将创建version.obj:
version.obj
> dir C:\%path.to.your.project%\src\windows 21/01/2023 14:38 <DIR> . 21/01/2023 14:38 <DIR> .. 21/01/2023 14:18 15.031 icon.ico 21/01/2023 14:38 1.528 version.obj 21/01/2023 14:36 2.629 version.rc 21/01/2023 14:36 796 version.res
现在检查日志target/gluonfx/log/process-link-****.log并复制link命令,将IconGroup.obj替换为您的'version. obj:
target/gluonfx/log/process-link-****.log
IconGroup.obj
link C:\%path.to.project%\target\gluonfx\x86_64-windows\gvm\HelloGluon\launcher.obj \ C:\%path.to.project%\target\gluonfx\x86_64-windows\gvm\tmp\SVM-*****\com.gluonapplication.gluonapplication.obj \ C:\%path.to.project%\src\windows\version.obj \ j2pkcs11.lib java.lib ... crypt32.lib /NODEFAULTLIB:libcmt.lib \ /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup comdlg32.lib ... prism_d3d.lib /WHOLEARCHIVE:glass.lib ... /WHOLEARCHIVE:prism_d3d.lib \ /OUT:C:\%path.to.project%\target\gluonfx\x86_64-windows\HelloGluon.exe \ /LIBPATH:C:\~\.gluon\substrate\javafxStaticSdk\20-ea+7\windows-x86_64\sdk\lib \ /LIBPATH:C:\graalvm-svm-java17-windows-gluon-22.1.0.1-Final\lib\svm\clibraries\windows-amd64 \ /LIBPATH:C:\graalvm-svm-java17-windows-gluon-22.1.0.1-Final\lib\static\windows-amd64
这将再次链接您的可执行文件与元数据,您将在Windows资源管理器中看到详细信息:
注意,如果再次运行mvn gluonfx:build,将丢失元数据,并且需要重新运行manual link命令。
1条答案
按热度按时间owfi6suc1#
在GluonFX插件支持这一点之前,有一种相对简单的方法可以向可执行文件添加元数据。
您需要一个
version.rc
文件,类似于OpenJFX用于不同JavaFX库的文件:version.rc.然后,基本上您需要使用适当的值编译它,最后将它与生成可执行文件的其余obj文件链接。
以下是必需的步骤:
假设您有一个类似
HelloGluon
的项目,您需要运行一次:并且将在
target/gluonfx/x86_64-windows/HelloGluon.exe
下产生没有元数据的可执行文件。通过
target/gluonfx/x86_64-windows/gvm/tmp/icon/IconGroup.obj
添加默认图标的事实意味着已经有一个资源文件添加到可执行文件中,由于只能有一个,我们需要通过一些手工操作绕过它。如果检查日志:
所以让我们这样做:创建文件夹
C:\%path.to.project%\src\windows
,并复制图标icon.ico
和version.rc
文件。编辑
C:\%path.to.project%\src\windows\version.rc
并在#define STR(x) #x
后面添加以下内容:按照OpenJFX win. gradle构建文件中用于编译的标志,您可以从x64命令提示符运行:
这将创建
version.obj
:现在检查日志
target/gluonfx/log/process-link-****.log
并复制link命令,将IconGroup.obj
替换为您的'version. obj:这将再次链接您的可执行文件与元数据,您将在Windows资源管理器中看到详细信息:
注意,如果再次运行
mvn gluonfx:build
,将丢失元数据,并且需要重新运行manual link命令。