MinecraftLaunch icon indicating copy to clipboard operation
MinecraftLaunch copied to clipboard

复合安装器不安装

Open EasyColorful666 opened this issue 9 months ago • 1 comments

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

    

}

EasyColorful666 avatar Mar 14 '25 09:03 EasyColorful666

复合安装器我rmcl用的时候安装的游戏经常要再次安装才能用,第一次安装就是启动不了(我也不知道,反正有问题)

MinecraftYJQ avatar Mar 14 '25 13:03 MinecraftYJQ