自动更新解决方案

由于boss不让使用smart client,所以只好使用下载-覆盖-重启应用程序的三步骤
首先,我们需要一个Loader程序,来引导主程序
https://files.cnblogs.com/wildfish/AppUpdateStarter.rar
第二,在主程序中
//获取船坞系统的程序集
            
//注意区分大小写
            Assembly asm = Assembly.LoadFrom(Application.StartupPath + Path.DirectorySeparatorChar + "SD.dll");
            
//获取版本信息
            string curVersion = VersionConfig.GetVersion(asm);
            
//确认窗口
            Form_UpdateConfirm confirmForm = new Form_UpdateConfirm();
            
//校验版本对象            
            CheckVersionSystem checkVersion = new CheckVersionSystem(confirmForm, "SDSYSTEM", curVersion, Application.StartupPath, false);
            
bool needRestart = false;
            
//更新状态窗口
            Form_UpdateState stateForm = new Form_UpdateState(checkVersion);
            
//判断版本,尝试升级            
            checkVersion.TryUpdate(ref needRestart);

            
//如果需要重新启动
            if (needRestart)
            
{
                Environment.ExitCode 
= 2//the surrounding AppStarter must look for this to restart the app.
                MessageBox.Show("提示:系统更新完毕!请重新启动!""更新完毕");
            }

            
else
            
{
                Form_SD_Main doc_SD 
= new Form_SD_Main();
                Application.Run(doc_SD);
            }


第三步,安装程序要按照如下目录方式来制作
外层的目录,一个Loader程序,一个配置文件,应用程序的文件夹


这个是Penavicoxm文件夹内部的内容

这样我们就可以可控的控制应用系统的升级
当然了这种方式存在一种缺点,不能及时有效的让用户更新,用户只有重新进入系统的时候才会体现更新
如果为了比较及时地,最好使用smart client,或者用b/s架构:)
posted @ 2005-04-30 10:53  深渊野鱼  阅读(581)  评论(0编辑  收藏  举报