Disable auto-install of workloads

Disable auto-install of workloads
This commit is contained in:
MishaTY 2021-01-03 12:07:41 -05:00
parent 274c5c8b7a
commit 3f3d6ab5ef
6 changed files with 23 additions and 7 deletions

View file

@ -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;

View file

@ -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<Repo> _repos;

View file

@ -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;

View file

@ -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;

View file

@ -6,6 +6,7 @@ namespace Cosmos.Build.Builder
internal interface IDependency
{
string Name { get; }
bool ShouldInstallByDefault { get; }
Task<bool> IsInstalledAsync(CancellationToken cancellationToken);
Task InstallAsync(CancellationToken cancellationToken);

View file

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