由于技术原因,我无法使用ClickOnce自动更新我的.NET应用程序及其子程序集。在.NET中处理自动更新的最佳方法是什么?
由于技术原因,我无法使用ClickOnce自动更新我的.NET应用程序及其子程序集。在.NET中处理自动更新的最佳方法是什么?
我认为更新应用程序块是 ClickOnce 的前身。值得研究。查看其源代码可能足以激发一些想法。
大约3-4年前,我发布了一个示例,它位于应用程序之外。如果检测到更新,则应用程序调用更新程序并关闭,然后进行更新,最后重启应用程序。
我在旧的GotDotNet网站上发布了这个示例...我得试着找到它。
它完美地工作,并且编写时间大约为1-2小时。
自己写。
我听说第一次写可能有些困难,但之后就会变得简单。
由于我还没有写过(虽然在我的清单上),我可以告诉你我想到的一些事情。保持准确的dll版本,因为这对于自更新很重要。并确保更新程序可以更新自身。
我编写了自己的自动更新程序,该自动更新程序使用一个通用配置文件来应用程序,其中包含从中下载最新版本的URL / 检查是否需要更新。
这样,您运行更新程序,它会更新应用程序或不更新,然后运行应用程序,作为正常操作的一部分,检查是否有更新的更新程序并修补它。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Update();
Application.Run(new Form1());
}
private static void Update()
{
string mainFolder;
string updateFolder;
string backupFolder;
foreach (string file in
System.IO.Directory.GetFiles(updateFolder))
{
string newFile = file.Replace(
updateFolder, mainFolder);
if (System.IO.File.Exists(newFile))
{
System.IO.File.Replace(file, newFile, backupFolder);
}
else
{
System.IO.File.Move(file, newFile);
}
}
}