アプリのカスタム自動アップデーターを作成しようとしています。もともとは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
しかし、regにあるバージョンは、「118358017」のような9桁の数字であり、その情報のいずれとも一致しません。そこにプライベートバージョンが表示されることを期待していましたが、そうではありません