由于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架构:)

相关文章: