MinecraftLaunch
MinecraftLaunch copied to clipboard
复合安装器不安装
private async void InstallGameCoreAsync()
{
IEnumerable<IInstallEntry> installEntries = new List<IInstallEntry>();
if (string.IsNullOrEmpty(SelectedVersion))
{
Growl.Error("请选择一个游戏版本。");
return;
}
if (!string.IsNullOrEmpty(SelectedVersion))
{
entry = await VanillaInstaller.EnumerableMinecraftAsync()
.FirstAsync(x => x.Id == SelectedVersion);
installEntries.Concat([entry]);
}
if (!string.IsNullOrEmpty(SelectedFabricVersions))
{
fabricEntry = await FabricInstaller.EnumerableFabricAsync(SelectedVersion)
.FirstAsync(x => x.BuildVersion == SelectedFabricVersions);
installEntries.Concat([entry]);
}
if (!string.IsNullOrEmpty(SelectedForgeVersions))
{
forgeEntry = await ForgeInstaller.EnumerableForgeAsync(SelectedVersion)
.FirstAsync(x => x.ForgeVersion == SelectedForgeVersions);
installEntries.Concat([entry]);
}
if (!string.IsNullOrEmpty(SelectedQuiltVersions))
{
quiltEntry = await QuiltInstaller.EnumerableQuiltAsync(SelectedVersion)
.FirstAsync(x => x.BuildVersion == SelectedQuiltVersions);
installEntries.Concat([entry]);
}
if (!string.IsNullOrEmpty(SelectedOptifineVersions))
{
optifineEntry = await OptifineInstaller.EnumerableOptifineAsync(SelectedVersion)
.FirstAsync(x => x.Type+' '+x.Patch == SelectedOptifineVersions);
installEntries.Concat([entry]);
}
if (!string.IsNullOrEmpty(SelectedNeoForgeVersions))
{
neoForgeEntry = await ForgeInstaller.EnumerableForgeAsync(SelectedVersion)
.FirstAsync(x => x.ForgeVersion == SelectedNeoForgeVersions);
installEntries.Concat([entry]);
}
CompositeInstaller installer;
if (!installEntries.Any())
{
installer = CompositeInstaller.Create(installEntries, "./.minecraft");
installer.ProgressChanged += (_, x) =>
{
Application.Current.Dispatcher.Invoke(() =>
{
ProgressValue = x.Progress * 100;
StatusMessage = x.StepName.ToString();
});
};
_tasks.Add(new _Task { ID = _tasks.Count + 1, Name = $"安装游戏核心{SelectedVersion}" });
var result = installer.InstallAsync();
if (result.IsCompleted)
{
Growl.Success($"游戏核心{SelectedVersion}安装成功");
LocalVersions.Add(SelectedVersion);
}
}
}
复合安装器我rmcl用的时候安装的游戏经常要再次安装才能用,第一次安装就是启动不了(我也不知道,反正有问题)