public static bool NeedsUpdate(string latest, string current, ref BuildNumber latestBuildNumber, ref BuildNumber currentBuildNumber) { string[] latestSplit = latest.Split('.'); string[] currentSplit = current.Split('.'); try { latestBuildNumber.Major = int.Parse(latestSplit[0]); latestBuildNumber.Minor = int.Parse(latestSplit[1]); latestBuildNumber.Build = int.Parse(latestSplit[2]); latestBuildNumber.Revision = int.Parse(latestSplit[3]); currentBuildNumber.Major = int.Parse(currentSplit[0]); currentBuildNumber.Minor = int.Parse(currentSplit[1]); currentBuildNumber.Build = int.Parse(currentSplit[2]); currentBuildNumber.Revision = int.Parse(currentSplit[3]); } catch (Exception) { return(false); } if (latestBuildNumber.Major <= currentBuildNumber.Major) { if (latestBuildNumber.Minor <= currentBuildNumber.Minor) { if (latestBuildNumber.Build == currentBuildNumber.Build) { return(latestBuildNumber.Revision > currentBuildNumber.Revision); } return(latestBuildNumber.Build > currentBuildNumber.Build); } return(true); } return(true); }
public override void DumpBody(XmlWriter writer) { writer.WriteElementString("product-id", ProductId.ToString()); writer.WriteElementString("edition", Edition.ToString()); writer.WriteElementString("major-version", MajorVersion.ToString()); writer.WriteElementString("minor-version", MinorVersion.ToString()); writer.WriteElementString("build-number", BuildNumber.ToString()); writer.WriteElementString("build-date", BuildDate.ToString()); }
public override int GetHashCode() { unchecked { var hashCode = Version.GetHashCode(); hashCode = (hashCode * 397) ^ BuildNumber.GetHashCode(); hashCode = (hashCode * 397) ^ Commit.GetHashCode(); return(hashCode); } }
public LicenseManager(ServerStore serverStore) { _serverStore = serverStore; _buildInfo = new BuildNumber { BuildVersion = ServerVersion.Build, ProductVersion = ServerVersion.Version, CommitHash = ServerVersion.CommitHash, FullVersion = ServerVersion.FullVersion }; }
public BuildNumber2() { using (var store = new DocumentStore()) { #region build_number_2 BuildNumber buildNumber = store .DatabaseCommands .GlobalAdmin .GetBuildNumber(); #endregion } }
public int CompareTo(VersionInfo other) { int majorCompare = Major.CompareTo(other?.Major); if (majorCompare != 0) { return(majorCompare); } int minorCompare = Minor.CompareTo(other?.Minor); if (minorCompare != 0) { return(minorCompare); } int patchCompare = Patch.CompareTo(other?.Patch); if (patchCompare != 0) { return(patchCompare); } int revisionCompare = BuildNumber.CompareTo(other?.BuildNumber); if (revisionCompare != 0) { return(revisionCompare); } if (BuildNumber == 0 && other?.BuildNumber == 0) { if (!IsBasedOnDevMark && other.IsBasedOnDevMark) { return(1); } else if (IsBasedOnDevMark && !other.IsBasedOnDevMark) { return(-1); } } string preReleaseTag = PreReleaseTag ?? string.Empty; string otherPreReleaseTag = other?.PreReleaseTag ?? string.Empty; if (preReleaseTag != otherPreReleaseTag) { return(preReleaseTag.CompareTo(otherPreReleaseTag)); } return(0); }
public static bool TryParse(string input, out BuildNumber buildNumber) { try { buildNumber = Parse(input); return(true); } catch { buildNumber = null; return(false); } }
public static void Reset() { var currentBuildNumber = BuildNumber.Get(); var result = EditorUtility.DisplayDialog("Reset Build Number?", $"Are you sure you want to reset build number?\n\nCurrent build number: {currentBuildNumber}", "Reset", "Cancel"); if (result) { BuildNumberProcessor.Reset(); } }
/// <summary> /// Gets the build number object corresponding to the project + version pair. Outputs the build tracker object and the version text's input build number. /// Returns whether the finding was successful /// </summary> /// <param name="project">The project name.</param> /// <param name="version">The version text.</param> /// <param name="foundNumber">The found build tracker.</param> /// <param name="userBuild">The user build number.</param> /// <returns>Whether a build was found.</returns> public static bool TryGetBuildFor(string project, string version, out BuildNumber foundNumber, out int userBuild) { foreach (BuildNumber number in BuildNumbers) { if (number.BelongsTo(project, version, out userBuild)) { foundNumber = number; return(true); } } foundNumber = null; userBuild = 0; return(false); }
/// <summary> /// Executes the task - initialize the build number and package version. /// Build number is increased and the updated package version information is stored back to version.props file /// </summary> /// <returns>True</returns> public override bool Execute() { if (DebugTasks) { //Wait for debugger Log.LogMessage( MessageImportance.High, $"Debugging task {GetType().Name}, set the breakpoint and attach debugger to process with PID = {System.Diagnostics.Process.GetCurrentProcess().Id}"); while (!System.Diagnostics.Debugger.IsAttached) { Thread.Sleep(1000); } } //increase the build number BuildNumber = BuildNumber + 1; //process the package version var ver = $"{Major}.{Minor}.{Patch}"; var dt = System.DateTime.Now.ToString("yyMMddHHmmss"); if (Configuration.ToLower() != "release") { PackageVersionShort = $"{ver}-dev.{BuildNumber}.{dt}"; PackageVersionFull = $"{PackageVersionShort}+{GitCommits}.{GitBranch}.{GitCommit}"; } else { PackageVersionShort = ver; PackageVersionFull = $"{PackageVersionShort}+{BuildNumber}.{dt}.{GitBranch}.{GitCommit}"; } //update version file var document = XDocument.Load(VersionFile); var projectNode = GetOrCreateElement(document, "Project"); SetProjectPropertyNode(projectNode, "RadBuild", BuildNumber.ToString()); SetProjectPropertyNode(projectNode, "PackageVersionShort", PackageVersionShort); SetProjectPropertyNode(projectNode, "PackageVersionFull", PackageVersionFull); SetProjectPropertyNode(projectNode, "GitCommit", GitCommit); SetProjectPropertyNode(projectNode, "GitBranch", GitBranch); File.WriteAllText(VersionFile, document.ToString()); Log.LogMessage($@"Updated version file: version {Major}.{Minor}.{Patch}, package: {PackageVersionFull}, build #{BuildNumber} to {VersionFile}"); return(true); }
public void SaveSettings() { Configuration c = ConfigurationManager.OpenExeConfiguration("hMailServer builder.exe"); c.AppSettings.Settings["SourcePath"].Value = SourcePath; c.AppSettings.Settings["BuildNumber"].Value = BuildNumber.ToString(); c.AppSettings.Settings["Version"].Value = Version; c.AppSettings.Settings["VSPath"].Value = VSPath; c.AppSettings.Settings["InnoSetupPath"].Value = InnoSetupPath; c.AppSettings.Settings["SubversionPath"].Value = SubversionPath; c.AppSettings.Settings["MSBuildPath"].Value = MSBuildPath; c.Save(ConfigurationSaveMode.Modified); }
public bool SaveToFile(string productCodeName, string versionCodeName) { var dirPath = Path.Combine(AppGlobal.AppDataDirectory, productCodeName, versionCodeName); var XMLFilePath = Path.Combine(dirPath, string.Format("{0}.{1}", CodeName, RelXMLExtension)); var xDoc = new XmlDocument(); var declarationNode = xDoc.CreateXmlDeclaration("1.0", "", ""); xDoc.AppendChild(declarationNode); var comment = xDoc.CreateComment(string.Format("This file contains information about {0} - {1}", CodeName, DisplayName)); xDoc.AppendChild(comment); var docRoot = xDoc.CreateElement(xtRelease); XmlNode ndCodeName = xDoc.CreateElement(xtReleaseCode), ndDisplayName = xDoc.CreateElement(xtDisplayName), ndDescription = xDoc.CreateElement(xtDescription), ndStage = xDoc.CreateElement(xtStage), ndTargetDate = xDoc.CreateElement(xtTargetDate), ndRiskLevel = xDoc.CreateElement(xtRiskLevel), ndBuildNumber = xDoc.CreateElement(xtBuildNumber), ndReleaseType = xDoc.CreateElement(xtReleaseType); ndCodeName.InnerText = CodeName; ndDisplayName.InnerText = DisplayName; ndDescription.InnerText = Description; ndStage.InnerText = Stage.ToString(); ndTargetDate.InnerText = TargetDate; ndRiskLevel.InnerText = Risk.ToString(); ndBuildNumber.InnerText = BuildNumber.ToString(); ndReleaseType.InnerText = ReleaseType.ToString(); docRoot.AppendChild(ndCodeName); docRoot.AppendChild(ndDisplayName); docRoot.AppendChild(ndDescription); docRoot.AppendChild(ndStage); docRoot.AppendChild(ndTargetDate); docRoot.AppendChild(ndRiskLevel); docRoot.AppendChild(ndBuildNumber); docRoot.AppendChild(ndReleaseType); xDoc.AppendChild(docRoot); try { AppGlobal.CreateDirectory(dirPath); xDoc.Save(XMLFilePath); return(true); } catch (Exception e) { throw new Exception(string.Format("Unable to save Version {0} to file.{1}Message:{2}.", CodeName, Environment.NewLine, e.Message), e); } }
/// <summary> /// Tries to get the version information from the RavenDB server associated with the document store. /// </summary> /// <param name="documentStore">The document store.</param> /// <param name="buildNumber">If the server is reachable, this will output the data containing the product version and build number.</param> /// <param name="timeoutMilliseconds">Timeout in milliseconds. Defaults to 5 seconds.</param> /// <returns>True if the server is online, false otherwise.</returns> public static bool TryGetServerVersion(this IDocumentStore documentStore, out BuildNumber buildNumber, int timeoutMilliseconds = 5000) { try { var task = documentStore.AsyncDatabaseCommands.GetBuildNumberAsync(); var success = task.Wait(timeoutMilliseconds); buildNumber = task.Result; return(success); } catch { buildNumber = null; return(false); } }
public override int GetHashCode() { unchecked { var hashCode = (ZipCode != null ? ZipCode.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (StreetName != null ? StreetName.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (BuildNumber != null ? BuildNumber.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (District != null ? District.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Complement != null ? Complement.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (City != null ? City.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (State != null ? State.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Country != null ? Country.GetHashCode() : 0); return(hashCode); } }
public SampleAppsFixture() { BuildNumber = Environment.GetEnvironmentVariable(BUILD_NUMBER_VAR) ?? Guid.NewGuid().ToString(); BuildNumber = BuildNumber.Replace('.', '_'); // Dots are invalid in Kubernetes service names var storageKey = Environment.GetEnvironmentVariable(STORAGE_KEY_VAR); Console.WriteLine("Using storage key \"{0}...\" from environment variable \"{1}\"", storageKey.Substring(0, 4), STORAGE_KEY_VAR); FolderName = "SampleApps-" + BuildNumber; fileShare = CloudStorageAccount.Parse($"DefaultEndpointsProtocol=https;AccountName={STORAGE_ACCOUNT_NAME};AccountKey={storageKey};EndpointSuffix=core.windows.net") .CreateCloudFileClient() .GetShareReference(STORAGE_SHARE_NAME); UploadToFileShare(fileShare, FolderName); KubernetesClientConfiguration config; string kubeConfig = Environment.GetEnvironmentVariable(KUBECONFIG_VAR); if (string.IsNullOrEmpty(kubeConfig)) { config = KubernetesClientConfiguration.BuildConfigFromConfigFile(); } else { byte[] configByteArray = System.Text.Encoding.UTF8.GetBytes(kubeConfig); using (var stream = new MemoryStream(configByteArray)) { config = KubernetesClientConfiguration.BuildConfigFromConfigFile(stream); } } Client = new Kubernetes(config); // Create a PV for our Azure File share and a corresponding claim if they don't already exist // If these fail, make sure that they don't already exist in the cluster: `kubectl delete -n default pvc,pv --all` storage = Client.CreatePersistentVolume(Specs.BuildVolume.GetSpec(VOLUME_NAME, STORAGE_REQUESTED_CAPACITY, STORAGE_SHARE_NAME)); storageClaim = Client.CreateNamespacedPersistentVolumeClaim(Specs.BuildVolumeClaim.GetSpec(STORAGE_REQUESTED_CAPACITY), NAMESPACE); Console.WriteLine("Created PersistentVolume and corresponding PersistentVolumeClaim"); // Create the build pod var podSpec = Specs.BuildPod.GetSpec(BUILD_POD_NAME, VOLUME_NAME, storageClaim.Metadata.Name); BuildPod = k8sHelpers.CreatePodAndWait(Client, podSpec, NAMESPACE, k8sHelpers.IsPodRunning).Result; Console.WriteLine("Build pod is up & running"); }
/// <inheritdoc /> public override bool Execute() { // BuildNumber + "0...0" + RevisionNumber. var stamp = BuildNumber.ToString(CultureInfo.InvariantCulture); var revisionString = RevisionNumber.ToString(CultureInfo.InvariantCulture); for (int i = 0; i < 5 - revisionString.Length; i++) { stamp += "0"; } stamp += revisionString; BuildStamp = stamp; return(!Log.HasLoggedErrors); }
private bool ObtenhaVersaoDoServidor(out BuildNumber buildNumber, int timeoutMilliseconds = 5000) { try { var task = Maintenance.Server.SendAsync(new GetBuildNumberOperation()); var success = task.Wait(timeoutMilliseconds); buildNumber = task.Result; return(success); } catch (Exception e) { Console.WriteLine(e.Message); buildNumber = null; return(false); } }
public override int GetHashCode() { int hash = 1; if (TargetEnvId.Length != 0) { hash ^= TargetEnvId.GetHashCode(); } if (ClientVersion.Length != 0) { hash ^= ClientVersion.GetHashCode(); } if (ClientOs != 0) { hash ^= ClientOs.GetHashCode(); } if (OsVersion.Length != 0) { hash ^= OsVersion.GetHashCode(); } if (DeviceModel.Length != 0) { hash ^= DeviceModel.GetHashCode(); } if (deviceInfoCase_ == DeviceInfoOneofCase.IosDeviceInfo) { hash ^= IosDeviceInfo.GetHashCode(); } if (deviceInfoCase_ == DeviceInfoOneofCase.AndroidDeviceInfo) { hash ^= AndroidDeviceInfo.GetHashCode(); } if (BuildNumber.Length != 0) { hash ^= BuildNumber.GetHashCode(); } hash ^= (int)deviceInfoCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
/// <summary> /// [EDITOR_ONLY] Sets build Number. /// </summary> /// <param name="buildNumber"></param> public void SetBuildNumber(int buildNumber) { switch (EditorUserBuildSettings.activeBuildTarget) { case BuildTarget.StandaloneWindows: break; case BuildTarget.StandaloneOSX: PlayerSettings.macOS.buildNumber = BuildNumber.ToString(); break; case BuildTarget.Android: PlayerSettings.Android.bundleVersionCode = BuildNumber; break; case BuildTarget.iOS: PlayerSettings.iOS.buildNumber = BuildNumber.ToString(); break; } }
public unsafe void SetBuildInfo(BuildNumber buildNumber) { using (_contextPool.AllocateOperationContext(out TransactionOperationContext context)) using (var tx = context.OpenWriteTransaction()) { var table = tx.InnerTransaction.OpenTable(_licenseStorageSchema, LicenseInfoSchema.LicenseTree); var id = context.GetLazyString(nameof(BuildNumber)); using (var json = context.ReadObject(buildNumber.ToJson(), nameof(BuildNumber), BlittableJsonDocumentBuilder.UsageMode.ToDisk)) { using (table.Allocate(out TableValueBuilder tvb)) { tvb.Add(id.Buffer, id.Size); tvb.Add(json.BasePointer, json.Size); table.Set(tvb); } } tx.Commit(); } }
// If your activity returns a value, derive from CodeActivity<TResult> // and return the value from the Execute method. protected override void Execute(CodeActivityContext context) { string buildNumber = BuildNumber.Get(context); string smartFrameworkVersion = context.GetValue <string>(SmartFrameworkVersion); if (String.IsNullOrWhiteSpace(smartFrameworkVersion)) { throw new ArgumentNullException("SmartFrameworkVersion", "In UpdateReferences.Execute, SmartFrameworkVersion is null or whitespace."); } Tuple <bool, string> versionValidation = Util.ValidateFrameworkVersion(smartFrameworkVersion); if (versionValidation.Item1) { List <string> solutionFiles = SolutionFiles.Get(context); Workspace workspace = Workspace.Get(context); ReferenceUpdateManager.UpdateReferences(solutionFiles, versionValidation.Item2, workspace); } else { string message = String.Format("{0} is not a valid Smart Framework version.", smartFrameworkVersion); throw new ArgumentException(message); } }
public static void LoadAvailablePlugins() { UpdateView.View.AvailableLoadingInformation.Visibility = Visibility.Visible; UpdateViewModel.Instance.AvailablePlugins.Clear(); UpdateView.View.PluginUpdateSpinner.Spin = true; ShellView.View.PluginUpdateSpinner.Spin = true; Func <bool> update = delegate { List <PluginSourceItem> pluginSourceList = new List <PluginSourceItem>(); try { var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://github.com/Icehunter/ffxivapp/raw/master/PACKAGES.json"); httpWebRequest.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4"; httpWebRequest.Headers.Add("Accept-Language", "en;q=0.8"); httpWebRequest.ContentType = "application/text; charset=utf-8"; httpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (Stream response = httpResponse.GetResponseStream()) { var responseText = string.Empty; if (response != null) { using (var streamReader = new StreamReader(response)) { responseText = streamReader.ReadToEnd(); } } if (httpResponse.StatusCode == HttpStatusCode.OK || !string.IsNullOrWhiteSpace(responseText)) { JArray jsonResult = JArray.Parse(responseText); foreach (JToken jToken in jsonResult) { bool enabled; bool.TryParse(jToken["Enabled"].ToString(), out enabled); var sourceURI = jToken["SourceURI"].ToString(); if (enabled) { pluginSourceList.Add( new PluginSourceItem { Enabled = true, Key = Guid.NewGuid(), SourceURI = sourceURI, }); } } } } } } catch (Exception ex) { Logging.Log(Logger, new LogItem(ex, true)); } foreach (PluginSourceItem pluginSourceItem in UpdateViewModel.Instance.AvailableSources) { if (pluginSourceList.Any(p => string.Equals(p.SourceURI, pluginSourceItem.SourceURI, Constants.InvariantComparer))) { continue; } pluginSourceList.Add(pluginSourceItem); } foreach (PluginSourceItem item in pluginSourceList) { if (item.Enabled) { try { var httpWebRequest = (HttpWebRequest)WebRequest.Create(item.SourceURI); httpWebRequest.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4"; httpWebRequest.Headers.Add("Accept-Language", "en;q=0.8"); httpWebRequest.ContentType = "application/text; charset=utf-8"; httpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (Stream response = httpResponse.GetResponseStream()) { var responseText = string.Empty; if (response != null) { using (var streamReader = new StreamReader(response)) { responseText = streamReader.ReadToEnd(); } } if (httpResponse.StatusCode == HttpStatusCode.OK || !string.IsNullOrWhiteSpace(responseText)) { JObject jsonResult = JObject.Parse(responseText); JToken pluginInfo = jsonResult["PluginInfo"]; JToken[] pluginFiles = pluginInfo["Files"].ToArray(); var pluginDownload = new PluginDownloadItem { Files = new List <PluginFile>( pluginFiles.Select( pluginFile => new PluginFile { Location = pluginFile["Location"].ToString(), Name = pluginFile["Name"].ToString(), Checksum = pluginFile["Checksum"] == null ? string.Empty : pluginFile["Checksum"].ToString(), })), Name = pluginInfo["Name"].ToString(), FriendlyName = pluginInfo["FriendlyName"] == null ? pluginInfo["Name"].ToString() : pluginInfo["FriendlyName"].ToString(), Description = pluginInfo["Description"] == null ? string.Empty : pluginInfo["Description"].ToString(), SourceURI = pluginInfo["SourceURI"].ToString(), LatestVersion = pluginInfo["Version"].ToString(), }; PluginInstance found = App.Plugins.Loaded.Find(pluginDownload.Name); if (found != null) { var latest = pluginDownload.LatestVersion; var current = found.Instance.Version; pluginDownload.CurrentVersion = current; pluginDownload.Status = PluginStatus.Installed; var latestBuild = new BuildNumber(); var currentBuild = new BuildNumber(); if (BuildUtilities.NeedsUpdate(latest, current, ref latestBuild, ref currentBuild)) { pluginDownload.Status = PluginStatus.UpdateAvailable; AppViewModel.Instance.HasNewPluginUpdate = true; DispatcherHelper.Invoke(() => UpdateViewModel.Instance.AvailablePluginUpdates++); } else { if (!found.Loaded) { pluginDownload.Status = PluginStatus.OutOfDate; } } } DispatcherHelper.Invoke(() => UpdateViewModel.Instance.AvailablePlugins.Add(pluginDownload)); } } } } catch (Exception ex) { Logging.Log(Logger, new LogItem(ex, true)); } } } DispatcherHelper.Invoke( delegate { if (UpdateView.View.AvailableDG.Items.Count == UpdateViewModel.Instance.AvailablePlugins.Count) { UpdateView.View.AvailableLoadingInformation.Visibility = Visibility.Collapsed; } UpdateView.View.AvailableDG.Items.Refresh(); UpdateViewModel.Instance.SetupGrouping(); UpdateView.View.PluginUpdateSpinner.Spin = false; ShellView.View.PluginUpdateSpinner.Spin = false; }); return(true); }; update.BeginInvoke(delegate { }, update); }
/// <summary> /// </summary> public static void CheckUpdates() { try { Process[] updaters = Process.GetProcessesByName("FFXIVAPP.Updater"); foreach (Process updater in updaters) { updater.Kill(); } if (File.Exists("FFXIVAPP.Updater.exe")) { File.Delete("FFXIVAPP.Updater.Backup.exe"); } else { if (File.Exists("FFXIVAPP.Updater.Backup.exe")) { File.Move("FFXIVAPP.Updater.Backup.exe", "FFXIVAPP.Updater.exe"); } } } catch (Exception ex) { Logging.Log(Logger, new LogItem(ex, true)); } Func <bool> update = delegate { var current = Assembly.GetExecutingAssembly().GetName().Version.ToString(); AppViewModel.Instance.CurrentVersion = current; var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.github.com/repos/Icehunter/ffxivapp/releases"); httpWebRequest.UserAgent = "Icehunter-FFXIVAPP"; httpWebRequest.Headers.Add("Accept-Language", "en;q=0.8"); httpWebRequest.ContentType = "application/json; charset=utf-8"; httpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (Stream response = httpResponse.GetResponseStream()) { var responseText = string.Empty; if (response != null) { using (var streamReader = new StreamReader(response)) { responseText = streamReader.ReadToEnd(); } } var latestBuild = new BuildNumber(); var currentBuild = new BuildNumber(); if (httpResponse.StatusCode != HttpStatusCode.OK || string.IsNullOrWhiteSpace(responseText)) { AppViewModel.Instance.HasNewVersion = false; AppViewModel.Instance.LatestVersion = "Unknown"; } else { JArray releases = JArray.Parse(responseText); JToken release = releases.FirstOrDefault(r => r?["target_commitish"].ToString() == "master"); var latest = release?["name"].ToString() ?? "Unknown"; latest = latest.Split(' ')[0]; AppViewModel.Instance.LatestVersion = latest; switch (latest) { case "Unknown": AppViewModel.Instance.HasNewVersion = false; break; default: AppViewModel.Instance.DownloadUri = string.Format("https://github.com/Icehunter/ffxivapp/releases/download/{0}/{0}.zip", latest); AppViewModel.Instance.HasNewVersion = BuildUtilities.NeedsUpdate(latest, current, ref latestBuild, ref currentBuild); break; } if (AppViewModel.Instance.HasNewVersion) { var title = $"{AppViewModel.Instance.Locale["app_DownloadNoticeHeader"]} {AppViewModel.Instance.Locale["app_DownloadNoticeMessage"]}"; var message = new StringBuilder(); try { DateTime latestBuildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * latestBuild.Build + TimeSpan.TicksPerSecond * 2 * latestBuild.Revision)); DateTime currentBuildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * currentBuild.Build + TimeSpan.TicksPerSecond * 2 * currentBuild.Revision)); TimeSpan timeSpan = latestBuildDateTime - currentBuildDateTime; if (timeSpan.TotalSeconds > 0) { message.AppendLine(string.Format("Missing {0} days, {1} hours and {2} seconds of updates.{3}", timeSpan.Days, timeSpan.Hours, timeSpan.Seconds)); } } catch (Exception ex) { Logging.Log(Logger, new LogItem(ex, true)); } finally { message.AppendLine(AppViewModel.Instance.Locale["app_AlwaysReadUpdatesMessage"]); } MessageBoxHelper.ShowMessageAsync(title, message.ToString(), () => ShellView.CloseApplication(true), delegate { }); } } } } return(true); }; update.BeginInvoke(delegate { }, update); }
internal override string GetRtfFormattedRule() { RichTextBox rTxtBx = new RichTextBox(); if (UseMajorVersion || UseProductType) { if (ReverseRule) { print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.green, "<lar:"); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, "Not"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.green, ">\r\n"); } print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "<bar:"); print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.red, "WindowsVersion"); if (UseComparison) { print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.blue, " Comparison"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "=\""); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, Comparison); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\""); } if (UseMajorVersion) { print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.blue, " MajorVersion"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "=\""); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, MajorVersion.ToString()); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\""); } if (UseMinorVersion) { print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.blue, " MinorVersion"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "=\""); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, MinorVersion.ToString()); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\""); } if (UseBuildNumber) { print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.blue, " BuildNumber"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "=\""); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, BuildNumber.ToString()); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\""); } if (UseServicePackMajor) { print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.blue, " ServicePackMajor"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "=\""); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, ServicePackMajor.ToString()); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\""); } if (UseServicePackMinor) { print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.blue, " ServicePackMinor"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "=\""); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, ServicePackMinor.ToString()); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\""); } if (UseProductType) { print(rTxtBx, GroupDisplayer.elementAndAttributeFont, GroupDisplayer.blue, " ProductType"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "=\""); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, ProductType.ToString()); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\""); } print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "/>"); if (ReverseRule) { print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.black, "\r\n"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.green, "</lar:"); print(rTxtBx, GroupDisplayer.boldFont, GroupDisplayer.black, "Not"); print(rTxtBx, GroupDisplayer.normalFont, GroupDisplayer.green, ">"); } } return(rTxtBx.Rtf); }
/// <summary> /// </summary> public static void CheckUpdates() { try { var updaters = Process.GetProcessesByName("FFXIVAPP.Updater"); foreach (var updater in updaters) { updater.Kill(); } if (File.Exists("FFXIVAPP.Updater.exe")) { File.Delete("FFXIVAPP.Updater.Backup.exe"); } else { if (File.Exists("FFXIVAPP.Updater.Backup.exe")) { File.Move("FFXIVAPP.Updater.Backup.exe", "FFXIVAPP.Updater.exe"); } } } catch (Exception ex) { } Func <bool> updateCheck = delegate { var current = Assembly.GetExecutingAssembly() .GetName() .Version.ToString(); AppViewModel.Instance.CurrentVersion = current; var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.github.com/repos/Icehunter/ffxivapp/releases"); httpWebRequest.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4"; httpWebRequest.Headers.Add("Accept-Language", "en;q=0.8"); httpWebRequest.ContentType = "application/json; charset=utf-8"; httpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (var response = httpResponse.GetResponseStream()) { var responseText = ""; if (response != null) { using (var streamReader = new StreamReader(response)) { responseText = streamReader.ReadToEnd(); } } var latestBuild = new BuildNumber(); var currentBuild = new BuildNumber(); if (httpResponse.StatusCode != HttpStatusCode.OK || String.IsNullOrWhiteSpace(responseText)) { AppViewModel.Instance.HasNewVersion = false; AppViewModel.Instance.LatestVersion = "Unknown"; } else { var releases = JArray.Parse(responseText); var release = releases.FirstOrDefault(r => r?["target_commitish"].ToString() == "3.0-stable"); var latest = release?["name"].ToString() ?? "Unknown"; latest = latest.Split(' ')[0]; AppViewModel.Instance.LatestVersion = latest; switch (latest) { case "Unknown": AppViewModel.Instance.HasNewVersion = false; break; default: AppViewModel.Instance.DownloadUri = String.Format("https://github.com/Icehunter/ffxivapp/releases/download/{0}/{0}.zip", latest); AppViewModel.Instance.HasNewVersion = BuildUtilities.NeedsUpdate(latest, current, ref latestBuild, ref currentBuild); break; } if (AppViewModel.Instance.HasNewVersion) { var title = String.Format("{0} {1}", AppViewModel.Instance.Locale["app_DownloadNoticeHeader"], AppViewModel.Instance.Locale["app_DownloadNoticeMessage"]); var message = new StringBuilder(); try { var latestBuildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * latestBuild.Build + TimeSpan.TicksPerSecond * 2 * latestBuild.Revision)); var currentBuildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * currentBuild.Build + TimeSpan.TicksPerSecond * 2 * currentBuild.Revision)); var timeSpan = latestBuildDateTime - currentBuildDateTime; if (timeSpan.TotalSeconds > 0) { message.AppendLine(String.Format("Missing {0} days, {1} hours and {2} seconds of updates.{3}", timeSpan.Days, timeSpan.Hours, timeSpan.Seconds)); } } catch (Exception ex) { } finally { message.AppendLine(AppViewModel.Instance.Locale["app_AlwaysReadUpdatesMessage"]); } MessageBoxHelper.ShowMessageAsync(title, message.ToString(), () => ShellView.CloseApplication(true), delegate { }); } var uri = "http://ffxiv-app.com/Analytics/Google/?eCategory=Application Launch&eAction=Version Check&eLabel=FFXIVAPP"; DispatcherHelper.Invoke(() => MainView.View.GoogleAnalytics.Navigate(uri)); } } } return(true); }; updateCheck.BeginInvoke(null, null); }
/// <summary> /// </summary> public static void CheckUpdates() { try { var updaters = Process.GetProcessesByName("FFXIVAPP.Updater"); foreach (var updater in updaters) { updater.Kill(); } if (File.Exists("FFXIVAPP.Updater.exe")) { File.Delete("FFXIVAPP.Updater.Backup.exe"); } else { if (File.Exists("FFXIVAPP.Updater.Backup.exe")) { File.Move("FFXIVAPP.Updater.Backup.exe", "FFXIVAPP.Updater.exe"); } } } catch (Exception ex) { } Func <bool> updateCheck = delegate { var current = Assembly.GetExecutingAssembly() .GetName() .Version.ToString(); AppViewModel.Instance.CurrentVersion = current; var httpWebRequest = (HttpWebRequest)WebRequest.Create(String.Format("http://ffxiv-app.com/Json/CurrentVersion/")); httpWebRequest.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4"; httpWebRequest.Headers.Add("Accept-Language", "en;q=0.8"); httpWebRequest.ContentType = "application/json; charset=utf-8"; httpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (var response = httpResponse.GetResponseStream()) { var responseText = ""; if (response != null) { using (var streamReader = new StreamReader(response)) { responseText = streamReader.ReadToEnd(); } } var latestBuild = new BuildNumber(); var currentBuild = new BuildNumber(); if (httpResponse.StatusCode != HttpStatusCode.OK || String.IsNullOrWhiteSpace(responseText)) { AppViewModel.Instance.HasNewVersion = false; AppViewModel.Instance.LatestVersion = "Unknown"; } else { var jsonResult = JObject.Parse(responseText); var latest = jsonResult["Version"].ToString(); var updateNotes = jsonResult["Notes"].ToList(); //var enabledFeatures = jsonResult["Features"]; //try //{ // foreach (var feature in enabledFeatures) // { // var key = feature["Hash"].ToString(); // var enabled = (bool) feature["Enabled"]; // switch (key) // { // case "E9FA3917-ACEB-47AE-88CC-58AB014058F5": // XIVDBViewModel.Instance.MonsterUploadEnabled = enabled; // break; // case "6D2DB102-B1AE-4249-9E73-4ABC7B1947BC": // XIVDBViewModel.Instance.NPCUploadEnabled = enabled; // break; // case "D95ADD76-7DA7-4692-AD00-DB12F2853908": // XIVDBViewModel.Instance.KillUploadEnabled = enabled; // break; // case "6A50A13B-BA83-45D7-862F-F110049E7E78": // XIVDBViewModel.Instance.LootUploadEnabled = enabled; // break; // } // } //} //catch (Exception ex) //{ //} try { foreach (var note in updateNotes.Select(updateNote => updateNote.Value <string>())) { AppViewModel.Instance.UpdateNotes.Add(note); } } catch (Exception ex) { MessageBoxHelper.ShowMessage("Error", ex.Message); } AppViewModel.Instance.DownloadUri = jsonResult["DownloadUri"].ToString(); latest = (latest == "Unknown") ? "Unknown" : String.Format("3{0}", latest.Substring(1)); AppViewModel.Instance.LatestVersion = latest; switch (latest) { case "Unknown": AppViewModel.Instance.HasNewVersion = false; break; default: AppViewModel.Instance.HasNewVersion = BuildUtilities.NeedsUpdate(latest, current, ref latestBuild, ref currentBuild); break; } if (AppViewModel.Instance.HasNewVersion) { var title = String.Format("{0} {1}", AppViewModel.Instance.Locale["app_DownloadNoticeHeader"], AppViewModel.Instance.Locale["app_DownloadNoticeMessage"]); var message = new StringBuilder(); try { var latestBuildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * latestBuild.Build + TimeSpan.TicksPerSecond * 2 * latestBuild.Revision)); var currentBuildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * currentBuild.Build + TimeSpan.TicksPerSecond * 2 * currentBuild.Revision)); var timeSpan = latestBuildDateTime - currentBuildDateTime; if (timeSpan.TotalSeconds > 0) { message.AppendLine(String.Format("Missing {0} days, {1} hours and {2} seconds of updates.{3}", timeSpan.Days, timeSpan.Hours, timeSpan.Seconds)); } } catch (Exception ex) { } finally { message.AppendLine(AppViewModel.Instance.Locale["app_AlwaysReadUpdatesMessage"]); } MessageBoxHelper.ShowMessageAsync(title, message.ToString(), () => ShellView.CloseApplication(true), delegate { }); } var uri = "http://ffxiv-app.com/Analytics/Google/?eCategory=Application Launch&eAction=Version Check&eLabel=FFXIVAPP"; DispatcherHelper.Invoke(() => MainView.View.GoogleAnalytics.Navigate(uri)); } } } return(true); }; updateCheck.BeginInvoke(null, null); }
/// <summary> /// Checks if the version represented by this version object equals the version represented by otherVersion object. /// </summary> /// <param name="otherVersion">Version representing IVersion object</param> /// <returns>True if equal. False otherwise</returns> public bool Equals(IComponentVersion otherVersion) { if (!string.IsNullOrEmpty(Version) && !string.IsNullOrEmpty(otherVersion.Version) && Version.Equals(otherVersion.Version)) { return(true); } if (TfsVersionSpec != null && otherVersion.TfsVersionSpec != null && TfsVersionSpec.Equals(otherVersion.TfsVersionSpec)) { return(true); } if (!string.IsNullOrEmpty(BuildNumber) && !string.IsNullOrEmpty(otherVersion.BuildNumber) && BuildNumber.Equals(otherVersion.BuildNumber)) { return(true); } if (ContainSameValues(BuildStatus, otherVersion.BuildStatus) && ContainSameValues(BuildQuality, otherVersion.BuildQuality)) { return(true); } if (ContainSameValues(BuildStatus, otherVersion.BuildStatus) && ContainSameValues(BuildTags, otherVersion.BuildTags)) { return(true); } return(false); }
public override int GetHashCode() { return(BuildNumber.GetHashCode()); }
public override int GetHashCode() { unchecked { return(((BuildCode != null ? BuildCode.GetHashCode() : 0) * 397) ^ (BuildNumber != null ? BuildNumber.GetHashCode() : 0)); } }
public static void LoadAvailablePlugins() { UpdateView.View.AvailableLoadingInformation.Visibility = Visibility.Visible; UpdateViewModel.Instance.AvailablePlugins.Clear(); Func <bool> updateCheck = delegate { var pluginSourceList = new List <PluginSourceItem>(); try { var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://github.com/Icehunter/ffxivapp/raw/master/PACKAGES.json"); httpWebRequest.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4"; httpWebRequest.Headers.Add("Accept-Language", "en;q=0.8"); httpWebRequest.ContentType = "application/text; charset=utf-8"; httpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (var response = httpResponse.GetResponseStream()) { var responseText = ""; if (response != null) { using (var streamReader = new StreamReader(response)) { responseText = streamReader.ReadToEnd(); } } if (httpResponse.StatusCode == HttpStatusCode.OK || !String.IsNullOrWhiteSpace(responseText)) { var jsonResult = JArray.Parse(responseText); pluginSourceList.AddRange(from item in jsonResult let name = item["Name"].ToString() let enabled = Boolean.Parse(item["Enabled"].ToString()) let sourceURI = item["SourceURI"].ToString() where enabled select new PluginSourceItem { Enabled = enabled, Key = Guid.NewGuid(), SourceURI = sourceURI }); } } } } catch (Exception ex) { } foreach (var pluginSourceItem in UpdateViewModel.Instance.AvailableSources) { if (pluginSourceList.Any(p => String.Equals(p.SourceURI, pluginSourceItem.SourceURI, Constants.InvariantComparer))) { continue; } pluginSourceList.Add(pluginSourceItem); } foreach (var item in pluginSourceList) { if (item.Enabled) { try { var httpWebRequest = (HttpWebRequest)WebRequest.Create(item.SourceURI); httpWebRequest.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4"; httpWebRequest.Headers.Add("Accept-Language", "en;q=0.8"); httpWebRequest.ContentType = "application/text; charset=utf-8"; httpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse()) { using (var response = httpResponse.GetResponseStream()) { var responseText = ""; if (response != null) { using (var streamReader = new StreamReader(response)) { responseText = streamReader.ReadToEnd(); } } if (httpResponse.StatusCode == HttpStatusCode.OK || !String.IsNullOrWhiteSpace(responseText)) { var jsonResult = JObject.Parse(responseText); var pluginInfo = jsonResult["PluginInfo"]; var pluginFiles = pluginInfo["Files"].ToArray(); var pluginDownload = new PluginDownloadItem { Files = new List <PluginFile>(pluginFiles.Select(pluginFile => new PluginFile { Location = pluginFile["Location"].ToString(), Name = pluginFile["Name"].ToString() })), Name = pluginInfo["Name"].ToString(), SourceURI = pluginInfo["SourceURI"].ToString(), LatestVersion = pluginInfo["Version"].ToString() }; var found = App.Plugins.Loaded.Find(pluginDownload.Name); if (found != null) { var latest = pluginDownload.LatestVersion; var current = found.Instance.Version; pluginDownload.CurrentVersion = current; pluginDownload.Status = PluginStatus.Installed; var latestBuild = new BuildNumber(); var currentBuild = new BuildNumber(); if (BuildUtilities.NeedsUpdate(latest, current, ref latestBuild, ref currentBuild)) { pluginDownload.Status = PluginStatus.UpdateAvailable; AppViewModel.Instance.HasNewPluginUpdate = true; } } DispatcherHelper.Invoke(() => UpdateViewModel.Instance.AvailablePlugins.Add(pluginDownload)); } } } } catch (Exception ex) { } DispatcherHelper.Invoke(delegate { if (UpdateView.View.AvailableDG.Items.Count == UpdateViewModel.Instance.AvailablePlugins.Count) { UpdateView.View.AvailableLoadingInformation.Visibility = Visibility.Collapsed; } UpdateView.View.AvailableDG.Items.Refresh(); UpdateViewModel.Instance.SetupGrouping(); }); } } return(true); }; updateCheck.BeginInvoke(null, null); }