通常我們做軟件自動更新,需要比較新文件與舊文件的版本號,如果新文件的版本號比舊文件高,就替換舊文件。(版本號一般是在Visual Studio的程序信息裡定義)如果使用以下的方法:
using System.Reflection;
using System.IO;
...
Assembly currentAssembly = Assembly.LoadFile(currentAssemblyPath);
Assembly updatedAssembly = Assembly.LoadFile(updatedAssemblyPath);
AssemblyName currentAssemblyName = currentAssembly.GetName();
AssemblyName updatedAssemblyName = updatedAssembly.GetName();
// 比較版本號
if (updatedAssemblyName.Version.CompareTo(currentAssemblyName.Version) <= 0)
{
// 不需要更新
return;
}
// 更新
File.Copy(updatedAssemblyPath, currentAssemblyPath, true);
舊版本被加載了,下面的File.Copy就無法替換舊文件。
不用加載EXE就可以判斷該EXE版本的方法如下:
using System.Reflection;
using System.IO;
...
AssemblyName currentAssemblyName = AssemblyName.GetAssemblyName(currentAssemblyPath);
AssemblyName updatedAssemblyName = AssemblyName.GetAssemblyName(updatedAssemblyPath);
// 比較版本
if (updatedAssemblyName.Version.CompareTo(currentAssemblyName.Version) <= 0)
{
// 不需要更新
return;
}
// 更新
File.Copy(updatedAssemblyPath, currentAssemblyPath, true);