You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用gluonfx:build为生成的可执行文件添加版本、描述和版权元数据?

我之前也踩过这个坑——光在releaseConfiguration里填description和vendor根本不够,Windows可执行文件的「详细信息」元数据是靠**资源脚本(.rc文件)**嵌入的,大多数构建工具不会自动把配置里的字段映射到这个文件里。下面分几种常见的构建场景给你解决方案:

如果你用的是Gradle(Kotlin Native/Java多平台)

首先得手动创建Windows资源脚本,把元信息写进去,再让构建系统把它嵌入到可执行文件中:

  • 新建一个资源文件,比如src/main/windows/version.rc,内容如下(按需替换括号里的内容):
#include <windows.h>

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904B0"
        BEGIN
            VALUE "CompanyName", "你的厂商名称\0"
            VALUE "FileDescription", "你的程序描述内容\0"
            VALUE "FileVersion", "1.0.0.0\0"
            VALUE "LegalCopyright", "© 2024 你的版权信息\0"
            VALUE "ProductName", "你的产品名\0"
            VALUE "ProductVersion", "1.0.0.0\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
  • 然后在你的build.gradle.kts(或Groovy版build.gradle)里,把这个资源文件关联到Windows目标的构建流程:
// Kotlin Native的示例配置
kotlin {
    targets {
        mingwX64("mingw") {
            binaries {
                executable {
                    entryPoint = "main"
                    // 将资源文件加入构建
                    resources.from(file("src/main/windows/version.rc"))
                }
            }
        }
    }
}

如果是Java项目用Launch4j打包成exe,那需要在Launch4j的配置里直接指定元信息:

<launch4jConfig>
    <!-- 其他配置... -->
    <versionInfo>
        <fileVersion>1.0.0.0</fileVersion>
        <productVersion>1.0.0.0</productVersion>
        <fileDescription>你的程序描述</fileDescription>
        <copyright>你的版权信息</copyright>
        <companyName>你的厂商名称</companyName>
    </versionInfo>
</launch4jConfig>
如果你用的是CMake

CMake同样需要通过资源文件嵌入元信息,步骤类似:

  • 先创建version.rc文件(内容和上面Gradle部分的rc文件一致),然后在CMakeLists.txt里把它关联到你的可执行目标:
add_executable(YourExeName main.cpp)

# 仅针对Windows平台添加资源文件
if(WIN32)
    target_sources(YourExeName PRIVATE version.rc)
endif()
  • 想要动态关联CMake里的版本变量?可以用configure_file生成rc文件:
    1. 新建version.rc.in模板文件,把固定内容换成CMake变量:
    #include <windows.h>
    
      VS_VERSION_INFO VERSIONINFO
      FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0
      PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0
      # 后面的内容和之前的rc文件一致,只是把字符串值换成@变量名@,比如:
      VALUE "FileVersion", "@PROJECT_VERSION@\0"
      VALUE "CompanyName", "@VENDOR_NAME@\0"
    1. 在CMakeLists.txt里配置变量并生成rc文件:
    project(YourProject VERSION 1.0.0)
    set(VENDOR_NAME "你的厂商名称")
    
    configure_file(version.rc.in version.rc @ONLY)
    target_sources(YourExeName PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
    
几个关键注意点
  • 资源文件里的每个字符串末尾必须加\0,否则Windows系统无法正确解析这些元信息
  • 版本号必须是主版本,次版本,修订版,构建号的四位数字格式,不能包含字母或其他符号
  • 不同构建工具的资源关联逻辑略有不同,但核心都是让构建系统把rc文件编译并嵌入到最终的exe中

内容的提问来源于stack exchange,提问作者Antonio Vázquez Araújo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:30:34