/// <summary> /// 检查是否有新版本 /// 以更新日志中最后一个版本号为准 /// 如果出错则不更新 /// Author:Johnny /// Time:2013-08-24 /// EditTime:2014-08-18 /// LastEditTime:2016-07-10 /// </summary> /// <param name="remoteHost">IP地址或域名</param> /// <param name="shareName">共享名</param> /// <param name="userName">帐号</param> /// <param name="passWord">密码</param> /// <param name="exVersion">版本号前的提示字符</param> /// <returns></returns> public bool CheckUpdate(string remoteHost, string shareName, string userName, string passWord, string exVersion) { try { FileUpDownHelper.Connect(remoteHost, shareName, userName, passWord); string newVersion = XMLHelper.GetItemValue(_configPath, "version", _updateVersion); if (!FileHelper.IsExistFile(_updateLogPath)) { FileHelper.CreateFile(_updateLogPath); } var updateInfo = FileHelper.GetContent(_updateLogPath); string localVersion = "0"; for (int i = updateInfo.Length - 1; i >= 0; i--) { if (updateInfo[i].IndexOf(exVersion) != -1) { localVersion = updateInfo[i].Replace(exVersion, ""); break; } } if (newVersion != localVersion) { int versionCount = XMLHelper.GetItemCount(_configPath, "version"); while (newVersion != localVersion && _updateVersion + 1 < versionCount) { newVersion = XMLHelper.GetItemValue(_configPath, "version", ++_updateVersion); } if (localVersion != "0") { _updateVersion--; } return(true); } else { return(false); } } catch { return(false); } }
/// <summary> /// 更新文件 /// Author:Johnny Wong /// Time:2013-08-26 /// LastEditTime:2016-07-15 /// <param name="remoteHost">IP地址或域名</param> /// <param name="shareName">共享名</param> /// <param name="userName">帐号</param> /// <param name="passWord">密码</param> /// <param name="bgw">BackgroundWorker实体</param> /// </summary> /// <returns></returns> public bool UpdateFile(string remoteHost, string shareName, string userName, string passWord, BackgroundWorker bgw) { try { FileUpDownHelper.Connect(remoteHost, shareName, userName, passWord); if (FileHelper.IsExistDirectory(_winformPath + "Temp\\")) { FileHelper.DeleteFolder(_winformPath + "Temp\\"); } FileHelper.CreateFolder(_winformPath + "Temp\\"); var fl = XMLHelper.GetIts(_configPath, _updateVersion); bool isS = true; string localPath = ""; string newFile = ""; string path = ""; string operate = ""; int time = 0; int all = fl.Length + 4; foreach (string ss in fl) { if (isS) { if (!string.IsNullOrWhiteSpace(ss)) { operate = ss.Substring(ss.IndexOf("@") + 1); if (operate == "add") { path = _winformPath + "Temp\\" + ss.Substring(0, ss.IndexOf("@")); FileHelper.CreateFolder(path); } if (operate == "remove") { path = _winformPath + ss.Substring(0, ss.IndexOf("@")); FileHelper.DeleteFolder(path); } } isS = false; } else { if (!string.IsNullOrWhiteSpace(ss)) { localPath = (_winformPath + "Temp\\" + ss.Substring(0, ss.IndexOf("@"))).Replace("\\", "/"); newFile = "\\\\" + _serverAddress + "\\" + ss.Substring(ss.IndexOf("@") + 1); if (newFile == "\\\\" + _serverAddress + "\\" + "remove") { FileHelper.DeleteFile(_winformPath + "\\" + ss.Substring(0, ss.IndexOf("@"))); } else { FileHelper.CopyFile(newFile, localPath); } } isS = true; } time += 1; bgw.ReportProgress(Convert.ToInt32(Convert.ToDouble(time) / Convert.ToDouble(all) * 100)); } FileHelper.CopyFolder(_winformPath + "Temp\\", _winformPath); time += 1; bgw.ReportProgress(Convert.ToInt32(Convert.ToDouble(time) / Convert.ToDouble(all) * 100)); FileHelper.DeleteFolder(_winformPath + "Temp\\"); time += 1; bgw.ReportProgress(Convert.ToInt32(Convert.ToDouble(time) / Convert.ToDouble(all) * 100)); string updateInfo = XMLHelper.GetItemValueByKey(_configPath, "version", "updateInfo"); time += 1; bgw.ReportProgress(Convert.ToInt32(Convert.ToDouble(time) / Convert.ToDouble(all) * 100)); FileHelper.AppendText(_updateLogPath, "\r\n" + updateInfo + "\r\n\r\n"); time += 1; bgw.ReportProgress(Convert.ToInt32(Convert.ToDouble(time) / Convert.ToDouble(all) * 100)); } catch { return(false); } return(true); }