Ejemplo n.º 1
0
        //TODO:修复FORGE刷新不成功崩溃
        private async void DownloadForgeButton_Click(object sender, RoutedEventArgs e)
        {
            Version ver = null;

            if (verToInstallForgeComboBox.SelectedItem != null)
            {
                ver = (Version)verToInstallForgeComboBox.SelectedItem;
            }
            else
            {
                await this.ShowMessageAsync("您未选择要安装Forge的Minecraft", "您需要选择一个需要安装Forge的Minecraft本体");

                return;
            }

            JWForge forge = null;

            if (forgeListDataGrid.SelectedItem != null)
            {
                forge = (JWForge)forgeListDataGrid.SelectedItem;
            }
            else
            {
                await this.ShowMessageAsync("您未选择要安装的Forge", "您需要选择一个要安装Forge");

                return;
            }

            AppendForgeDownloadTask(ver, forge);
            this.Close();
        }
Ejemplo n.º 2
0
        private async Task AppendForgeDownloadTask(Version ver, JWForge forge)
        {
            try
            {
                //string json = await APIRequester.HttpGetStringAsync(apiHandler.DoURLReplace(item.Url));
                //Version ver = App.handler.JsonToVersion(json);
                //string jsonPath = App.handler.GetJsonPath(ver.ID);

                //string dir = Path.GetDirectoryName(jsonPath);
                //if (!Directory.Exists(dir))
                //{
                //    Directory.CreateDirectory(dir);
                //}

                //File.WriteAllText(jsonPath, json);

                //List<DownloadTask> tasks = new List<DownloadTask>();

                //tasks.Add(new DownloadTask("资源引导", apiHandler.DoURLReplace(ver.AssetIndex.URL), App.handler.GetAssetsIndexPath(ver.Assets)));

                //tasks.AddRange(await NsisoLauncherCore.Util.FileHelper.GetLostDependDownloadTaskAsync(App.config.MainConfig.Download.DownloadSource, App.handler, ver));

                //App.downloader.SetDownloadTasks(tasks);
                //App.downloader.StartDownload();
            }
            catch (WebException ex)
            {
                this.Dispatcher.Invoke(new Action(() =>
                {
                    this.ShowMessageAsync("获取版本信息失败", "请检查您的网络是否正常或更改下载源/n原因:" + ex.Message);
                }));
            }
            catch (Exception ex)
            {
                AggregateExceptionArgs args = new AggregateExceptionArgs()
                {
                    AggregateException = new AggregateException(ex)
                };
                App.CatchAggregateException(this, args);
            }
        }
Ejemplo n.º 3
0
        private async void DownloadForgeButton_Click(object sender, RoutedEventArgs e)
        {
            Version ver = null;

            if (verToInstallForgeComboBox.SelectedItem != null)
            {
                ver = (Version)verToInstallForgeComboBox.SelectedItem;
            }
            else
            {
                await this.ShowMessageAsync("您未选择要安装Forge的Minecraft", "您需要选择一个需要安装Forge的Minecraft本体");

                return;
            }

            JWForge forge = null;

            if (forgeListDataGrid.SelectedItem != null)
            {
                forge = (JWForge)forgeListDataGrid.SelectedItem;
            }
            else
            {
                await this.ShowMessageAsync("您未选择要安装的Forge", "您需要选择一个要安装Forge");

                return;
            }

            var loading = await this.ShowProgressAsync("准备进行下载", string.Format("即将为版本{0}下载安装Forge:{1}", ver.ID, forge.Version));

            loading.SetIndeterminate();
            //await AppendVersionsDownloadTask(selectItems);
            await loading.CloseAsync();

            this.Close();
        }
Ejemplo n.º 4
0
        private void AppendForgeDownloadTask(Version ver, JWForge forge)
        {
            string       forgePath = NsisoLauncherCore.PathManager.TempDirectory + string.Format(@"\Forge_{0}-Installer.jar", forge.Build);
            DownloadTask dt        = new DownloadTask("forge核心",
                                                      string.Format("https://bmclapi2.bangbang93.com/forge/download/{0}", forge.Build),
                                                      forgePath);

            dt.Todo = new Func <Exception>(() =>
            {
                try
                {
                    CommonInstaller installer = new CommonInstaller(forgePath, new CommonInstallOptions()
                    {
                        GameRootPath = App.Handler.GameRootPath
                    });
                    installer.BeginInstall();
                    return(null);
                }
                catch (Exception ex)
                { return(ex); }
            });
            App.Downloader.AddDownloadTask(dt);
            App.Downloader.StartDownload();
        }