Esempio n. 1
0
        public override IEnumerable <StatusReportItem> PerformReadyCheck()
        {
            // load patchExclusions from settings instead of caching them, so we don't have different code paths from elevated binary
            HashSet <string> patchExclusions = PatchInstallation.LoadPatchExclusions();

            // check if DCS install folders are configured
            IList <InstallationLocation> locations = InstallationLocations.Singleton.Active;

            if (!locations.Any())
            {
                yield return(new StatusReportItem
                {
                    Status = $"No DCS installation locations are configured for {PatchSetShortName} patch installation",
                    Recommendation = "Configure any DCS installation directories you use",
                    Link = StatusReportItem.ProfileEditor,
                    Severity = StatusReportItem.SeverityCode.Error
                });

                yield break;
            }

            // check if all our patches are installed
            foreach (PatchApplication item in locations
                     .Select(CreatePatchDestination))
            {
                if (item.SelectedVersion == null)
                {
                    yield return(new StatusReportItem
                    {
                        Status = $"No {PatchSetShortName} patches compatible with {item.Destination.Description} found",
                        Recommendation =
                            "Please reinstall Helios to install these patches or provide them in documents folder",
                        Severity = StatusReportItem.SeverityCode.Error
                    });
                }

                foreach (StatusReportItem result in item.Patches.Verify(item.Destination, patchExclusions))
                {
                    // return detailed results instead of just "up to date or not"
                    yield return(result);
                }
            }

            yield return(new StatusReportItem
            {
                Status = $"Helios is managing DCS {PatchSetShortName} patches",
                Recommendation =
                    $"Do not also install {PatchSetShortName} mods manually or via a mod manager like OVGME",
                Flags = StatusReportItem.StatusFlags.Verbose | StatusReportItem.StatusFlags.ConfigurationUpToDate
            });
        }
Esempio n. 2
0
        private static void DcsRevert(ElevatedProcessResponsePipe response, string outputRoot, IEnumerable <string> patchFolders)
        {
            PatchList patches = LoadPatches(patchFolders);

            if (!InstallationLocation.TryLoadLocation(outputRoot, true, out InstallationLocation location))
            {
                ReportBadLocation(response, outputRoot);
                return;
            }
            PatchDestination         dcs             = new PatchDestination(location);
            HashSet <string>         patchExclusions = PatchInstallation.LoadPatchExclusions();
            IList <StatusReportItem> results         = patches.Revert(dcs, patchExclusions).ToList();

            response.SendReport(results);
        }