Пример #1
0
        /*
         * Gets the latest Firefox release from Github using the Github API
         * The latest Geckodriver supports backwards to version 60 of Firefox
         */
        internal static string GetFireFoxURL(Browser browser, OperatingSystem os)
        {
            try
            {
                RestController restController = new RestController(firefox_url);
                var            response       = restController.Get("latest");
                GitHubRelease  responseData   = (GitHubRelease)response.DeserialiseResponseTo <GitHubRelease>();

                var  osPlatform   = Environment.OSVersion;
                bool sixtyfourBit = Environment.Is64BitOperatingSystem;


                if (os.Equals(OperatingSystem.WINDOWS))
                {
                    var asset = responseData.Assets.Where(x => x.Name.ToLower().Contains("win32")).FirstOrDefault();
                    return(asset.browser_download_url.AbsoluteUri);
                }
                else if (os.Equals(OperatingSystem.MAC))
                {
                    var asset = responseData.Assets.Where(x => x.Name.ToLower().Contains("macos")).FirstOrDefault();
                    return(asset.browser_download_url.AbsoluteUri);
                }
                else
                {
                    var asset = responseData.Assets.Where(x => x.Name.ToLower().Contains("linux" + (sixtyfourBit ? "64" : "32"))).FirstOrDefault();
                    return(asset.browser_download_url.AbsoluteUri);
                }
            }
            catch (Exception e)
            {
                throw;
            }
        }
Пример #2
0
        public async void Check(bool notifyNoFound, bool isPreRelease)
        {
            try
            {
                var updater = new GitHubRelease(Owner, Repo);
                var url     = updater.AllReleaseUrl;

                var json = await GetAsync(url, true);

                var releases      = JsonConvert.DeserializeObject <List <Release> >(json);
                var latestRelease = VersionUtil.GetLatestRelease(releases, isPreRelease);
                if (VersionUtil.CompareVersion(latestRelease.tag_name, Version) > 0)
                {
                    LatestVersionNumber = latestRelease.tag_name;
                    LatestVersionUrl    = latestRelease.html_url;
                    NewVersionFound?.Invoke(this, new EventArgs());
                }
                else
                {
                    LatestVersionNumber = latestRelease.tag_name;
                    if (notifyNoFound)
                    {
                        NewVersionNotFound?.Invoke(this, new EventArgs());
                    }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                if (notifyNoFound)
                {
                    NewVersionFoundFailed?.Invoke(this, new EventArgs());
                }
            }
        }
Пример #3
0
        public void Check(bool notifyNoFound, bool isPreRelease)
        {
            try
            {
                var updater = new GitHubRelease(Owner, Repo);
                var url     = updater.AllReleaseUrl;

                var json = WebUtil.DownloadString(WebUtil.CreateRequest(url));

                var releases      = JsonConvert.DeserializeObject <List <Release> >(json);
                var latestRelease = VersionUtil.GetLatestRelease(releases, isPreRelease);
                if (VersionUtil.CompareVersion(latestRelease.tag_name, Version) > 0)
                {
                    LatestVersionNumber = latestRelease.tag_name;
                    LatestVersionUrl    = latestRelease.html_url;
                    NewVersionFound?.Invoke(this, new EventArgs());
                }
                else
                {
                    LatestVersionNumber = latestRelease.tag_name;
                    if (notifyNoFound)
                    {
                        NewVersionNotFound?.Invoke(this, new EventArgs());
                    }
                }
            }
            catch (Exception e)
            {
                Logging.Error(e.ToString());
                if (notifyNoFound)
                {
                    NewVersionFoundFailed?.Invoke(this, new EventArgs());
                }
            }
        }
Пример #4
0
        private void UpdateCurrentProfile(GitHubRelease onlineRelease)
        {
            switch (MessageBox.Show(string.Format(LocalizationUI.GetString("UpdateAvailable"), CurrentProfile.Version, onlineRelease.Version), LocalizationUI.GetString("UpdateAvailableTitle"), MessageBoxButtons.YesNo))
            {
            case DialogResult.Yes:
                using (var directUpdater = new ReleaseDownloaderForm(onlineRelease.ReleaseAsset, CurrentProfile.Folder))
                    directUpdater.ShowDialog();
                break;

            case DialogResult.No:
                return;

                /*
                 * case DialogResult.Yes:
                 *  //MessageBox.Show(LocalizationUI.GetString("UpdateDisabled"), LocalizationUI.GetString("UpdateDisabledTitle"), MessageBoxButtons.OK);
                 *  if (Settings.SelectedDL != null && !string.IsNullOrEmpty(Settings.SelectedDL.AbsolutePath))
                 *      //using (var customUpdater = new PerFileUpdaterForm(onlineRelease.UpdateInfoAsset, CurrentProfile.Folder, new Uri(Settings.SelectedDL, $"{onlineRelease.Version}/")))
                 *      //    customUpdater.ShowDialog();
                 *      ;
                 *  else
                 *      MessageBox.Show(LocalizationUI.GetString("DLNotSelected"), LocalizationUI.GetString("DLNotSelectedTitle"), MessageBoxButtons.OK);
                 *  break;
                 *
                 * case DialogResult.No:
                 * //case DialogResult.Cancel:
                 *  using (var directUpdater = new ReleaseDownloaderForm(onlineRelease.ReleaseAsset, CurrentProfile.Folder))
                 *      directUpdater.ShowDialog();
                 *  break;
                 *
                 * case DialogResult.Cancel:
                 * //case DialogResult.No:
                 *  return;
                 */
            }
        }
Пример #5
0
        public async Task Check(bool notifyNoFound, bool isPreRelease)
        {
            try
            {
                var updater = new GitHubRelease(Owner, Repo);
                var url     = updater.AllReleaseUrl;

                var json = await GetAsync(url);

                var releases      = JsonSerializer.Deserialize <List <Release> >(json);
                var latestRelease = VersionUtil.GetLatestRelease(releases, isPreRelease);
                if (VersionUtil.CompareVersion(latestRelease.tag_name, Version) > 0)
                {
                    LatestVersionNumber = latestRelease.tag_name;
                    LatestVersionUrl    = latestRelease.html_url;
                    NewVersionFound?.Invoke(this, new EventArgs());
                }
                else
                {
                    LatestVersionNumber = latestRelease.tag_name;
                    if (notifyNoFound)
                    {
                        NewVersionNotFound?.Invoke(this, new EventArgs());
                    }
                }
            }
            catch
            {
                if (notifyNoFound)
                {
                    NewVersionFoundFailed?.Invoke(this, new EventArgs());
                }
            }
        }
Пример #6
0
        private GitHubRelease LoadGitHubRelease()
        {
            //인터넷 연결 확인
            GitHubRelease ret = null;

            try
            {
                string         json = string.Empty;
                HttpWebRequest req  = WebRequest.Create("https://api.github.com/repos/hanalen-/Dalsae_WPF/releases/latest") as HttpWebRequest;
                ServicePointManager.Expect100Continue = true;
                ServicePointManager.SecurityProtocol  = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                req.Timeout   = 5000;
                req.UserAgent = "Dalsae_WPF";
                using (WebResponse res = req.GetResponse())
                    using (Stream stream = res.GetResponseStream())
                        using (StreamReader streamRead = new StreamReader(stream))
                            json = streamRead.ReadToEnd();
                if (json != string.Empty)
                {
                    ret = JsonConvert.DeserializeObject <GitHubRelease>(json);
                }
            }
            catch (Exception e) { App.SendException(e); }
            catch { }
            return(ret);
        }
Пример #7
0
        private void quotationComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            GitHubRelease customer = (GitHubRelease)customerCombobox.SelectedItem;


            showquotationdata(customer);
        }
Пример #8
0
        public GitHubRelease GetLatestRelease()
        {
            try
            {
                HttpWebRequest request = WebRequest.Create("https://api.github.com/repos/EDDiscovery/EDDiscovery/releases/latest") as HttpWebRequest;
                request.UserAgent = "TestApp";
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    StreamReader reader   = new StreamReader(response.GetResponseStream());
                    string       content1 = reader.ReadToEnd();
                    JObject      ja       = JObject.Parse(content1);

                    if (ja != null)
                    {
                        GitHubRelease rel = new GitHubRelease(ja);
                        return(rel);
                    }
                    else
                    {
                        return(null);
                    };
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine($"Exception: {ex.Message}");
                Trace.WriteLine($"ETrace: {ex.StackTrace}");
                return(null);
            }
        }
        public async void CheckForUpdates(bool popupIfNoneFound = false)
        {
            if (Updater.IsDownloadInProgress)
            {
                ShowInfo("An update is in progress!", "Updater");
                return;
            }

            GitHubRelease updateInfo = await Updater.CheckForUpdate();

            if (updateInfo == null)
            {
                if (popupIfNoneFound)
                {
                    ShowInfo("No updates available.", "Updater");
                }
                return;
            }

            SetTimedStatusText("Update available!", duration: 10);
            UpdateWindowRequest?.Invoke(this, new UpdateInfoEventArgs()
            {
                UpdateInfo      = updateInfo,
                InstallCallback = InstallUpdate_Confirm
            });
        }
Пример #10
0
        private bool CheckForNewinstaller()
        {
            try
            {
                GitHubClass github = new GitHubClass(LogLine);

                GitHubRelease rel = github.GetLatestRelease();

                if (rel != null)
                {
                    //string newInstaller = jo["Filename"].Value<string>();

                    var currentVersion = Application.ProductVersion;

                    Version v1, v2;
                    v1 = new Version(rel.ReleaseVersion);
                    v2 = new Version(currentVersion);

                    if (v1.CompareTo(v2) > 0) // Test if newer installer exists:
                    {
                        newRelease = rel;
                        this.BeginInvoke(new Action(() => Controller.LogLineHighlight("New EDDiscovery installer available: " + rel.ReleaseName)));
                        this.BeginInvoke(new Action(() => PanelInfoNewRelease()));
                        return(true);
                    }
                }
            }
            catch (Exception)
            {
            }

            return(false);
        }
Пример #11
0
        /**
         * Checks if the current installation is the latest version. Prompts user if not.
         **/
        private void CheckUpdate()
        {
            if (Properties.Settings.Default.UpdateSettings) // If true, then first launch of latest SpotBlocker
            {
                try
                {
                    if (File.Exists(nircmdPath))
                    {
                        File.Delete(nircmdPath);
                    }
                    if (File.Exists(jsonPath))
                    {
                        File.Delete(jsonPath);
                    }
                    if (File.Exists(coreaudioPath))
                    {
                        File.Delete(coreaudioPath);
                    }
                    Properties.Settings.Default.Upgrade();
                    Properties.Settings.Default.UpdateSettings = false;
                    Properties.Settings.Default.UserEducated   = false;
                    Properties.Settings.Default.Save();
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                    MessageBox.Show("There was an error updating SpotBlocker. Please run as Administrator to update.");
                }
            }
            try
            {
                string        releaseText = GetPage(Properties.Settings.Default.VersionCheckUrl, SpotBlockerUA);
                GitHubRelease release     = Newtonsoft.Json.JsonConvert.DeserializeObject <GitHubRelease>(releaseText);

                int[] releaseSemanticVersion = Regex.Replace(release.tag_name, "[^\\d.]", "").Split(new[] { '.' }).Select(n => Convert.ToInt32(n)).ToArray();
                if (releaseSemanticVersion.Length != 4)
                {
                    throw new Exception(string.Format("Invalid release semantic versioning [{0}]", releaseSemanticVersion.ToString()));
                }

                Version releaseVersion = new Version(releaseSemanticVersion[0], releaseSemanticVersion[1], releaseSemanticVersion[2], releaseSemanticVersion[3]);
                Version currentVersion = Assembly.GetExecutingAssembly().GetName().Version;

                if (releaseVersion <= currentVersion)
                {
                    return;
                }

                if (MessageBox.Show("There is a newer version of SpotBlocker available. Would you like to upgrade?", "SpotBlocker", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Process.Start(Properties.Settings.Default.WebsiteUrl);
                    Application.Exit();
                }
            }
            catch
            {
                MessageBox.Show("Error checking for update.", "SpotBlocker");
            }
        }
    public GitHubRelease MapGitHubRelease(JToken jToken)
    {
        GitHubRelease gitHubRelease = new GitHubRelease();

        gitHubRelease.Degree         = GetDegree(jToken);
        gitHubRelease.EducationLevel = GetEducationLevel(jToken);
        return(gitHubRelease);
    }
Пример #13
0
 private GitHubAsset GetValidAsset(GitHubRelease release, WowClientType clientType)
 {
     return(release.Assets
            .Where(asset => IsNotNoLib(asset) &&
                   IsValidContentType(asset) &&
                   IsValidClientType(clientType, asset))
            .FirstOrDefault());
 }
Пример #14
0
 public UpdateForm(GitHubRelease release, Configuration configuration)
 {
     _configuration = configuration;
     InitializeComponent();
     LoadLocalization();
     autocheckCheckBox.Checked = _configuration.ApplicationConfiguration.CheckLauncherUpdates;
     Text = $"Found update: {release.Name}";
     changelogBox.Text = $"{release.Description}";
 }
Пример #15
0
        static SemanticVersion GetReleaseVersion(GitHubRelease release)
        {
            SemanticVersion version;

            if (!SemanticVersion.TryParse(release.Name.TrimStart('v'), out version))
            {
                SemanticVersion.TryParse(release.TagName.TrimStart('v'), out version);
            }

            return(version);
        }
Пример #16
0
        private void customerComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            GitHubRelease contracts = (GitHubRelease)customerComboBox.SelectedItem;

            contractComboBox.Items.Clear();
            contractComboBox.Text = "";

            foreach (var item in contracts.companydetail.lease)
            {
                contractComboBox.Items.Add("Contract: " + item.id);
            }
        }
Пример #17
0
        private void contractComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            GitHubRelease invoices = (GitHubRelease)customerComboBox.SelectedItem;


            invoiceComboBox.Items.Clear();
            invoiceComboBox.Text = "";

            /* aan de hand van de gekozen waarde in de contract combobox worden de bijbehorende
             * facturen in de facturen combobox gestopt */
            foreach (var item in invoices.companydetail.lease[contractComboBox.SelectedIndex].invoice)
            {
                invoiceComboBox.Items.Add("Invoice: " + item.id);
            }
        }
Пример #18
0
        public async Task <string> DownloadAsset(GitHubRelease release, GitHubAsset asset)
        {
            var tempPath     = Path.GetTempPath();
            var tempFileName = Path.Combine(tempPath, asset.Name);

            if (!File.Exists(tempFileName))
            {
                var downloadUrl = string.Format(AssetBaseUrl, release.TagName, asset.Name);
                var webClient   = CreateWebClient();

                await webClient.DownloadFileTaskAsync(downloadUrl, tempFileName);
            }

            return(tempFileName);
        }
 public VersionWindow(GitHubRelease release)
 {
     _release = release;
     InitializeComponent();
     versionAlertText.Text = String.Format(@"Version {0} of the Admin Toolkit is now available!", _release.version.ToString());
     versionDetails.Text   = String.Format(@"Release Notes:{0}{1}", Environment.NewLine, _release.description);
     if (_release.downloadUri != null)
     {
         downloadButton.Text = @"Download Release";
     }
     else
     {
         downloadButton.Text = @"View Details";
     }
     downloadButton.Focus();
 }
Пример #20
0
        private void customerCombobox_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            GitHubRelease customer = (GitHubRelease)customerCombobox.SelectedItem;


            showcustomerdata(customer);

            quotationComboBox.Items.Clear();
            quotationComboBox.Text = "";

            foreach (var item in customer.companydetail.quotations)
            {
                quotationComboBox.Items.Add(item);
            }
            // aan de hand van de gekozen klant worden de bijbehorende offertes in de quotation combobox gestopt
        }
Пример #21
0
        public static async Task <GitHubRelease> GitHubGetLastReleaseAsync(string repoUrl, string accessToken = null, bool acceptPrerelease = false)
        {
            var repoUri   = new Uri(repoUrl);
            var userAgent = new ProductInfoHeaderValue(Updater.AppName + "_Updater", Assembly.GetExecutingAssembly().GetName().Version.ToString());

            if (repoUri.Segments.Length != 3)
            {
                throw new UriFormatException("Repo URL must be to the root URL of the repo e.g. https://github.com/myuser/myrepo");
            }

            //Building the GitHub API URL
            var repoApiUrl = new StringBuilder("repos");

            repoApiUrl.Append(repoUri.AbsolutePath);
            repoApiUrl.Append("/releases");

            //Adding access token when present
            if (!string.IsNullOrWhiteSpace(accessToken))
            {
                repoApiUrl.Append("?access_token=").Append(accessToken);
            }

            using (var httpClient = new HttpClient())
            {
                //Disable SSLv3
                ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3;

                httpClient.BaseAddress = new Uri("https://api.github.com/");
                httpClient.DefaultRequestHeaders.UserAgent.Clear();
                httpClient.DefaultRequestHeaders.UserAgent.Add(userAgent);
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage result = await httpClient.GetAsync(repoApiUrl.ToString());

                //Make an exception if the result is not valid
                result.EnsureSuccessStatusCode();

                var           releases     = JsonConvert.DeserializeObject <List <GitHubRelease> >(await result.Content.ReadAsStringAsync());
                GitHubRelease lastReleases = releases
                                             .Where(x => acceptPrerelease || !x.Prerelease) //Exclude or include prerelease
                                             .OrderByDescending(x => x.PublishedAt)         //Order by publishing date
                                             .First();                                      //Get only the first one back

                return(lastReleases);
            }
        }
Пример #22
0
        public void TestInvalidUpdateDetectionInterval()
        {
            var account = GitHubTestAccount.Get();
            var checker = new ReleaseChecker(account.Name, account.Repository);

            GitHubRelease latestRelease = null;

            Assert.Throws <ArgumentException>(() =>
            {
                checker.MonitorForUpdates(
                    "v1",
                    (release) => { latestRelease = release; },
                    0
                    );
            });
            Assert.IsNull(latestRelease);
        }
Пример #23
0
        private string getBestUrl(GitHubRelease release)
        {
            GitHubAsset bestAsset = null;

            switch (RuntimeInfo.OS)
            {
            case RuntimeInfo.Platform.Windows:
                bestAsset = release.Assets?.Find(f => f.Name.EndsWith(".exe"));
                break;

            case RuntimeInfo.Platform.MacOsx:
                bestAsset = release.Assets?.Find(f => f.Name.EndsWith(".app.zip"));
                break;
            }

            return(bestAsset?.BrowserDownloadUrl ?? release.HtmlUrl);
        }
Пример #24
0
        public void showquotationdata(GitHubRelease customer)
        {
            if (customer.companydetail != null)
            {
                if (customer.companydetail.quotations != null)
                {
                    // de labels worden gevuld met het de bestelde producten + prijs en de klantgegevens

                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_light != null)
                    {
                        italian_lightlbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_light + " x " + "Italian Light: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_light) * 280;
                    }
                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian != null)
                    {
                        italianlbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian + " x " + "Italian: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian) * 290;
                    }
                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_deluxe != null)
                    {
                        italiandeluxelbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_deluxe + " x " + "Italian Deluxe: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_deluxe) * 350;
                    }
                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_deluxe_special != null)
                    {
                        italiandeluxespeciallbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_deluxe_special + " x " + "Italian Deluxe Special: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].italian_deluxe_special) * 375;
                    }
                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].espresso_beneficio != null)
                    {
                        espressobeneficiolbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].espresso_beneficio + " x " + "Espresso Beneficio: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].espresso_beneficio) * 21.60;
                    }
                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].yellow_bourbon_brasil != null)
                    {
                        yellowbourbonbrasillbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].yellow_bourbon_brasil + " x " + "Yellow Bourbon Brasil: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].yellow_bourbon_brasil) * 23.20;
                    }
                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].espresso_roma != null)
                    {
                        espressoromalbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].espresso_roma + " x " + "Espresso Roma: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].espresso_roma) * 20.80;
                    }
                    if (customer.companydetail.quotations[quotationComboBox.SelectedIndex].red_honey_honduras != null)
                    {
                        redhoneyhonduraslbl.Text = customer.companydetail.quotations[quotationComboBox.SelectedIndex].red_honey_honduras + " x " + "Red Honey Honduras: " + "€" + int.Parse(customer.companydetail.quotations[quotationComboBox.SelectedIndex].red_honey_honduras) * 27.80;
                    }

                    lease_id = customer.companydetail.lease[quotationComboBox.SelectedIndex].id;
                    price    = int.Parse(customer.companydetail.lease[quotationComboBox.SelectedIndex].monthly_costs);
                }
            }
        }
Пример #25
0
        public void TestSerializeObject_EmitDefaultValue()
        {
            var gitHubRelease = new GitHubRelease
            {
                HtmlUrl     = "http://test.url",
                Prerelease  = false,
                PublishedAt = DateTime.Now
            };
            var jsonString = SimpleJson.SerializeObject(gitHubRelease);

            Assert.Contains("html_url", jsonString);
            Assert.DoesNotContain("prerelease", jsonString);

            gitHubRelease.Prerelease = true;
            gitHubRelease.HtmlUrl    = null;
            jsonString = SimpleJson.SerializeObject(gitHubRelease);
            Assert.DoesNotContain("html_url", jsonString);
            Assert.Contains("prerelease", jsonString);
        }
Пример #26
0
        public UpdateForm(GitHubRelease release, Configuration configuration, LauncherForm f)
        {
            rls            = release;
            _configuration = configuration;
            InitializeComponent();
            LoadLocalization();
            update_url  = new Uri(@"https://github.com/dommilosz/MLauncher/releases/download/" + rls.Tag + "/MLauncher.exe");
            newpatch    = Application.ExecutablePath.Replace(".exe", "_" + rls.Tag + ".exe");
            update_size = GetUpdateSize();
            batchURL    = new Uri(@"https://github.com/dommilosz/MLauncher/releases/download/v0.2.0/Update.bat");
            autocheckCheckBox.Checked = _configuration.ApplicationConfiguration.CheckLauncherUpdates;
            Text = $"Found update: {release.Name}";

            changelogBox.Text  = $"Installed Version : {Application.ProductVersion}" + Environment.NewLine;
            changelogBox.Text += $"Latest Version : {rls.Tag}" + Environment.NewLine;
            changelogBox.Text += $"Update Size : {update_size.MB}MB  ({update_size.B} bytes)" + Environment.NewLine;
            changelogBox.Text += $"{release.Description}";
            form = f;
        }
        public async void CheckLatestVersion()
        {
            GitHubService service        = new GitHubService();
            Version       currentVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
            GitHubRelease latestRelease  = await service.LatestRelease();

            if (latestRelease.version > currentVersion)
            {
                this.Hide();
                VersionWindow versionWindow = new VersionWindow(latestRelease);
                versionWindow.StartPosition = FormStartPosition.CenterScreen;
                versionWindow.MinimizeBox   = false;
                versionWindow.MaximizeBox   = false;
                versionWindow.Show();
                versionWindow.Activate();
                versionWindow.FormClosed += (sender, e) => {
                    this.Show();
                };
            }
        }
Пример #28
0
        public void CheckNewVersion()
        {
            patch = LoadGitHubRelease();
            if (patch != null)
            {
                //어셈블리 정보 가져옴
                Assembly        assembly = Assembly.GetExecutingAssembly();
                FileVersionInfo fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);

                float newVersion = 0.0f, prevVersion = 0.0f;
                //버전 파싱, 파싱 오류 시 그냥 실행 작업 진행
                if (float.TryParse(fvi.FileVersion, out prevVersion) && float.TryParse(patch.tag_name, out newVersion))
                {
                    if (newVersion > prevVersion)
                    {
                        ShowMessageBox($"달새의 새로운 버전인 {patch.tag_name}v가 나왔습니다. 패치를 진행하시겠습니까?",
                                       "패치 알림", PatchProccess);
                    }
                }
            }
        }
Пример #29
0
        public async void Check(bool isPreRelease)
        {
            try
            {
                var updater = new GitHubRelease(Owner, Repo);
                var url     = updater.AllReleaseUrl;

                var json = await WebUtil.DownloadStringAsync(WebUtil.CreateRequest(url));

                var releases      = JsonConvert.DeserializeObject <List <Release> >(json);
                var latestRelease = VersionUtil.GetLatestRelease(releases, isPreRelease);
                LatestVersionNumber      = latestRelease.tag_name;
                LatestVersionUrl         = latestRelease.html_url;
                LatestVersionDownloadUrl = latestRelease.assets[0].browser_download_url;
                Logging.Info($"Github 最新发布版本: {latestRelease.tag_name}");
                if (VersionUtil.CompareVersion(latestRelease.tag_name, Version) > 0)
                {
                    Logging.Info($"发现新版本");
                    NewVersionFound?.Invoke(this, new EventArgs());
                }
                else
                {
                    Logging.Info("目前是最新版本");
                    NewVersionNotFound?.Invoke(this, new EventArgs());
                }
            }
            catch (Exception e)
            {
                if (e is WebException)
                {
                    Logging.Warning($"获取新版本失败: {e.Message}");
                }
                else
                {
                    Logging.Warning(e.ToString());
                }

                NewVersionFoundFailed?.Invoke(this, new EventArgs());
            }
        }
Пример #30
0
        public override TemporaryDirectory DownloadPackage(Upset package)
        {
            string sourceName = Regex.Replace(package.MetaInformation.dirName, ".Upset.xml$", ".unitypackage", RegexOptions.IgnoreCase);

            releases = GetPackagesReleases();
            GitHubRelease release = releases.FirstOrDefault(rel => rel.assets.Any(asset => asset.name.Contains(sourceName)));

            if (release == null)
            {
                throw new ArgumentException(string.Format("Package {0} is not present in this repository", package.PackageName));
            }

            GitHubAsset        packageAsset = release.assets.First(asset => asset.name.Contains(sourceName));
            TemporaryDirectory td           = new TemporaryDirectory();

            using (StreamReader sr = new StreamReader(GitHub.GetAssetStream(packageAsset, GetToken())))
            {
                UnityPackage unityPackage = new UnityPackage();
                unityPackage.Extract(sr.BaseStream, td.Path);
            }
            return(td);
        }