diff --git a/build/Targets/RestoreSources.props b/build/Targets/RestoreSources.props
index 0043818b3..30d427524 100644
--- a/build/Targets/RestoreSources.props
+++ b/build/Targets/RestoreSources.props
@@ -8,8 +8,7 @@
https://www.myget.org/F/cosmos/api/v3/index.json;
https://ci.appveyor.com/nuget/cosmos-common;
https://ci.appveyor.com/nuget/il2cpu;
- https://ci.appveyor.com/nuget/xsharp;
- https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json
+ https://ci.appveyor.com/nuget/xsharp
$(RestoreSources);$(DefaultPackageOutputPath)
diff --git a/readme-IT.md b/readme-IT.md
new file mode 100644
index 000000000..eec341039
--- /dev/null
+++ b/readme-IT.md
@@ -0,0 +1,9 @@
+# Cosmos
+
+[](https://ci.appveyor.com/project/CosmosOS/cosmos/branch/master)
+
+Cosmos รจ un "kit di costruzione" per SO. Fai il tuo sistema operativo con linguaggi gestiti come C#, VB.NET, e altri!
+
+Per avere informazioni su come usare Cosmos, visita il [sito web di Cosmos](http://www.gocosmos.org).
+
+Per documentazione e informazioni tecniche, visita la [documentazione di Cosmos](https://cosmosos.github.io).
diff --git a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs
index 806b605df..3580085af 100644
--- a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs
+++ b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs
@@ -14,6 +14,12 @@ 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;
+
+ public string OtherDependencysThatAreMissing
+ {
+ get { return Name; }
+ }
private readonly IInnoSetupService _innoSetupService;
diff --git a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs
index 44bfa9573..e2624dad0 100644
--- a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs
+++ b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs
@@ -13,6 +13,28 @@ namespace Cosmos.Build.Builder.Dependencies
internal class ReposDependency : IDependency
{
public string Name => "Repos: IL2CPU, XSharp and Common";
+ public bool ShouldInstallByDefault => true;
+
+ public string OtherDependencysThatAreMissing
+ {
+ get
+ {
+ string result = "";
+ if (!Directory.Exists(Path.GetFullPath(Path.Combine(_cosmosDir, "..", "IL2CPU"))))
+ {
+ result += "IL2CPU Repo, ";
+ }
+ if (!Directory.Exists(Path.GetFullPath(Path.Combine(_cosmosDir, "..", "XSharp"))))
+ {
+ result += "XSharp Repo, ";
+ }
+ if (!Directory.Exists(Path.GetFullPath(Path.Combine(_cosmosDir, "..", "Common"))))
+ {
+ result += "Common Repo";
+ }
+ return result;
+ }
+ }
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..f9f6304b7 100644
--- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs
+++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs
@@ -9,11 +9,16 @@ 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}+";
+ public string OtherDependencysThatAreMissing
+ {
+ get { return Name+"+"; }
+ }
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..1b1fb439b 100644
--- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs
+++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs
@@ -17,9 +17,33 @@ namespace Cosmos.Build.Builder.Dependencies
NetCoreToolsWorkload,
VisualStudioExtensionsWorkload
};
-
+ public bool ShouldInstallByDefault => false;
public string Name => "Visual Studio Workloads";
+ public string OtherDependencysThatAreMissing
+ {
+ get
+ {
+ var missingPackages = ((string[])RequiredPackages.Clone()).ToList();
+ foreach (var item in RequiredPackages)
+ {
+ if (IsPackageInstalled(item))
+ {
+ missingPackages.Remove(item);
+ }
+ }
+
+ //Add the missing packages together
+ string missingPackages_proper = "";
+ foreach (var item in missingPackages)
+ {
+ missingPackages_proper += GetProperName(item) + ", ";
+ }
+
+ return missingPackages_proper;
+ }
+ }
+
private readonly ISetupInstance2 _visualStudioInstance;
public VisualStudioWorkloadsDependency(ISetupInstance2 visualStudioInstance)
@@ -32,7 +56,19 @@ namespace Cosmos.Build.Builder.Dependencies
var installedPackages = _visualStudioInstance.GetPackages();
return Task.FromResult(RequiredPackages.All(p => IsPackageInstalled(p)));
}
+ private string GetProperName(string packageId)
+ {
+ if (packageId == NetCoreToolsWorkload)
+ {
+ return ".NET Core cross-platform development";
+ }
+ else if (packageId == VisualStudioExtensionsWorkload)
+ {
+ return "Visual Studio Extension development";
+ }
+ return "Unknown Workload: " + packageId;
+ }
public async Task InstallAsync(CancellationToken cancellationToken)
{
var vsInstallerPath = Environment.ExpandEnvironmentVariables(
diff --git a/source/Cosmos.Build.Builder/IDependency.cs b/source/Cosmos.Build.Builder/IDependency.cs
index e881c1a46..3d6549b84 100644
--- a/source/Cosmos.Build.Builder/IDependency.cs
+++ b/source/Cosmos.Build.Builder/IDependency.cs
@@ -6,7 +6,9 @@ namespace Cosmos.Build.Builder
internal interface IDependency
{
string Name { get; }
+ bool ShouldInstallByDefault { get; }
+ string OtherDependencysThatAreMissing { 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..fd4d6fd82 100644
--- a/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs
+++ b/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs
@@ -107,17 +107,29 @@ namespace Cosmos.Build.Builder.ViewModels
}
else
{
- _logger.LogMessage($"{dependency.Name} not found.");
+ _logger.LogMessage($"{dependency.Name} not found. Install {dependency.OtherDependencysThatAreMissing}");
- 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.OtherDependencysThatAreMissing}");
+ _logger.SetError();
+ _logger.NewSection("Error");
+ _logger.LogMessage($"{dependency.Name} not found.");
+ _logger.SetError();
+ return;
+ }
}
}