コード例 #1
0
        public static CheckForUpdatesResponse CheckForUpdates(bool verbose = false)
        {
            try
            {
                CheckForUpdatesResponse response;

                AppUsageData data = AppSettings.Default.UsageData;
                data.Reload();
                if (data.LastCheckedForUpdates.GetValueOrDefault() < DateTime.Now.AddHours(-1))
                {
                    response = WebApiClient.CheckForUpdates(AppSettings.Default.SdkTable.Revision);

                    if (!string.IsNullOrEmpty(response.NewSdkTable) && SerDes.TryXmlStringToObject(response.NewSdkTable, out SdkTable table))
                    {
                        SerDes.ObjectToXmlFile(table, AppSettings.Default.SdkTableCurrentPath);
                        AppSettings.Default.SdkTable = table;
                    }

                    data.LastCheckedForUpdates = DateTime.Now;
                    data.UpToDate    = response.UpToDate;
                    data.NewVersion  = response.NewVersion;
                    data.DownloadUrl = response.DownloadUrl;
                    data.Save();
                }
                else
                {
                    // prevent new Flutnet installations to report
                    // old server responses
                    if (!data.UpToDate && !string.IsNullOrEmpty(data.NewVersion))
                    {
                        string productVersion = Assembly.GetEntryAssembly().GetProductVersion();
                        int    compare        = VersionUtils.Compare(productVersion, data.NewVersion);
                        if (compare >= 0)
                        {
                            data.UpToDate = true;
                            data.Save();
                        }
                    }

                    response = new CheckForUpdatesResponse
                    {
                        UpToDate    = data.UpToDate,
                        NewVersion  = data.NewVersion,
                        DownloadUrl = data.DownloadUrl
                    };
                }
                return(response);
            }
            catch (Exception ex)
            {
                Log.Ex(ex);
                Console.WriteLine(ex);
                throw;
            }
        }