首先,我们需要一个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);
}
//注意区分大小写
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架构:)