如何将版本信息放在多平台程序* nix和win32中?

时间:2009-07-16 18:48:27

标签: winapi unix wix versioning

我想知道这样做的标准方法是什么。

目前我正在考虑在头文件中添加一系列定义,并在主资源文件win win32中使用该文件来更新win32中的版本资源,并在* nix中创建一些全局函数来返回此信息。< / p>

并且在windows中使msi安装文件也反映了相同的版本。

2 个答案:

答案 0 :(得分:0)

这听起来像是一种合理的方式。我不认为有这样做的标准方法;对于跨平台的版本报告没有任何真正的标准。

答案 1 :(得分:0)

由于我们希望避免每次点击构建时更改“version.cpp”或等效的开销 - 从而花费时间至少进行一次编译和链接 - 我们在构建之后修改二进制文件。

如果你输出到例如ELF或PE格式的可执行文件,您可以使用ELF或PE的一些基本知识和链接器映射来找出要替换的内容,否则您可以扫描二进制文件以查找设置模式(我们使用类似静态const char VERSION []的内容=“[VERSIONBLOCK xxxxxxxxxxxxx]”;)并用相关信息替换部分(例如上面的xxxx部分):

  • 建立日期和时间
  • 构建机器
  • 用户名
  • 例如输出svnversion,如果

请注意,如果您的二进制文件在此步骤之前已签名或压缩,则此方法无法正常工作,但通常您可以设计构建过程,以便在此步骤之后进行签名/压缩。

我确信这可以扩展到Win32 PE版本元数据以及任何嵌入式版本字符串。