内容目录
自家的软件安装后,需要更新,更新文件完成后还需要修改注册表中关于程序的版本号。
软件安装后,会被写入注册表中。
所以只需要修改注册表的 DisplayVersion 即可,不同的程序可能还需要修改其它属性,例如 Version、DisplayName。
修改注册表可能需要管理员权限,这要看软件是安装到所有人可以使用,还是仅当前用户可以使用。
每个程序的 KEY 都是不同的,需要自行拼接。
static void Main(string[] args)
{
string code = "4444-4444-4444-4444-4444";
SearchRegistryKeys(code, new Version(1, 6, 6, 6));
Console.ReadKey();
}
[SupportedOSPlatform("windows")]
static bool SearchRegistryKeys(string guid, Version newVersion)
{
const string LocalMachine = "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{0}";
const string CurrentUser = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{0}";
try
{
// 打开指定的子键
RegistryKey? baseKey = Registry.LocalMachine.OpenSubKey(string.Format(LocalMachine, guid),writable: true);
if (baseKey == null)
{
baseKey = Registry.CurrentUser.OpenSubKey(string.Format(CurrentUser, guid),writable: true);
}
if (baseKey == null) return false;
// 获取所有子键的名称
string[] kvs = baseKey.GetValueNames();
if (kvs.Any(x => x == "DisplayVersion"))
{
var version = baseKey.GetValue("DisplayVersion")?.ToString();
if (version == null) return false;
baseKey.SetValue("DisplayVersion", newVersion.ToString());
var name = baseKey.GetValue("DisplayName")?.ToString();
if (name == null) return false;
baseKey.SetValue("DisplayName", name.Replace(version, newVersion.ToString()));
}
baseKey.Dispose();
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex);
return false;
}
}
文章评论