我有一个在C#中执行的程序,有时会通过交换exe文件来更新。我希望程序定期检查是否已经更新,如果是,则重新启动。我使用以下函数来实现此功能。
public static bool DoINeedToRestart(string exe_name)
{
Version cur_version = new Version(MainProgram.StartVersion);
Version file_version = new Version(GetProductVersion(exe_name));
MessageBox.Show("Comparing cur_version " + cur_version.ToString() + " with " + file_version.ToString());
if (file_version > cur_version)
{
return true;
}
return false;
}
public static string GetProductVersion(string path_name)
{
FileVersionInfo myFI = FileVersionInfo.GetVersionInfo(path_name);
return myFI.FileVersion;
}
当程序启动时,MainProgram.StartVersion被设置为当前版本,使用GetProductVersion(exe_name)函数进行获取。
exe_name被设置为正在更新的可执行文件的名称。
我的问题是,一旦MainProgram.exe文件已经更新(通过手动查看文件属性和检查文件版本来验证),GetProductVersion仍然返回旧的文件版本,我不知道为什么!非常感谢任何帮助。我正在运行带有.Net 3.5的Windows Vista操作系统。