我正在尝试为我们的应用程序编写一个自定义自动更新程序。它最初是使用 InstallShield 和 MSI 安装的。我发现用于添加/删除程序的信息位于
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall{Guid}
如果我将 Version、VersionMajor 和 VersionMinor 更新为与新版本相同(当我运行安装程序时),则该补丁可以正常应用,否则它会在应用程序启动时进行修复。
VersionMajor 和 VersionMinor 都匹配主 Exe 的主要和次要版本。虽然版本似乎是一个随机数,并且与 Exe 版本的任何部分都不匹配。它从何而来?
例如,如果 Exe 版本是 5.12.0.2019
我可以运行此代码以获取版本信息
class Program
{
static void Main(string[] args)
{
FileVersionInfo vi = FileVersionInfo.GetVersionInfo(@"C:\MyApp.exe");
Console.WriteLine("Version: {0}", vi.FileVersion);
Console.WriteLine("Major: {0}", vi.FileMajorPart);
Console.WriteLine("Minor: {0}", vi.FileMinorPart);
Console.WriteLine("Build: {0}", vi.FileBuildPart);
Console.WriteLine("Private: {0}", vi.FilePrivatePart);
Console.WriteLine("Product Version: {0}", vi.ProductVersion);
Console.WriteLine("Product Major: {0}", vi.ProductMajorPart);
Console.WriteLine("Product Minor: {0}", vi.ProductMinorPart);
Console.WriteLine("Product Build: {0}", vi.ProductBuildPart);
Console.WriteLine("Product Private: {0}", vi.ProductPrivatePart);
Console.Read();
}
}
输出是
Version: 5.12.2019
Major: 5
Minor: 12
Build: 0
Private: 2019
Product Version: 5.12.2019
Product Major: 5
Product Minor: 12
Product Build: 0
Product Private: 2019
但是注册中的版本是一些 9 位数字,例如“118358017”,与任何该信息都不匹配。我期待在那里看到私人版本,但事实并非如此