我有一个 winform 应用程序和一个 Visual Studio 安装程序设置项目,项目输出设置为此 winform 应用程序。
此 winform 作为 msi 安装程序从网站调用,它将值保存在注册表中,以便下次调用 winform 应用程序作为 uri 协议方案。
现在从网上我想检查两件事:
1.) 这个应用程序是否已经安装在客户端机器上?
为此,我可以放置一个注册表检查代码来检查是否安装了应用程序
string regKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(regKey))
{
if (key.GetSubKeyNames().Any(keyName => key.OpenSubKey(keyName).GetValue("DisplayName") == "My App's Display Name"))
Console.WriteLine("Already installed...");
else
Console.WriteLine("Start installing...");
}
2.) 安装的应用程序的版本是什么。
对于版本,第 1 点中描述的注册表值还提供了其他参数,例如“DisplayVersion”和“version、VersionMajor 和 VersionMinor”。
那么对于版本来说,更新winform应用程序的程序集版本的最佳方法是什么。我应该更改 winform 应用程序的 AssemblyInfo 类还是应该更改设置项目属性中的版本?
同样在注册表中,我得到以下版本的 dword 值,如何解码这些十六进制值以获得版本号?