C/S框架主程序调用版本自动升级程序(CSFrameworkV5.AutoUpgrader)VersionCheckNEW类
![]() ![]() Program.cs文件,调用调用版本自动升级程序: C# Code: //系统配置:是否启动版本自动升级程序 if (SystemSettings.Current.CheckVersion) { bool exitApp = false; VersionCheckNEW.AutoUpgrader(ref exitApp); if (exitApp) return;//检测到新版本,退出程序 } //来源:C/S框架网 | www.csframework.com | QQ:23404761 自动升级检测: C# Code: /// <summary> /// 自动升级 /// </summary> public static void AutoUpgrader(ref bool exitApp) { //CSFramework.AutoUpgrader.exe string file = Application.StartupPath + @"\" + DEF_UPGRADER_NAME; //本地没有升级程序文件,不进行自我升级 if (!File.Exists(file)) return; frmWaiting.ShowMe(null, "正在获取最新的升级程序......."); VersionCheckNEW.CheckUpgraderByDownloader(); frmWaiting.ShowMe(null, "正在获取升级包......."); VersionCheckNEW.CheckVersion(ref exitApp); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 C# Code: /// <summary> /// 检查版本升级程序,有新版本自动下载 /// </summary> /// <returns>True:有新版本, False:无新版本</returns> public static bool CheckUpgraderByDownloader() { string upgraderPath = Application.StartupPath + @"\" + DEF_UPGRADER_NAME; string serverVer = ""; try { //获取升级程序的程序集 byte[] fileData = File.ReadAllBytes(upgraderPath); Assembly upgrader = Assembly.Load(fileData); //通过.NET反射机制创建UpgraderController实例 Type t = upgrader.GetType(DEF_UPGRADER_CONTROLLER); object o = t.Assembly.CreateInstance(t.FullName); MethodInfo M = t.GetMethod("DownloadUpgrader"); //调用DownloadUpgrader方法 //参数名:destPath,传值:upgraderPath==Application.StartupPath object r = M.Invoke(o, new object[] { upgraderPath }); serverVer = r.ToString(); if (serverVer != "")//有新版本,保存配置文件 { IniFile ini = new IniFile(Application.StartupPath + @"\" + UpgraderINIFile); ini.IniWriteValue("Setup", "UpgraderFileVersion", serverVer.ToString());//写入版本号 } } catch (Exception ex) { LogUserOperate.Write(ex); Msg.Warning("检查升级程序失败!\r\n" + ex.Message); } return serverVer != ""; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 C# Code: /// <summary> /// 检查升级包,有升级包要退出主程序进行升级 /// </summary> /// <param name="AppExit">退出应用程序</param> public static void CheckVersion(ref bool AppExit) { AppExit = false; try { string fileName = Guid.NewGuid().ToString().Replace("-", "") + ".ver";//生成版本临时文件名 string checkResultFile = Application.StartupPath + @"\" + fileName; //存储版本号的临时文件路径 string upgrader = Application.StartupPath + "\\" + DEF_UPGRADER_NAME;//升级程序文件名 File.WriteAllText(checkResultFile, ""); //创建空文件 //运行升级程序 Process pro = new Process(); pro.StartInfo = new ProcessStartInfo(upgrader, Arg_CheckVersion + " " + fileName);//获取升级包的文件数 pro.StartInfo.UseShellExecute = false; pro.Start(); pro.WaitForExit(WAIT_SECONDS);//等待升级程序关联程序退出 frmWaiting.HideMe(null); //如果生成临时文件,返回可更新的文件数。如:1c9cc55be36e4be9881ab0e416764e45.ver if (File.Exists(checkResultFile)) { string result = File.ReadAllText(checkResultFile);//读取临时文件内容 File.Delete(checkResultFile); //删除临时文件 if ((result != "") && (int.Parse(result) > 0))//有新版本,升级包的文件数>0 { AppExit = true; //启动CS5标配升级程序,程序参数:MainEXECall,传入1个参数. //Process.Start(upgrader, Arg_MainEXECall); //启动通用升级程序,程序参数:MainEXECall XXX.exe,传入2个参数.2018-05-12 Process.Start(upgrader, Arg_MainEXECall + " " + DEF_MAIN_PROGRAM_NAME); } } } catch (Exception ex) { LogUserOperate.Write(ex); Msg.ShowError("检查版本失败!CheckVersion:" + ex.Message); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 C/S 系统版本自动升级软件V1.0![]() ![]()
|