【问题标题】:How to make exe file version readable to all editions of windows system如何使exe文件版本对所有版本的windows系统都可读
【发布时间】:2014-08-05 12:54:05
【问题描述】:

我有用 c++ builder xe2 编写的 32 位程序,它具有动态链接的 bpl 文件。 我的程序更新系统是基于 exe 文件版本的。但是在一些使用 windows 2008 serwer 32 位更新系统的客户端失败,因为程序看到 1.0.0.0 文件版本而不是 2.3.0.94。当我在此窗口中检查文件的属性时,它也显示 1.0.0.0。

如何编译exe文件以确保该版本对所有版本的windows系统都可读?

【问题讨论】:

    标签: c++builder c++builder-xe2 fileversioninfo


    【解决方案1】:

    您的项目可能有多个构建配置,并且您没有在编译的所有配置中定义版本信息。随着构建配置和选项集的引入,定义版本信息变得更难管理,因为用户希望定义一次版本信息并让它自动执行各种配置,但事实并非如此。用户通常必须根据需要多次复制他们的版本信息,或者使用第三方工具或 IDE 插件来为他们处理。这是近几年 Embarcadero IDE 版本中的一个已知缺点,在 Embarcadero 论坛中对此进行了无数次讨论。

    【讨论】:

    • 我将版本信息从 rc 文件编译到 exe 中,并且我只使用一个构建配置。问题是在不同的 Windows 上使用相同的编译 exe 文件。在 Windows 2008 服务器上,它的版本为 1.0.0.0,而在其他 Windows(XP、7)上,它的版本正确为 2.3.0.94。程序正在运行,但由于文件版本错误,它试图一次又一次地自动更新。
    • 使用 .rc 文件可能是问题的根源。您是否尝试过在项目本身中定义版本信息?无论如何,版本资源在所有 Windows 版本上的运行方式完全相同。一个版本的 Windows 无法显示正确的信息,而另一个版本的 Windows 无法忽略它。我知道 Windows 2008 不会以不同的方式处理版本资源。我的 VCL 应用程序可以在 Windows 2008 上正常显示其版本信息,但我不使用 .rc 文件来定义版本信息。
    • 使用 ResHacker 或 XN 资源编辑器等资源查看器仔细检查您的 .exe 文件。确保版本资源确实存在且准确。
    • DDevExtensions 可用于帮助管理版本信息(尽管如果您的描述正确,那不是问题)
    • 正如@RemyLebeau 所说,我已经与 ResHacker 进行了核对,结果发现那里存在错误和正确的版本。我认为前段时间重新创建项目文件时,有人可能忘记取消选中“在项目中包含版本信息”选项。奇怪的是,不同版本的窗口看到不同版本的文件,但可能是因为看到 1.0.0.0 的窗口与我们和我们大多数客户的语言不同。
    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 2012-01-17
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2019-09-02
    • 2021-06-19
    • 1970-01-01
    相关资源
    最近更新 更多