C# .NET版本号(安装程序版本)

C# .NET版本号(安装程序版本),c#,.net,visual-studio-2008,windows-installer,versioning,C#,.net,Visual Studio 2008,Windows Installer,Versioning,我正在尝试向我的winforms应用程序添加一个功能,在主屏幕上打印版本号。我目前有: txtVersion.Text = ProductVersion.ToString(); 这告诉我程序的版本——一切都很好 然而,理想情况下,我希望它做的是选择用于创建msi的安装程序版本。有没有办法从已安装的程序中查询,或者在安装过程中以某种方式传输信息?您可以在安装过程中将版本保存在注册表项中,然后从程序中查询注册表项。您可以很好地从安装程序(MSI)中执行此操作通过使用Wix3的自定义操作 以下链接可

我正在尝试向我的winforms应用程序添加一个功能,在主屏幕上打印版本号。我目前有:

txtVersion.Text = ProductVersion.ToString();
这告诉我程序的版本——一切都很好


然而,理想情况下,我希望它做的是选择用于创建msi的安装程序版本。有没有办法从已安装的程序中查询,或者在安装过程中以某种方式传输信息?

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

您可以很好地从安装程序(MSI)中执行此操作通过使用Wix3的自定义操作

以下链接可以帮助您开始


最好不要从安装程序获取应用程序版本,而是从应用程序(AssemblyInfo.cs)获取安装程序版本,依我看。

听起来你想要的是。您可以在运行时通过调用提供安装您的MSI的ProductCode来获取


如果不适合您,那么将ProductVersion写入注册表项并在运行时读取它是相当流行的。您也可以使用该注册表项来解决此处描述的ICE38问题:

此操作不需要自定义操作,内置了[ProductVersion]。应该不惜一切代价避免自定义操作。但是产品代码不是每次版本号增加时都会更新吗?如果您进行了重大升级,则会。如果您使用的是主要升级,那么您可以使用::MsiEnumRelatedProducts()并传入您的升级代码(不应更改)来获取产品代码,然后使用其他API。再说一次,这不是小事,但也不是很难。