Esempio n. 1
0
        public bool DependenciesAreInstalledProperly()
        {
            _logger.Write("Checking launch dependencies.");

            if (!Environment.Is64BitOperatingSystem)
            {
                _logger.Write($"Is not 64-bit OS. OS version: {Environment.OSVersion}");
                _notificationService.ShowNotification("GT-MP requires a 64-bit operating system.", true);
                return(false);
            }

            RequiredDependency firstMissingDependency = null;

            try
            {
                foreach (var dependency in _requiredRepDependencies)
                {
                    _logger.Write($"Check for dependency: {dependency.Name}");

                    if (dependency.IsInstalledCorrectly() || dependency.IsAnyEquivalentInstalledCorrectly())
                    {
                        continue;
                    }

                    if (dependency.Name.StartsWith("Microsoft Visual C++ 2015"))
                    {
                        continue;
                    }
                    firstMissingDependency = dependency;
                    break;
                }
            }
            catch (Exception ex)
            {
                _logger.Write(ex);
                var launchAnyways = AskToLaunchAnyways();

                if (!launchAnyways)
                {
                    return(false);
                }

                _logger.Write("User chose to launch anyways.");
                return(true);
            }

            if (firstMissingDependency == null)
            {
                return(true);
            }

            _logger.Write($"Missing dependency. ({firstMissingDependency.Name})");

            if (MessageBox.Show(
                    $"{firstMissingDependency.Name} is missing.\nWould you like to download it now?",
                    "Missing dependency",
                    MessageBoxButton.YesNoCancel) == MessageBoxResult.Yes)
            {
                Process.Start(firstMissingDependency.DownloadUrl);
            }

            return(false);
        }
Esempio n. 2
0
 public MyService(RequiredDependency d)
 {
 }
 public class MyService { public MyService(RequiredDependency dependency)
                          {
                          }