diff --git a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs index 806b605df..c9d70e21c 100644 --- a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs @@ -14,6 +14,7 @@ namespace Cosmos.Build.Builder.Dependencies private const string InnoSetupInstallerUrl = "http://www.jrsoftware.org/download.php/is.exe"; public string Name => "Inno Setup"; + public bool ShouldInstallByDefault => true; private readonly IInnoSetupService _innoSetupService; diff --git a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs index 44bfa9573..f80aabdd3 100644 --- a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs @@ -13,6 +13,7 @@ namespace Cosmos.Build.Builder.Dependencies internal class ReposDependency : IDependency { public string Name => "Repos: IL2CPU, XSharp and Common"; + public bool ShouldInstallByDefault => true; private readonly string _cosmosDir; private readonly IEnumerable _repos; diff --git a/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs b/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs index abdfa7968..7e6df6d11 100644 --- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs @@ -9,11 +9,12 @@ namespace Cosmos.Build.Builder.Dependencies internal class VisualStudioDependency : IDependency { private static readonly Version MinimumVsVersion = new Version(15, 9); - + public bool ShouldInstallByDefault => true; public string Name => $"Visual Studio {MinimumVsVersion.Major}.{MinimumVsVersion.Minor}+"; private readonly ISetupInstance2 _visualStudioInstance; + public VisualStudioDependency(ISetupInstance2 visualStudioInstance) { _visualStudioInstance = visualStudioInstance; diff --git a/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs b/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs index 42a580674..dd9423d86 100644 --- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs @@ -17,7 +17,7 @@ namespace Cosmos.Build.Builder.Dependencies NetCoreToolsWorkload, VisualStudioExtensionsWorkload }; - + public bool ShouldInstallByDefault => false; public string Name => "Visual Studio Workloads"; private readonly ISetupInstance2 _visualStudioInstance; diff --git a/source/Cosmos.Build.Builder/IDependency.cs b/source/Cosmos.Build.Builder/IDependency.cs index e881c1a46..f53867fb1 100644 --- a/source/Cosmos.Build.Builder/IDependency.cs +++ b/source/Cosmos.Build.Builder/IDependency.cs @@ -6,6 +6,7 @@ namespace Cosmos.Build.Builder internal interface IDependency { string Name { get; } + bool ShouldInstallByDefault { get; } Task IsInstalledAsync(CancellationToken cancellationToken); Task InstallAsync(CancellationToken cancellationToken); diff --git a/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs b/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs index 05836967d..a1458532b 100644 --- a/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs +++ b/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs @@ -109,15 +109,27 @@ namespace Cosmos.Build.Builder.ViewModels { _logger.LogMessage($"{dependency.Name} not found."); - using (var viewModel = new DependencyInstallationDialogViewModel(dependency)) + if (dependency.ShouldInstallByDefault) { - _dependencyInstallationDialogService.ShowDialog(viewModel); - - if (!viewModel.InstallationSucceeded) + using (var viewModel = new DependencyInstallationDialogViewModel(dependency)) { - throw new Exception($"Dependency installation failed! Dependency name: {dependency.Name}"); + _dependencyInstallationDialogService.ShowDialog(viewModel); + + if (!viewModel.InstallationSucceeded) + { + throw new Exception($"Dependency installation failed! Dependency name: {dependency.Name}"); + } } } + else + { + MessageBox.Show($"{dependency.Name} is not installed. Please install {dependency.Name}"); + _logger.SetError(); + _logger.NewSection("Error"); + _logger.LogMessage($"{dependency.Name} not found."); + _logger.SetError(); + return; + } } }