我正在尝试为我们的应用编写自定义自动更新程序。它最初使用InstallShield和MSI安装。我发现用于添加/删除程序的信息位于
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载{GUID}
如果我将版本,VersionMajor和VersionMinor更新为与新版本相同(当我运行安装程序时),则补丁适用,否则它会在应用程序启动时进行修复。
VersionMajor和VersionMinor都匹配Primary Exe的Major和Minor版本。版本虽然似乎是一个随机数,但不能与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
但是reg中的版本是一些类似“118358017”的9位数字,与任何信息都不匹配。我期待在那里看到私人版本,但事实并非如此
答案 0 :(得分:2)
以十六进制查看118358017可能会有所帮助:
070E0001
在假设它是MMmmBBBB的主要/次要/构建的DWORD之后将它拆开后,这对我来说听起来像是7.14.1。