Вы можете получить версию из свойства AssemblyName.Version
, используя следующий код:
Version version = Assembly.GetExecutingAssembly().GetName().Version;
this.Text = "My Cool Product - Version " + version;
// or with a fancier formatting
this.Text = string.Format("My Cool Product - Version {0}.{1}.{2} Revision {3}",
version.Major, version.Minor, version.Build, version.Revision);
Обновление (после комментария):
Вы также можете прочитать версию установки из информации MSI, хранящейся в реестре. Лучше всего это делать на основе UpgradeCode , заданного вашей установкой, поскольку UpgradeCode не должен меняться между версиями. В следующем примере программы показано, как получить установленные версии 1 , относящиеся к определенному коду UpgradeCode:
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, 0, iIdx++, sbProductCode))
{
Int32 len = 512;
StringBuilder sbVersion = new StringBuilder(len);
MsiGetProductInfo(sbProductCode.ToString(),
"VersionString", sbVersion, ref len);
result.Add(sbVersion.ToString());
}
return result;
}
}
1 Обратите внимание, что может быть параллельно установлено несколько версий одного продукта. В этом редком случае вы получите список со всеми установленными версиями.