开发系统时,很多时候都要开发系统升级程序。升级程序的方式大多相同。目前我开发一个升级程序是这样的。启动主程序的同时启动升级程序,通过升级程序获取服务器上版本配置文件,判断当前的系统版本是否最新的版本。若是最新版本,则升级程序关闭。否则弹出提示有新版本需要下载,然后远程服务器上下载新版本,下载后提示关闭正在运行的主程序,使用新版本覆盖旧版本程序,并将配置文件中的版本号更新为最新程序的版本号。
下面贴出我开发的升级程序的部分代码:
/// <summary>
/// 检查是否有更新
/// </summary>
public void checkUpdate()
{
string updateUrl = "http://172.16.10.199:8040/DownloadWinecooler/update.xml";//升级配置的XML文件地址
if (ConfigurationManager.AppSettings["updateUrl"] != null)
{
updateUrl = ConfigurationManager.AppSettings["updateUrl"].ToString();
}
TextLog.AppendText(updateUrl);
TextLog.AppendText("\r\n");
//将信息写入到日志输出文件
string strOuput = string.Format("Url:{0}!\n", updateUrl);
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
SoftUpdate app = new SoftUpdate(Application.ExecutablePath, "Update", updateUrl);
app.UpdateFinish += new UpdateState(app_UpdateFinish);
try
{
//if (app.IsUpdate && MessageBox.Show("检查到新版本,是否更新?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
if (app.IsUpdate)
{
strOuput = string.Format("有新版本,正在下载中...\n");
TextLog.AppendText(strOuput);
//将信息写入到日志输出文件
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
Thread update = new Thread(new ThreadStart(app.Update));
update.Start();
}
else
{
strOuput = string.Format("已经是最新版本了\n");
TextLog.AppendText(strOuput);
//将信息写入到日志输出文件
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
RestartPC();
}
}
catch (Exception ex)
{
ex.ToString();
//MessageBox.Show(ex.Message);
strOuput = string.Format("下载出错啦!\n");
TextLog.AppendText(strOuput);
//将信息写入到日志输出文件
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
RestartPC();
}
}
/// <summary>
/// 更新完成
/// </summary>
/// <param name="strPathName"></param>
void app_UpdateFinish(string strPathName)
{
filename = strPathName;
string strOuput = string.Format("更新完成!\n");
TextLog.AppendText(strOuput);
//将信息写入到日志输出文件
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
//然后更新新程序
PostMessage(this.Handle, MYMESSAGE_UPDATE, "", ""); //发用户自定义消息
}
/// <summary>
/// 重写窗体的消息处理函数DefWndProc,从中加入自己定义消息 MYMESSAGE_UPDATE 的检测的处理入口
/// </summary>
/// <param name="m"></param>
protected override void DefWndProc(ref Message m)
{
switch (m.Msg)
{
//接收自定义消息MYMESSAGE,并显示其参数
case MYMESSAGE_UPDATE:
{
//KillProcess("calc.exe");//计算器的例子
string strOuput = string.Format("准备用新版本的的程序覆盖旧程序,关闭当前酒柜系统\n");
//将信息写入到日志输出文件
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
KillProcess("SysMain");//
strOuput = string.Format("启动刚才下载的安装包覆盖旧版本程序,当前新版本为:{0}\n",SoftUpdate.newVerson);
ConfigManager.UpdateOrCreateAppSetting("Main.exe.config", "Version", SoftUpdate.newVerson);
//将信息写入到日志输出文件
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
ShellExecute(0, "open", filename, "", "", ShowCommands.SW_SHOWNORMAL);
Thread.Sleep(1000);
//输出的调试字符串
strOuput = string.Format("更新酒柜客户端系统完成,准备重新启动电脑\n");
//将信息写入到日志输出文件
SoftUpdate.TP_WriteAppLogFile(SoftUpdate.g_AppLogFileName, strOuput);
RestartPC();
}
break;
default:
base.DefWndProc(ref m);
break;
}
}
分享到:
相关推荐
北京现代领动16-18款车机系统升级程序20180314 ADc PIO 升级程序(时钟改善)20180314领动
1.点击V100_UpdateSetup.exe安装系统升级软件。 2.请用户在开机状态下,使用USB连线将计算机与V100学习机连接,并且确保成功。 3.运行已安装的升级软件“V100_SysUpdate.exe”。 4.系统程序升级: a.请选择V100...
长城哈弗H6导航系统升级程序
长城哈弗H6导航系统升级程序 H6航盛SD卡主程序5.9.1
易飞ERP8090采购与财务程序的升级程序
网站程序\学校系统升级版网站程序\学校系统升级版网站程序\学校系统升级版网站程序\学校系统升级版网站程序\学校系统升级版网站程序\学校系统升级版
DDS预警系统升级工具主要用于系统快速简单的升级
本人写的针对WinForm程序自动升级程序,适用于所有WinForm客户端程序,非常方便,分享给大家共同学习。
GPS预警数据升级系统
GPS电子狗数据升级程序
1、c#应用程序在线升级程序,通用各种WinForm系统升级程序 2、此源码简单易懂,界面简洁漂亮 3、有操作手册可供初学者学习,如果你是老鸟,估计不用看都会操作,呵呵,废话不多说,没做过升级程序的童鞋可以看看
PHP实例开发源码—LOGA 日志系统升级程序.zip PHP实例开发源码—LOGA 日志系统升级程序.zip PHP实例开发源码—LOGA 日志系统升级程序.zip
基于STM32芯片的BOOTLOARDER程序,采用SD卡进行程序升级,并移植FATFS文件系统。有需要的朋友请就行关注
JAVA项目更新升级程序,用来升级JAVAWEB项目,非常实用,并且采用了线程,运行时双线程运行。
公务员管理系统2.0升级程序,用于公务员管理系统的升级使用。
2、 Autoup \Updater\AutoRun为系统升级时是否向用户提示,由用户决定是否升级,值为0时为不提示,非0向用户提示,这个功能没做。 3、 Autoup \Updater\Url为升级服务器的FTP地址,此升级程序需要在服务器上建立一个...
简述了山西晋煤集团赵庄洗煤厂生产自动控制系统的原理和结构、系统的软硬件设计,并根据系统的发展,对其在软硬件方面进行全面升级,由此证实了控制系统随着设备的升级改造同步进行升级改造的可行性和必要性。
警告:本升级程序仅适用于EQ1小蚂蚁151、251系列中控大屏升级,400不可用! 1、把压缩包下载后解压; 2、准备一个U盘,格式化成FAT32格式; 3、把解压后升级程序文件夹里的25个文件和文件夹复制到格式化后U盘的根...
基于STM32F407ZGT6 1MFlash 前32K放置Bootload,此程序有USB host驱动,文件系统共约28k,插上U盘开机自动读入U盘内的bin文件,printf重定向为UART6,可修改为自己需要的,升级完成后拔掉U盘,重启即可运行。...