//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(); }
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); } }
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(); }
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(); }