我正在尝试将功能添加到我的winforms应用程序,该应用程序在主屏幕上显示版本号。我目前有这样的:.NET版本号(安装程序版本)
txtVersion.Text = ProductVersion.ToString();
这告诉我的程序的版本 - 一切顺利,好。
但是,我最喜欢做的是拿起用于创建msi的安装程序的版本。有没有办法在安装的程序中对此进行询问,或者在安装过程中以某种方式传输信息?
我正在尝试将功能添加到我的winforms应用程序,该应用程序在主屏幕上显示版本号。我目前有这样的:.NET版本号(安装程序版本)
txtVersion.Text = ProductVersion.ToString();
这告诉我的程序的版本 - 一切顺利,好。
但是,我最喜欢做的是拿起用于创建msi的安装程序的版本。有没有办法在安装的程序中对此进行询问,或者在安装过程中以某种方式传输信息?
这听起来像你想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
您可以在安装过程中将版本保存在注册表项中,并且可以从程序中查询注册表项。
自定义操作对此没有必要,因此内置了[ProductVersion]。不惜任何代价避免自定义操作。 – 2010-08-08 10:06:37
这是最好不要采取应用版本从安装程序,但从应用程序(AssemblyInfo.cs),imo采取安装程序版本。
但是每次版本号增加时ProductCode都不会更新? – 2010-08-08 12:56:13
如果您进行重大升级,是的。如果您使用的是主要升级,那么您可以使用:: MsiEnumRelatedProducts()并传递您的UpgradeCode(不应该更改)以获取ProductCode,然后使用其他API。再次,不是微不足道的,但也不是很难。 – 2010-08-08 19:14:44