编译后自动设置文件版本

时间:2010-01-13 19:48:49

标签: c++ windows versioning

是否有任何工具可以注入.exe或.dll信息,如文件版本,产品名称,版权等?

我找到了一个名为StampVer的工具,但它只能修改文件本身已有的资源。我可以使用它,但需要修改一堆Visual Studio项目以包含一些虚拟信息,我当然更愿意避免这种情况。

4 个答案:

答案 0 :(得分:2)

我最终添加了一个虚拟资源版本,并将使用StampVer。

答案 1 :(得分:1)

您可以创建一个头文件来定义某些内容,例如#define MAJOR_VERSION 2#define MINOR_VERSION 1(与内部版本编号和您需要的内容相同)。然后,#include来自.rc文件的此标头文件。

现在,要实现流程的自动化。您的构建脚本可以输出此头文件,递增各种值。成功构建后,该文件将提交给VCS,然后可以在下一次迭代中使用。有一些方法可以使用普通的.cmd文件,使用环境变量来实现这一点,但是,如果可以的话,可以使用像perl / python等更复杂的东西来完成这项任务。

这适用于生成可释放的版本,如果您需要在开发计算机上进行的每个版本中增加版本号,它就不是最佳解决方案。

答案 2 :(得分:1)

你有多少个项目?我计时,它在Visual Studio中需要3秒。右键单击项目,添加,资源,选择“版本”,新建。

答案 3 :(得分:0)

你创造了什么样的exe / dll?有一些简单的.NET程序集解决方案,以及一些非托管程序集的难度解决方案。

对于装配: http://www.codeproject.com/KB/dotnet/ManagingAssemblyVersions.aspx

不完全在构建之后,但这就是我们所做的: 我们从批处理文件&amp ;;创建一个C ++的包含文件。将它包含在构建过​​程中。 include中包含一个包含在资源文件中的定义。

您还可以使用Visual Studio修改PE中的资源(无人值守二进制文件)。您可以手动修改所有版本资源。