Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }