/// <summary> /// Downloads update package and installs it /// </summary> /// <param name="updateInfo"></param> public void DownloadUpdateAndInstall(UpdateInformationType updateInfo) { string updatePhisycalFile = GetUpdateLocalFileName(updateInfo.DownloadUrl); if (File.Exists(updatePhisycalFile)) File.Delete(updatePhisycalFile); GetDataFile(updateInfo.DownloadUrl, updatePhisycalFile); Install(updatePhisycalFile); }
/// <summary> /// Check update package information for existing update /// </summary> /// <returns>Returns if package contains update data</returns> public bool CanUpdate(out UpdateInformationType updateInfo) { byte[] bytes = GetDataBytes(_AutoUpdateInfoUrl); updateInfo = GetUpdateInfoFromXmlBytes(bytes); try { double current = Convert.ToDouble(_CurrentVersion); double update = Convert.ToDouble(updateInfo.UpdateVersion); return update > current; } catch { return (updateInfo.UpdateVersion.CompareTo(_CurrentVersion) > 0); } }
private UpdateInformationType GetUpdateInfoFromXmlBytes(byte[] xmlBytes) { UpdateInformationType result = new UpdateInformationType(); string docContent = Encoding.UTF8.GetString(xmlBytes); XmlDocument doc = new XmlDocument(); try { doc.LoadXml(docContent); XmlNode node; XmlNode rootNode = doc.SelectSingleNode("root"); node = rootNode.SelectSingleNode("UpdateVersion"); result.UpdateVersion = node.InnerText; node = rootNode.SelectSingleNode("DownloadUrl"); result.DownloadUrl = node.InnerText; } catch { } return result; }