在带有 SVN 修订号的 MFC 应用程序中以编程方式更新 FILEVERSION

发布于 2024-07-05 23:00:11 字数 301 浏览 9 评论 0原文

如何以编程方式更新 MFC 应用程序中的 FILEVERSION 字符串? 我有一个构建过程,用于生成一个头文件,其中包含给定版本的 SVN rev。 我正在使用 http://www.compuphase.com/svnrev.htm 中的 SvnRev 来更新我用来设置 MFC 应用程序标题栏的头文件。 现在我想使用这个 #define 作为我的 FILEVERION 信息。

最好的方法是什么?

How do I go about programmatically updating the FILEVERSION string in an MFC app? I have a build process that I use to generate a header file which contains the SVN rev for a given release. I'm using SvnRev from http://www.compuphase.com/svnrev.htm to update a header file which I use to set the caption bar of my MFC app. Now I want to use this #define for my FILEVERION info.

What's the best way to proceed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

七秒鱼° 2024-07-12 23:00:11

还没有足够的点来评论,但无论您选择哪种解决方案,请记住 FILEVERSION 字段只能支持短整数。 在我们的情况下,我们的 SVN 版本已经高于此值,并导致我们的 FILEVERSION 中的版本号无效。

Don't have enough points to comment yet, but whatever solution you choose keep in mind that FILEVERSION fields can only support a short integer. In our situation, our SVN revision was already above this and resulted in an invalid revision number in our FILEVERSION.

眼前雾蒙蒙 2024-07-12 23:00:11

在你的 application.rc 文件中有一个版本块。 该块控制文件系统中显示的版本信息。

VS_VERSION_INFO 版本信息
文件版本 1,0,0,1
产品版本 1,0,0,1

您可以通过编程方式更新此文件。 确保将文件打开并保存为二进制文件。 我们遇到过以文本形式进行编辑并且文件损坏的问题。

In your application.rc file there is a version block. This block controls the version info displayed in the filesystem.

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1

You can programmatically update this file. Make sure to open and save the file as binary. We have had issues where edits are done as text and the file gets corrupted.

萧瑟寒风 2024-07-12 23:00:11

当您在资源管理器中右键单击该文件并仅查看属性时,更改 VS_VERSION_INFO 将会反映出来。

如果你想在标题栏中显示当前的 SVN 修订号,我建议:

  • 使用脚本获取版本号并生成 version.h 文件

<前><代码>#define SVN_VERSION_NO xxx

  • 您的项目包含此 version.h 并使用该数字在标题中显示。

Changing VS_VERSION_INFO will reflect when you right click on the file in Explorer and see properties only.

If you want to show the current SVN revision number in the Caption bar, i would suggest:

  • Have a script get the version number and generate version.h file just with
#define SVN_VERSION_NO  xxx
  • Your project includes this version.h and uses that number to show in caption.
源来凯始玺欢你 2024-07-12 23:00:11

.rc 文件可以 #include 头文件,就像 .c 文件一样。 我有一个自动生成的 version.h 文件,它定义了以下内容:

#define MY_PRODUCT_VERSION    "0.47"
#define MY_PRODUCT_VERSION_NUM 0,47,0,0

然后我只有我的 .rc 文件 #include "version.h" 并使用这些定义。

VS_VERSION_INFO VERSIONINFO
 FILEVERSION MY_PRODUCT_VERSION_NUM
 PRODUCTVERSION MY_PRODUCT_VERSION_NUM
...
 VALUE "FileVersion", MY_PRODUCT_VERSION "\0"
 VALUE "ProductVersion", MY_PRODUCT_VERSION "\0"
...

我还没有在 MFC 项目中尝试过这种技术。 可能需要将 VS_VERSION_INFO 资源移动到 .rc2 文件(Visual Studio 不会对其进行编辑)。

An .rc file can #include header files just like .c files can. I have an auto-generated version.h file, which defines things like:

#define MY_PRODUCT_VERSION    "0.47"
#define MY_PRODUCT_VERSION_NUM 0,47,0,0

Then I just have my .rc file #include "version.h" and use those defines.

VS_VERSION_INFO VERSIONINFO
 FILEVERSION MY_PRODUCT_VERSION_NUM
 PRODUCTVERSION MY_PRODUCT_VERSION_NUM
...
 VALUE "FileVersion", MY_PRODUCT_VERSION "\0"
 VALUE "ProductVersion", MY_PRODUCT_VERSION "\0"
...

I haven't tried this technique with an MFC project. It might be necessary to move your VS_VERSION_INFO resource to your .rc2 file (which won't get edited by Visual Studio).

无风消散 2024-07-12 23:00:11

也许这会有所帮助:版本控制构建

Maybe this can be helpful: Versioning Controlled Build

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文