/// <summary> /// 升级更新下载后未更新,通过读取数据库更新记录进行更新 /// </summary> /// <returns></returns> public string UpdateSoftware(out bool isForce) { string DowloadPath = string.Empty; isForce = false; var entityList = SoftwareVersionService.LoadEntities(x => x.LBBM == (int)LbblmType.Client && x.IsDownComplete.HasValue && x.IsDownComplete.Value).OrderByDescending(x => x.ID).FirstOrDefault(); if (entityList != null) { string clientVersion = System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString(); if (GetClientVersionToDouble(clientVersion) < GetClientVersionToDouble(entityList.Version)) { DowloadPath = entityList.DowloadPath; isForce = entityList.IsForceUpdate.HasValue && entityList.IsForceUpdate.Value; } } return(DowloadPath); }
/// <summary> /// 检查客户端、开票软件升级 /// </summary> /// <returns>true:相同,false:不同</returns> public bool CheckClientUpdate(int LBBM, out string serverClientVersion, out bool isForce) { serverClientVersion = string.Empty; string localVersion = string.Empty; isForce = false; try { var entity = SoftwareVersionService.LoadEntities(x => x.LBBM == LBBM && x.IsDownComplete == true).OrderByDescending(x => x.ID).FirstOrDefault(); if (LBBM == (int)LbblmType.Client) { localVersion = entity != null ? entity.Version : System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString(); } string strRequest = new JavaScriptSerializer().Serialize(new { LBBM = LBBM.ToString() }); bool result = false; string errorMsg = string.Empty; serverClientVersion = WSInterface.GetResponse(strRequest, InterfaceType.CX, ref result, out errorMsg); if (result) { dynamic serverVersionResponse = new JsonSerializer().Deserialize <dynamic>(new JsonTextReader(new StringReader(serverClientVersion))); if (LBBM == (int)LbblmType.Client && GetClientVersionToDouble(localVersion) < GetClientVersionToDouble(serverVersionResponse.VERSION.ToString())) { serverClientVersion = serverVersionResponse.VERSION.ToString(); if (serverVersionResponse.QZSJBZ.ToString() == ForceUpdate.Force.GetHashCode().ToString()) { isForce = true; } return(false); } } return(true); } catch (Exception e) { Logging.Log4NetHelper.Error(typeof(MainWindowService), Message.CheckVersion + e.ToString()); } return(true); }
/// <summary> /// 升级服务器下载最新版本软件 /// </summary> /// <param name="LBBM">类别编码, 1:开票软件2:客户端软件</param> /// <param name="filePath">客户端更新包路径</param> /// <returns></returns> public bool DownloadSoftware(int LBBM, ref string filePath) { bool isNewVersion = false; string serverClientVersion; bool isForce = false; try { if (!CheckClientUpdate(LBBM, out serverClientVersion, out isForce)) { string updateDirectory = string.Empty; string RelativeFilePath = string.Empty; if (!string.IsNullOrEmpty(serverClientVersion)) { RelativeFilePath = "UpdatePackage" + @"\" + LbblmType.Client.ToString() + @"\" + serverClientVersion; //存放更新包路径 updateDirectory = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, RelativeFilePath); } if (!Directory.Exists(updateDirectory)) { Directory.CreateDirectory(updateDirectory); } string strRequest = "{\"LBBM\":\"" + LBBM + "\",\"VERSION\":\"" + serverClientVersion + "\"}"; bool result = true; string errorMsg = string.Empty; string ret = WSInterface.GetResponse(strRequest, InterfaceType.DownLoad, ref result, out errorMsg); if (!result) { return(false); } string localFileName = string.Empty; string serverFileUrl = string.Empty; string serverMd5 = string.Empty; if (!string.IsNullOrEmpty(ret)) { dynamic downLoadResponse = new JsonSerializer().Deserialize <dynamic>(new JsonTextReader(new StringReader(ret))); serverFileUrl = downLoadResponse.FILEURL.ToString(); serverMd5 = downLoadResponse.MD5; localFileName = updateDirectory + "\\" + System.IO.Path.GetFileName(serverFileUrl); RelativeFilePath += "\\" + System.IO.Path.GetFileName(serverFileUrl); } bool isFinish = false; DownloadHelper downLoadHelper = new DownloadHelper(serverFileUrl, updateDirectory); downLoadHelper.GetTotalSize(); if (!File.Exists(localFileName) || (File.Exists(localFileName) && new FileInfo(localFileName).Length < downLoadHelper.TotalSize)) { Logging.Log4NetHelper.Info(typeof(MainWindowService), string.Format(((LbblmType)LBBM).GetDescription() + Message.DownStart, serverClientVersion)); string downLoadStep = ConfigHelper.GetAppSettingValue("DownloadStep"); downLoadHelper.Step = !string.IsNullOrEmpty(downLoadStep) ? Convert.ToInt32(downLoadStep) : 102400; while (!downLoadHelper.IsFinished) { downLoadHelper.Download(); } isFinish = downLoadHelper.IsFinished; if (isFinish) { Logging.Log4NetHelper.Info(typeof(MainWindowService), string.Format(((LbblmType)LBBM).GetDescription() + Message.UpdateSoftSuccessed, serverClientVersion, downLoadHelper.FilePath)); } } else { if (File.Exists(localFileName) && new FileInfo(localFileName).Length == downLoadHelper.TotalSize) { isFinish = true; } downLoadHelper.OperateFile.Close(); downLoadHelper.OperateFile.Dispose(); } if (isFinish) { string localMd5 = CommonHelper.GetMD5HashFromFile(localFileName); if (localMd5 == serverMd5) { var entity = SoftwareVersionService.GetFirstEntity(x => x.LBBM == LBBM && x.Version == serverClientVersion); if (entity != null) { entity.Version = serverClientVersion; entity.OPERATEDATE = DateTime.Now; entity.DowloadPath = RelativeFilePath; entity.IsDownComplete = true; entity.IsForceUpdate = isForce; SoftwareVersionService.UpdateEntities(entity); } else { entity = new SoftwareVersion(); entity.LBBM = LBBM; entity.Name = ((LbblmType)LBBM).ToString(); entity.Version = serverClientVersion; entity.OPERATEDATE = DateTime.Now; entity.DowloadPath = RelativeFilePath; entity.IsDownComplete = true; entity.IsForceUpdate = isForce; SoftwareVersionService.AddEntities(entity); } filePath = localFileName; isNewVersion = true; } else { Logging.Log4NetHelper.Info(typeof(MainWindowService), PRO_ReceiptsInvMgr.Resources.Message.DownloadMd5Fail); File.Delete(localFileName); isNewVersion = false; } } } } catch (Exception ex) { Logging.Log4NetHelper.Error(typeof(MainWindowService), (LBBM == LbblmType.Client.GetHashCode() ? Message.ClientUpdateError : Message.FwkpUpdateFailed) + ex.Message + System.Environment.NewLine + ex.StackTrace); isNewVersion = false; } return(isNewVersion); }