VB.Net程序设计:AutoUpdater软件自动更新

VB.Net程序设计:AutoUpdater软件自动更新


思路是这样的:
1.版本控制:
通过读本地版本和服务器版本,来判断是否有新的升级文件。获取服务器端XML配置文件中新版本程序的更新日期。
2.升级文件的下载:
如果有新的升级文件,那么开始下载,下载过程显示进度。
3.更新配置处理
下载完毕后,执行文件更新,数据库更新,写注册表等操作。
4.完成更新
判断主程序是否运行,如有运行关闭并替换掉主程序文件和其他文件,删除掉没必要的旧文件。

 

 

下面的网站是2009-02找到的自动更新程序的文章
http://www.cnblogs.com/jenry/archive/2006/09/26/477302.html
http://www.cnblogs.com/iyond/archive/2007/06/14/783301.html
http://www.jrgz2008.com/blog/post/soft/AutoUpDate.html
http://hi.baidu.com/huodongtian/blog/item/cf40074c011a1ffed72afcb1.html
http://www.cnblogs.com/x369/articles/105656.html
http://www.codeproject.com/KB/vb/autoupdate.aspx
http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspx

 

本文和本程序主要参考:
http://www.cnblogs.com/jenry/archive/2006/09/26/477302.html

 

本程序的更新xml配置文件如下:
AutoUpdateConfig.xml
<?xml version="1.0" encoding="gb2312"?>
<AutoUpdater>
  <Updater>
    <UpdateUrl>http://127.0.0.1:8080/AutoUpdate</UpdateUrl>
    <LastUpdateTime>2009-10-07</LastUpdateTime>
    <UpdateDescription>xxxxxx管理系统:自动更新程序</UpdateDescription>
  </Updater>
  <Application>
    <AppExeName>SoftName.exe</AppExeName>
    <AppVersion>1.1.0.0</AppVersion>
  </Application>
  <UpdateFileList>
    <File Ver="1.0.0.0" Name="prj.jpg" />
    <File Ver="1.0.0.0" Name="xml.jpg" />
    <File Ver="1.0.0.0" Name="update.jpg" />
 <File Ver="1.0.0.0" Name="aaa/update1.jpg" />
 <File Ver="1.0.0.0" Name="aaa/update2.jpg" />
 <File Ver="1.0.0.0" Name="aaa/update3.jpg" />
  </UpdateFileList>
  <RunOnceExeFileList>
    <File Ver="1.0.0.0" Name="Run.exe" />
  </RunOnceExeFileList>
  <RunOnceExeFileListHelp>
    <File Ver="1.0.0.0" Name="sql.txt" />
  </RunOnceExeFileListHelp>
</AutoUpdater>

 

更新程序写成一个exe的好处就是其他程序直接调用这个exe文件,方便快捷,不过要手工配置一下xml文件。

 

源代码参考:

http://blog.csdn.net/linjimu/archive/2010/01/08/5155586.aspx

 

最终完成后的程序界面:

自动更新界面

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 C# 实现自动更新的代码示例: ```csharp using System; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Net; using System.Windows.Forms; namespace AutoUpdater { public partial class Form1 : Form { private WebClient _webClient; private readonly string _appPath = Application.StartupPath; private readonly string _updateUrl = "http://example.com/update/version.txt"; private readonly string _updateFilePath = "update.exe"; private readonly string _appExe = "app.exe"; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { CheckForUpdates(); } private void CheckForUpdates() { try { string versionUrl = _updateUrl; string localVersionFile = Path.Combine(_appPath, "version.txt"); string serverVersion = new WebClient().DownloadString(versionUrl); string localVersion = File.Exists(localVersionFile) ? File.ReadAllText(localVersionFile) : ""; if (serverVersion != localVersion) { if (MessageBox.Show("A new version is available. Do you want to update now?", "Update Available", MessageBoxButtons.YesNo) == DialogResult.Yes) { UpdateApp(); } } } catch (Exception ex) { MessageBox.Show("Error checking for updates: " + ex.Message); } } private void UpdateApp() { try { _webClient = new WebClient(); _webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(UpdateCompleted); Uri updateUrl = new Uri(_updateUrl); _webClient.DownloadFileAsync(updateUrl, _updateFilePath); } catch (Exception ex) { MessageBox.Show("Error updating application: " + ex.Message); } } private void UpdateCompleted(object sender, AsyncCompletedEventArgs e) { try { Process.Start(_updateFilePath, _appExe); Application.Exit(); } catch (Exception ex) { MessageBox.Show("Error starting updated application: " + ex.Message); } } } } ``` 这个示例应该可以满足简单的自动更新需求。它会从指定的 URL 下载一个版本文件,检查本地版本与远程版本是否一致,如果不一致则提示用户更新。如果用户选择更新,则下载更新程序并启动,替换当前程序。请注意,这个示例并没有考虑程序正在运行的情况,如果程序正在运行,则更新程序可能无法替换当前程序文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值