/// <summary> /// Writes the Test specified to the file specified using the specified encoding /// </summary> /// <param name="test">The test to write</param> /// <param name="path">The file to write to</param> /// <param name="encoding">The encoding to write with</param> public static AutoUpdateManifest Read(string path) { AutoUpdateManifest manifest = null; // create a new test writer using (FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read)) { // create a reader to read the manifest XmlAutoUpdateManifestReader reader = new XmlAutoUpdateManifestReader(stream); // read the manifest manifest = reader.Read(); stream.Close(); } return(manifest); }
/// <summary> /// Instructs the AutoUpdateDownloader to query for the latest version available /// </summary> /// <param name="progressViewer">The progress viewer by which progress should be displayed</param> /// <param name="options">The options that affect this downloader</param> /// <param name="productToUpdate">The product descriptor for the product that should be updated</param> /// <param name="updateAvailable">The download descriptor that describes the download that could potentially occur</param> /// <returns></returns> public override bool QueryLatestVersion(IProgressViewer progressViewer, AutoUpdateOptions options, AutoUpdateProductDescriptor productToUpdate, out AutoUpdateDownloadDescriptor updateAvailable) { updateAvailable = null; try { // use the web service to query for updates Debug.WriteLine(string.Format("Querying the 'Alternate Download Path' for the latest version of '{0}'.\n\tThe current product's version is '{1}'.\n\tThe current product's id is '{2}'.\n\tThe path is '{3}'.", productToUpdate.Name, productToUpdate.Version.ToString(), productToUpdate.Id, options.AlternatePath), MY_TRACE_CATEGORY); XmlNode node = ManifestQueryEngine.QueryLatestVersion(options.AlternatePath, productToUpdate.Name, productToUpdate.Version.ToString(), productToUpdate.Id); // if the service returned no results, then there is no update availabe if (node == null) { // bail out Debug.WriteLine(string.Format("No updates are available from the 'Alternate Download Path' at '{0}' for this product.", options.AlternatePath), MY_TRACE_CATEGORY); return false; } // otherwise create a reader and try and read the xml from the xml node returned from the web service XmlAutoUpdateManifestReader reader = new XmlAutoUpdateManifestReader(node); // using the reader we can recreate the manifeset from the xml AutoUpdateManifest manifest = reader.Read(); /* * now create a download descriptor that says, yes we have found an update. * we are capable of downloading it, according to these options. * the autoupdate manager will decide which downloader to use to download the update * */ updateAvailable = new AutoUpdateDownloadDescriptor(manifest, this, options); // just to let everyone know that there is a version available Debug.WriteLine(string.Format("Version '{0}' of '{1}' is available for download.\n\tThe download url is '{2}'.\n\tThe size of the download is {3}.", updateAvailable.Manifest.Product.Version.ToString(), updateAvailable.Manifest.Product.Name, updateAvailable.Manifest.UrlOfUpdate, this.FormatFileLengthForDisplay(updateAvailable.Manifest.SizeOfUpdate)), MY_TRACE_CATEGORY); return true; } catch(ThreadAbortException) { } catch(Exception ex) { Debug.WriteLine(ex, MY_TRACE_CATEGORY); throw; } return false; }
/// <summary> /// Writes the Test specified to the file specified using the specified encoding /// </summary> /// <param name="test">The test to write</param> /// <param name="path">The file to write to</param> /// <param name="encoding">The encoding to write with</param> public static AutoUpdateManifest Read(string path) { AutoUpdateManifest manifest = null; // create a new test writer using (FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read)) { // create a reader to read the manifest XmlAutoUpdateManifestReader reader = new XmlAutoUpdateManifestReader(stream); // read the manifest manifest = reader.Read(); stream.Close(); } return manifest; }