private void Initialize() { this.settings = PluginUpdateNotifierSettings.LoadOrCreateSettings(); this.versionInformation = VersionInformationProvider.Instance.VersionInformation; this.minSize = windowSize; this.showAtStartup = settings.ShowAtStartup; }
// // Startup時PluginのUpdateの有無のチェックし、有効なUpdateがある場合はNotifyPluginUpdateWindowをOpenする。 private static void OnStartUp() { EditorApplication.update -= OnStartUp; VersionInformationProvider.Instance.CheckForLatestVersion(() => { var settings = PluginUpdateNotifierSettings.LoadOrCreateSettings(); var versionInformation = VersionInformationProvider.Instance.VersionInformation; // 更新を通知すべきか確認。必要ならNotifyPluginUpdateWindowを開いて通知する。 if (CheckIfNotifyUpdateOnStartUp(settings, versionInformation)) { NotifyPluginUpdateWindow.Open(); } }, (ex) => OnErrorCheckForUpdate(ex)); }
/// <summary> /// Pluginの更新情報を通知するか(NotifyPluginUpdateWindowを開くかどうか)チェックするためのメソッド。trueは通知する。 /// </summary> /// <returns></returns> private static bool CheckIfNotifyUpdateOnStartUp(PluginUpdateNotifierSettings settings, VersionInformation versionInformation) { // UpdateAvailableでない時は通知しない。 if (versionInformation.GetStatus() != VersionInformation.Status.UpdateAvailable) { return(false); } // SettingsのShow At Startupがfalseなら通知しない。 if (!settings.ShowAtStartup) { return(false); } // スキップ対象バージョンなら通知しない。 if (CheckIfSkipUpdate(settings, versionInformation)) { return(false); } return(true); }
/// <summary> /// VersionInformation.LatestVersionが通知スキップ対象バージョンかどうかチェックする。trueならスキップ対象バージョン。 /// </summary> /// <param name="settings"></param> /// <param name="versionInformation"></param> private static bool CheckIfSkipUpdate(PluginUpdateNotifierSettings settings, VersionInformation versionInformation) { // SkipVersionの値が空白の時はスキップしない。 if (string.IsNullOrEmpty(settings.SkipVersion)) { return(false); } // なんらかの理由でSkipVersionが不適切な値だった場合はスキップしない。 if (!Utility.IsVersionString(settings.SkipVersion)) { return(false); } System.Version skipVersion = new System.Version(settings.SkipVersion); System.Version latestVersion = new System.Version(versionInformation.LatestVersion); // LatestVersionとSkipVersionが同一でないならスキップしない。 if (skipVersion.CompareTo(latestVersion) != 0) { return(false); } return(true); }