产品名称 TODO?教你向资源文件中添加宏来自动更新版本信息

简介: 产品名称 TODO?教你向资源文件中添加宏来自动更新版本信息

前言

产品信息是向用户展示自家产品的直接方式。虽然是否有产品信息对程序功能没有任何影响,但是程序如果缺少了产品信息给人的感觉是不够正规!作为一名负责任的开发人员,你一定想为自己写的程序添加产品信息。你知道该如何添加吗?如何自动更新版本信息吗?

产品信息对比

可以通过在某个应用程序文件上 右键属性,在详细信息标签页下可以看到 文件说明文件版本产品名称产品版本版权 等信息。下图是 windbg.exe 的相关信息。

check-version-number.png

下图是另外一个程序的详细信息:

no-version-info.png

下面这个更过分,什么都没有:

no-version-info-worse.png

怎么样?是不是觉得 windbg 比较正规?是不是也想为自己的程序加上产品信息?

添加产品信息

在生成程序之前,可以通过修改 .rc 文件中的相关字段来修改产品信息。下图是在 vs 资源视图中查看版本信息的截图。每一项都可以手动编辑。

view-product-info-in-vs.png

如果觉得这样手动编辑麻烦,可以直接用记事本打开 .rc 文件进行编辑。
view-product-info-in-editor.png

说明:如果新建的工程不带资源文件(比如,控制台程序),可以手动添加资源文件。

解决方案管理器需要添加版本信息的工程中,右键添加(D)资源(R)... ,在弹出的添加资源对话框中选择 Version,然后点击 新建(N) 按钮即可。

add-version-to-rc.png

更进一步

当然可以像上面那样手动修改版本信息,但是如果代码中也需要使用版本信息呢?比如,在关于界面显示版本号。

如果想让多个程序中使用同一个版本信息呢?比如,版权信息中的年份,每年都需要修改。如果有 100 多个工程,岂不是要修改 100 多次?

能否只修改一次,所有的程序都跟着变呢?

如果 .rc 文件可以像普通源文件那样 #include 头文件,并能使用其中的宏就可以通用了。

答案是肯定的。.rc 文件默认都会有一句 #include resource.h

自定义产品信息

先在 appver.h 中定义相关字段,如下图:

appver.png

然后在 .rc 文件的开始位置 #include "appver.h",并且修改 Version 相关字段如下图所示。

modify-rc-to-use-macro.png

这样编译出来的程序就会使用 appver.h 中的相关字段了。

build-result-with-version-info.png

特别提醒appver.h 最后一定要保留一个空行,否则编译的时候会报错。
compile-error.png

自动更新产品信息

如果希望每次发布版本的时候自动更新版本号。可以设置编译脚本,在开始编译前触发该脚本。该脚本可以从版本管理系统获取对应的版本号,进而修改 appver.h 的内容。

这里就不作演示了。

总结

经过以上的操作,一个简单的版本信息自动更新的机制就建立起来了,妈妈再也不用担心我写的程序没有版本信息了。

再次强调:可以在 .rc 文件中也可以使用 #include 语句,并使用其中的宏。

相关文章
|
6天前
|
Java Android开发
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
83 0
|
6天前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
71 0
|
6天前
|
弹性计算 运维 Shell
显示最后更新的文件
【4月更文挑战第29天】
10 2
|
8月前
|
安全 Java API
JDK21更新内容:动态加载禁用
JDK21更新内容:动态加载禁用
|
Android开发
eclipse 文件保存后不刷新,所写代码不自动更新
eclipse 文件保存后不刷新,所写代码不自动更新
119 0
eclipse 文件保存后不刷新,所写代码不自动更新
|
SQL Windows
web未能加载文件或程序集“XXX”或它的某一个依赖项
如果你将应用程序生成x86而不是Any CPU时,在64位操作系统中不会出错错误,而在32位操作系统中可能会出现以下错误 “/xxxxx”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 未能加载文件或程序集“xxx”或它的某一个依赖项。试图加载格式不正确的程序。
286 0
web未能加载文件或程序集“XXX”或它的某一个依赖项
|
存储 JSON 安全
electron如何自定义目录,修改文件名保存下载的网络文件
很多同学觉得用localstorage可以代替vuex, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到,原因就是区别1。
electron如何自定义目录,修改文件名保存下载的网络文件
|
Java API Android开发
通过自定义Gradle插件修改编译后的class文件
通过自定义Gradle插件修改编译后的class文件
通过自定义Gradle插件修改编译后的class文件
|
JavaScript 前端开发
VsCode读取项目文件的Eslint规则 保存时自动修复格式错误
前言: 同一个项目,保持代码风格的一致,是非常重要的一个规范。但事实上项目小组成员的代码校验规则、格式化工具通常都不一致,为了避免项目到后期出现无法维护的问题,项目成员使用同一套校验规则,同一个格式化方式是相当好的步骤之一。 游泳、健身了解一下:博客、前端积累文档、公众号、GitHub 保存时自动统一代码风格: 先通过一些简单的配置,然后: Ctrl+s / command+s 时自动修复代码的格式错误 自动修复的规则是读取项目根目录的Eslint规则 这样就能保证项目成员都是一套验证规则的代码风格 配置: 1.安装VsCode的EsLint和vetur插件 如图安装EsLint插件
1066 0
VsCode读取项目文件的Eslint规则 保存时自动修复格式错误
|
缓存
【Auto.js】使用命令删除图片后,更新图库缓存
【Auto.js】使用命令删除图片后,更新图库缓存
437 0