diff --git a/ModpackUpdater.Manager/ModpackInstaller.cs b/ModpackUpdater.Manager/ModpackInstaller.cs index 11ec1c1..7fbf338 100644 --- a/ModpackUpdater.Manager/ModpackInstaller.cs +++ b/ModpackUpdater.Manager/ModpackInstaller.cs @@ -37,18 +37,34 @@ public class ModpackInstaller(ModpackConfig updateConfig, string localPath) return InstallInfos.Parse(content); } - public async Task Check() + public async Task Check(bool allowUpdaterAfterInstall = true) { var result = new UpdateCheckResult(); + var hasConfig = ModpackInfo.HasModpackInfo(localPath); + InstallInfos installInfos = null; + UpdateInfos updateInfos = null; - if (ModpackInfo.HasModpackInfo(localPath)) + if (!hasConfig) { - var infos = await DownloadUpdateInfos(); - var modpackInfo = ModpackInfo.Load(localPath); + installInfos = await DownloadInstallInfos(); - if (infos is not null && infos.Updates.Count != 0) + if (installInfos is not null && installInfos.Actions.Count != 0) { - var updatesOrderes = infos.Updates.OrderByDescending(n => n.Version); + result.Actions.AddRange(installInfos.Actions); + result.LatestVersion = installInfos.Version; + } + else + result.HasError = true; + } + + if (allowUpdaterAfterInstall) + { + updateInfos = await DownloadUpdateInfos(); + var modpackInfo = ModpackInfo.HasModpackInfo(localPath) ? ModpackInfo.Load(localPath) : new(); + + if (updateInfos is not null && updateInfos.Updates.Count != 0) + { + var updatesOrderes = updateInfos.Updates.OrderByDescending(n => n.Version); result.LatestVersion = updatesOrderes.First().Version; result.CurrentVersion = modpackInfo.Version; result.IsInstalled = true; @@ -76,19 +92,6 @@ public class ModpackInstaller(ModpackConfig updateConfig, string localPath) result.HasError = true; } - if (!result.IsInstalled) - { - var infos = await DownloadInstallInfos(); - - if (infos is not null && infos.Actions.Count != 0) - { - result.Actions.AddRange(infos.Actions); - result.LatestVersion = infos.Version; - } - else - result.HasError = true; - } - return result; }