c# – 我可以在窗口标题中指定productversion吗?

c# – 我可以在窗口标题中指定productversion吗?,第1张

概述为了让人们知道他们正在使用的程序版本,我想在窗口标题中显示productversion.我可以手动执行此 *** 作,但我希望它是动态的,因此每次版本更改时我都不必更改这两个项目. 这有可能在代码中执行此 *** 作而不会弄乱安装程序吗? 您可以使用以下代码从 AssemblyName.Version属性中检索版本: Version version = Assembly.GetExecutingAssembly( 为了让人们知道他们正在使用的程序版本,我想在窗口标题中显示productversion.我可以手动执行此 *** 作,但我希望它是动态的,因此每次版本更改时我都不必更改这两个项目.

这有可能在代码中执行此 *** 作而不会弄乱安装程序吗?

解决方法 您可以使用以下代码从 AssemblyName.Version属性中检索版本:
Version version = Assembly.GetExecutingAssembly().Getname().Version;this.Text = "My Cool Product - Version " + version;// or with a fancIEr formattingthis.Text = string.Format("My Cool Product - Version {0}.{1}.{2} Revision {3}",version.Major,version.Minor,version.Build,version.Revision);

更新(评论后):

您还可以从存储在注册表中的MSI信息中读取设置的版本.这最好基于您的设置指定的UpgradeCode来完成,因为UpgradeCode不应在版本之间更改.以下示例程序演示了如何获取属于特定UpgradeCode的已安装版本1:

using System;using System.Collections.Generic;using System.Runtime.InteropServices;using System.Text;class Program{    [Dllimport("msi.dll",CharSet = CharSet.Unicode)]    static extern Int32 MsiGetProductInfo(string product,string property,[Out] StringBuilder valueBuf,ref Int32 len);    [Dllimport("msi.dll",CharSet = CharSet.auto,SetLastError = true)]    static extern Int32 MsIEnumRelatedProducts(string strUpgradeCode,int reserved,int iIndex,StringBuilder sbProductCode);    static voID Main(string[] args)    {        List<string> installedVersions =             GetInstalledVersions("{169C1A82-2A82-490B-8A9A-7AB7E4C7DEFE}");        foreach (var item in installedVersions)        {            Console.Writeline(item);        }    }    static List<string> GetInstalledVersions(string upgradeCode)    {        List<string> result = new List<string>();        StringBuilder sbProductCode = new StringBuilder(39);        int iIDx = 0;        while (            0 == MsIEnumRelatedProducts(upgradeCode,iIDx++,sbProductCode))        {            Int32 len = 512;            StringBuilder sbVersion = new StringBuilder(len);            MsiGetProductInfo(sbProductCode.ToString(),"VersionString",sbVersion,ref len);            result.Add(sbVersion.ToString());        }        return result;    }}

1请注意,可能会并行安装一个产品的多个版本.在极少数情况下,您将获得包含所有已安装版本的列表.

总结

以上是内存溢出为你收集整理的c# – 我可以在窗口标题中指定productversion吗?全部内容,希望文章能够帮你解决c# – 我可以在窗口标题中指定productversion吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存