0

我在VB.Net(VS 2010中)中有一个windows安装项目。当我构建MSI时,ProductVersion被设置为默认值(1.0.0.0)。在安装msi时动态设置ProductVersion

现在我想在安装时(借助自定义操作或类似的东西)从数据库表中读取动态地设置ProductVersion,以便在安装msi之后,Windows控件中显示的产品版本面板或安装的exe文件属性,是更新的。

在此先感谢。

+1

为什么要这么做?即基本上这看起来像是“愚弄”这个系统。你不能在构建MSI的时候将ProductVersion设置为正确的值(这是常用的做法)? – Nikolay

+0

是的。但productversion应该从数据库值动态设置,而不是为每个版本手动设置。基本上数据库团队将负责版本管理,而不是编程团队,因此我想到了这个过程.. – Avishek

+0

您可以添加一个自定义动作到您的项目(.vbproj)来设置构建版本(即拉动来自“数据库”的值,无论它是什么,并将其设置为可在安装程序文件中使用的变量)。请注意,您可以在WIX​​文件中使用环境变量和项目属性。 – Nikolay

回答

1

你不能那样做 - ProductVersion是Windows甚至在开始安装之前使用的东西。这就是为什么你有时看到“该产品的另一个版本已经安装”。其他人在构建之后和安装之前更改ProductVersion的最简单方法是使用脚本更新MSI的Property表中的ProductVersion。如果您查看Windows套件SDK中的WiRunSQL.vbs并知道要使用的SQL,就可以这样做。您需要更新Property.ProductVersion。这里带有示例链接的文档:

https://msdn.microsoft.com/en-us/library/aa372021(v=vs.85).aspx