动态更改安装项目中的版本?

时间:2012-01-05 14:29:38

标签: c# .net

我需要从生成的类中动态更改VS中的安装项目版本吗?我可以这样做吗?

2 个答案:

答案 0 :(得分:1)

所有VS项目基本上都是文本文件,所以理论上你可以做你想做的事,但也许不是来自VS.

您需要更改项目的ProductVersion属性。在文本文件中,查找包含以下内容的行:

        "ProductVersion" = "8:1.0.1001"

“1.0.1001”部分应该是您当前的版本。 8:似乎是一个类型标识符;我猜8意味着一个字符串。

更新ProductVersion时,还应更新ProductCode。这只是一个GUID,因此您可以简单地生成和ToString()一个新的随机GUID。如果您希望安装程序找到程序的先前版本并将其删除,请不要触摸UpgradeCode。

这完全可以与简单的.NET程序一起使用。将它集成到VS构建中比较棘手,因为安装项目不像其他项目那样是MSBuild脚本,因此您无法直接在安装项目内访问MSBuild中的各种自定义构建逻辑工具。您可以设置主项目的MSBuild脚本,以包含构建任务,以便在构建时更新安装项目版本。您还可以设置构建后的操作。

答案 1 :(得分:0)

这是一个脚本文件的示例,您可以使用该文件来增加从安装项目的PreBuild事件调用它的版本号。 (http://www.codeproject.com/Articles/22256/NewSetupVersion-for-MSI-Projects

在评论中阅读amthog提出的问题。事件在此脚本运行后未重新加载,但在构建之前可能会导致令人头疼的事实。我有一个post build事件,由于“外部”(通过此脚本)所做的更改现在失败,这些更改在post build事件运行时尚未重新加载。

如果这与你无关,那么这个脚本似乎运作良好。