2010-08-06 183 views
8

我正在尝试将功能添加到我的winforms应用程序,该应用程序在主屏幕上显示版本号。我目前有这样的:.NET版本号(安装程序版本)

txtVersion.Text = ProductVersion.ToString(); 

这告诉我的程序的版本 - 一切顺利,好。

但是,我最喜欢做的是拿起用于创建msi的安装程序的版本。有没有办法在安装的程序中对此进行询问,或者在安装过程中以某种方式传输信息?

回答

3

这听起来像你想ProductVersion property。你可以在运行时通过调用::MsiGetProductInfo() function得到安装你的MSI的ProductCode。

如果不能解决您的问题,那么将ProductVersion写入注册表项并在运行时读取它相当受欢迎。您也可以使用该注册表项来解决此处所述的ICE38问题:http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

但是每次版本号增加时ProductCode都不会更新? – 2010-08-08 12:56:13

+0

如果您进行重大升级,是的。如果您使用的是主要升级,那么您可以使用:: MsiEnumRelatedProducts()并传递您的UpgradeCode(不应该更改)以获取ProductCode,然后使用其他API。再次,不是微不足道的,但也不是很难。 – 2010-08-08 19:14:44

0

您可以在安装过程中将版本保存在注册表项中,并且可以从程序中查询注册表项。

0

您可以从您的安装程序(MSI),通过自定义操作使用Wix3

很好做

以下链接可以让你开始

WIX at Sourceforge

Wix Tutorial

+1

自定义操作对此没有必要,因此内置了[ProductVersion]。不惜任何代价避免自定义操作。 – 2010-08-08 10:06:37

1

这是最好不要采取应用版本从安装程序,但从应用程序(AssemblyInfo.cs),imo采取安装程序版本。