diff --git a/src/Artemis.UI.Installer/App.config b/src/Artemis.UI.Installer/App.config
deleted file mode 100644
index 56efbc7b5..000000000
--- a/src/Artemis.UI.Installer/App.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/App.xaml b/src/Artemis.UI.Installer/App.xaml
deleted file mode 100644
index d93b0dbd0..000000000
--- a/src/Artemis.UI.Installer/App.xaml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- pack://application:,,,/Resources/Fonts/#Roboto Mono
-
-
-
-
-
-
-
diff --git a/src/Artemis.UI.Installer/App.xaml.cs b/src/Artemis.UI.Installer/App.xaml.cs
deleted file mode 100644
index 89097c310..000000000
--- a/src/Artemis.UI.Installer/App.xaml.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Data;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace Artemis.UI.Installer
-{
- ///
- /// Interaction logic for App.xaml
- ///
- public partial class App : Application
- {
- }
-}
diff --git a/src/Artemis.UI.Installer/Artemis.UI.Installer.csproj b/src/Artemis.UI.Installer/Artemis.UI.Installer.csproj
deleted file mode 100644
index 106236ab3..000000000
--- a/src/Artemis.UI.Installer/Artemis.UI.Installer.csproj
+++ /dev/null
@@ -1,179 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {2AE00626-50EC-4788-9EA7-CDADB00502A3}
- WinExe
- Artemis.UI.Installer
- Artemis.UI.Installer
- v4.7.2
- 512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
- true
- true
-
-
-
-
- app.manifest
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE
- full
- x64
- 7.3
- prompt
-
-
- bin\x64\Release\
- TRACE
- true
- pdbonly
- x64
- 7.3
- prompt
- true
-
-
-
- ..\packages\FluentValidation.9.3.0\lib\net461\FluentValidation.dll
-
-
- ..\packages\MaterialDesignColors.1.2.7\lib\net45\MaterialDesignColors.dll
-
-
- ..\packages\MaterialDesignExtensions.3.3.0-a01\lib\net45\MaterialDesignExtensions.dll
-
-
- ..\packages\MaterialDesignThemes.3.2.0\lib\net45\MaterialDesignThemes.Wpf.dll
-
-
- ..\packages\Ookii.Dialogs.Wpf.3.1.0\lib\net45\Ookii.Dialogs.Wpf.dll
-
-
- ..\packages\Stylet.1.3.5\lib\net45\Stylet.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4.0
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
-
-
-
-
-
-
- App.xaml
- Code
-
-
-
- DirectoryStepView.xaml
-
-
-
- InstallStepView.xaml
-
-
-
- PrerequisitesStepView.xaml
-
-
-
- PrerequisiteView.xaml
-
-
-
-
-
-
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
-
-
- Code
-
-
- True
- True
- Resources.resx
-
-
- True
- Settings.settings
- True
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
-
-
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
-
-
-
-
-
-
-
-
- This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Artemis.UI.Installer.csproj.DotSettings b/src/Artemis.UI.Installer/Artemis.UI.Installer.csproj.DotSettings
deleted file mode 100644
index 41af9b369..000000000
--- a/src/Artemis.UI.Installer/Artemis.UI.Installer.csproj.DotSettings
+++ /dev/null
@@ -1,3 +0,0 @@
-
- True
- True
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Bootstrapper.cs b/src/Artemis.UI.Installer/Bootstrapper.cs
deleted file mode 100644
index c58cc1265..000000000
--- a/src/Artemis.UI.Installer/Bootstrapper.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Artemis.UI.Installer.Screens;
-using Artemis.UI.Installer.Screens.Steps;
-using Artemis.UI.Installer.Services;
-using Artemis.UI.Installer.Services.Prerequisites;
-using Artemis.UI.Installer.Stylet;
-using FluentValidation;
-using Stylet;
-using StyletIoC;
-
-namespace Artemis.UI.Installer
-{
- public class Bootstrapper : Bootstrapper
- {
- #region Overrides of Bootstrapper
-
- ///
- protected override void ConfigureIoC(IStyletIoCBuilder builder)
- {
- // View related stuff
- builder.Bind().ToAllImplementations();
- builder.Bind(typeof(IPrerequisite)).ToAllImplementations();
-
- // Services
- builder.Bind().To().InSingletonScope();
-
- // Validation
- builder.Bind(typeof(IModelValidator<>)).To(typeof(FluentValidationAdapter<>));
- builder.Bind(typeof(IValidator<>)).ToAllImplementations();
-
- base.ConfigureIoC(builder);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Converters/InverseBooleanConverter.cs b/src/Artemis.UI.Installer/Converters/InverseBooleanConverter.cs
deleted file mode 100644
index f9902fc1c..000000000
--- a/src/Artemis.UI.Installer/Converters/InverseBooleanConverter.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Globalization;
-using System.Windows.Data;
-
-namespace Artemis.UI.Installer.Converters
-{
- [ValueConversion(typeof(bool), typeof(bool))]
- public class InverseBooleanConverter : IValueConverter
- {
- #region IValueConverter Members
-
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (targetType == typeof(bool))
- return !(bool) value;
- if (targetType == typeof(bool?))
- return !(bool?) value;
-
- throw new InvalidOperationException("The target must be a boolean");
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (targetType == typeof(bool))
- return !(bool) value;
- if (targetType == typeof(bool?))
- return !(bool?) value;
-
- throw new InvalidOperationException("The target must be a boolean");
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Properties/AssemblyInfo.cs b/src/Artemis.UI.Installer/Properties/AssemblyInfo.cs
deleted file mode 100644
index 7eed1d6d7..000000000
--- a/src/Artemis.UI.Installer/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Artemis.UI.Installer")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Artemis.UI.Installer")]
-[assembly: AssemblyCopyright("Copyright © 2020")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-//In order to begin building localizable applications, set
-//CultureYouAreCodingWith in your .csproj file
-//inside a . For example, if you are using US english
-//in your source files, set the to en-US. Then uncomment
-//the NeutralResourceLanguage attribute below. Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
-
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/Artemis.UI.Installer/Properties/Resources.Designer.cs b/src/Artemis.UI.Installer/Properties/Resources.Designer.cs
deleted file mode 100644
index ccde4c741..000000000
--- a/src/Artemis.UI.Installer/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-
-namespace Artemis.UI.Installer.Properties
-{
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Artemis.UI.Installer.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
- return resourceCulture;
- }
- set
- {
- resourceCulture = value;
- }
- }
- }
-}
diff --git a/src/Artemis.UI.Installer/Properties/Resources.resx b/src/Artemis.UI.Installer/Properties/Resources.resx
deleted file mode 100644
index af7dbebba..000000000
--- a/src/Artemis.UI.Installer/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Properties/Settings.Designer.cs b/src/Artemis.UI.Installer/Properties/Settings.Designer.cs
deleted file mode 100644
index cf6eba3b8..000000000
--- a/src/Artemis.UI.Installer/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-
-namespace Artemis.UI.Installer.Properties
-{
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/src/Artemis.UI.Installer/Properties/Settings.settings b/src/Artemis.UI.Installer/Properties/Settings.settings
deleted file mode 100644
index 033d7a5e9..000000000
--- a/src/Artemis.UI.Installer/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/RootView.xaml b/src/Artemis.UI.Installer/Screens/RootView.xaml
deleted file mode 100644
index bfbda2419..000000000
--- a/src/Artemis.UI.Installer/Screens/RootView.xaml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/RootViewModel.cs b/src/Artemis.UI.Installer/Screens/RootViewModel.cs
deleted file mode 100644
index 8ef884c0b..000000000
--- a/src/Artemis.UI.Installer/Screens/RootViewModel.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using Artemis.UI.Installer.Screens.Steps;
-using MaterialDesignExtensions.Controllers;
-using MaterialDesignExtensions.Controls;
-using Stylet;
-
-namespace Artemis.UI.Installer.Screens
-{
- public class RootViewModel : Conductor.Collection.OneActive
- {
- private StepperController _stepperController;
-
- public RootViewModel(IEnumerable configurationSteps)
- {
- Items.AddRange(configurationSteps.OrderBy(s => s.Order));
- }
-
- public void ActiveStepChanged(object sender, ActiveStepChangedEventArgs e)
- {
- Stepper stepper = (Stepper) sender;
- _stepperController = stepper.Controller;
-
- int activeStepIndex = stepper.Steps.IndexOf(e.Step);
- if (Items.Count > activeStepIndex)
- ActiveItem = Items[activeStepIndex];
- else
- _stepperController.Back();
- }
-
- public void Cancel()
- {
- RequestClose();
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/ConfigurationStep.cs b/src/Artemis.UI.Installer/Screens/Steps/ConfigurationStep.cs
deleted file mode 100644
index 5f73d3778..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/ConfigurationStep.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Stylet;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- public abstract class ConfigurationStep : Screen
- {
- ///
- protected ConfigurationStep()
- {
- }
-
- ///
- protected ConfigurationStep(IModelValidator validator) : base(validator)
- {
- }
-
- public abstract int Order { get; }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepView.xaml b/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepView.xaml
deleted file mode 100644
index 6682faa60..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepView.xaml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Select the directory in which you wish to install Artemis.
-
-
-
- Because Artemis can start together with Windows, it is recommended to install on an SSD.
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepView.xaml.cs b/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepView.xaml.cs
deleted file mode 100644
index 4c9a7dd5b..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepView.xaml.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- ///
- /// Interaction logic for DirectoryStepView.xaml
- ///
- public partial class DirectoryStepView : UserControl
- {
- public DirectoryStepView()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepViewModel.cs b/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepViewModel.cs
deleted file mode 100644
index 1864f8675..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/DirectoryStepViewModel.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-using System;
-using System.IO;
-using System.Threading.Tasks;
-using Artemis.UI.Installer.Services;
-using FluentValidation;
-using Ookii.Dialogs.Wpf;
-using Stylet;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- public class DirectoryStepViewModel : ConfigurationStep
- {
- private readonly IInstallationService _installationService;
- private string _installationDirectory;
-
- public DirectoryStepViewModel(IInstallationService installationService, IModelValidator validator) : base(validator)
- {
- _installationService = installationService;
- }
-
- public string InstallationDirectory
- {
- get => _installationDirectory;
- set
- {
- if (!SetAndNotify(ref _installationDirectory, value)) return;
- Validate();
- }
- }
-
- public override int Order => 3;
-
- public void BrowseDirectory()
- {
- VistaFolderBrowserDialog dialog = new VistaFolderBrowserDialog
- {
- Description = "Select the directory in which to install Artemis",
- SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
- UseDescriptionForTitle = true
- };
-
- if (dialog.ShowDialog() is bool accepted && accepted)
- InstallationDirectory = Path.Combine(dialog.SelectedPath, "Artemis");
- }
-
- ///
- protected override void OnActivate()
- {
- InstallationDirectory = _installationService.InstallationDirectory;
- base.OnActivate();
- }
-
- ///
- protected override void OnDeactivate()
- {
- _installationService.InstallationDirectory = InstallationDirectory;
- base.OnDeactivate();
- }
- }
-
- public class DirectoryStepViewModelValidator : AbstractValidator
- {
- public DirectoryStepViewModelValidator()
- {
- RuleFor(m => m.InstallationDirectory).NotEmpty().WithMessage("Installation directory is required");
- RuleFor(m => m.InstallationDirectory).Must(s =>
- {
- try
- {
- bool rooted = Path.IsPathRooted(s);
- string _ = Path.GetFullPath(s);
- return rooted;
- }
- catch (Exception)
- {
- return false;
- }
- }).WithMessage("Directory must be valid");
- RuleFor(m => m.InstallationDirectory).Must(s =>
- {
- try
- {
- return Directory.Exists(Path.GetPathRoot(s));
- }
- catch (Exception)
- {
- return false;
- }
- }).WithMessage("Directory is on an invalid drive");
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/InstallStepView.xaml b/src/Artemis.UI.Installer/Screens/Steps/InstallStepView.xaml
deleted file mode 100644
index 22b4c73fb..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/InstallStepView.xaml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- Downloading / MB.
-
-
- Installing .
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/InstallStepView.xaml.cs b/src/Artemis.UI.Installer/Screens/Steps/InstallStepView.xaml.cs
deleted file mode 100644
index 5df23bf0b..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/InstallStepView.xaml.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- ///
- /// Interaction logic for InstallStepView.xaml
- ///
- public partial class InstallStepView : UserControl
- {
- public InstallStepView()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/src/Artemis.UI.Installer/Screens/Steps/InstallStepViewModel.cs b/src/Artemis.UI.Installer/Screens/Steps/InstallStepViewModel.cs
deleted file mode 100644
index a7ef0ab0a..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/InstallStepViewModel.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Artemis.UI.Installer.Services;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- public class InstallStepViewModel : ConfigurationStep
- {
- private readonly IInstallationService _installationService;
- private bool _canContinue;
-
- public InstallStepViewModel(IInstallationService installationService)
- {
- _installationService = installationService;
- }
-
- public override int Order => 4;
-
- public bool CanContinue
- {
- get => _canContinue;
- set => SetAndNotify(ref _canContinue, value);
- }
-
- protected override void OnInitialActivate()
- {
- base.OnInitialActivate();
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteView.xaml b/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteView.xaml
deleted file mode 100644
index e1ffb6cc9..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteView.xaml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteView.xaml.cs b/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteView.xaml.cs
deleted file mode 100644
index 645bd6144..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteView.xaml.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace Artemis.UI.Installer.Screens.Steps.Prerequisites
-{
- ///
- /// Interaction logic for PrerequisiteView.xaml
- ///
- public partial class PrerequisiteView : UserControl
- {
- public PrerequisiteView()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteViewModel.cs b/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteViewModel.cs
deleted file mode 100644
index 5e1ddcf20..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/Prerequisites/PrerequisiteViewModel.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Artemis.UI.Installer.Services.Prerequisites;
-using Stylet;
-
-namespace Artemis.UI.Installer.Screens.Steps.Prerequisites
-{
- public class PrerequisiteViewModel : PropertyChangedBase
- {
- private string _description;
- private bool _isMet;
- private string _title;
-
- public PrerequisiteViewModel(IPrerequisite prerequisite)
- {
- Prerequisite = prerequisite;
- }
-
- public IPrerequisite Prerequisite { get; }
-
- public string Title
- {
- get => _title;
- set => SetAndNotify(ref _title, value);
- }
-
- public string Description
- {
- get => _description;
- set => SetAndNotify(ref _description, value);
- }
-
- public bool IsMet
- {
- get => _isMet;
- set => SetAndNotify(ref _isMet, value);
- }
-
- public void Update()
- {
- Title = Prerequisite.Title;
- Description = Prerequisite.Description;
- IsMet = Prerequisite.IsMet();
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepView.xaml b/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepView.xaml
deleted file mode 100644
index 4928f38ed..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepView.xaml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- In order to run Artemis requires .NET 5 and the Visual C++ Redistributable, both by Microsoft.
- The installer can install these for you if you're missing them.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Downloading / MB.
-
-
- Installing .
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepView.xaml.cs b/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepView.xaml.cs
deleted file mode 100644
index 259a46767..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepView.xaml.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- ///
- /// Interaction logic for PrerequisitesStepView.xaml
- ///
- public partial class PrerequisitesStepView : UserControl
- {
- public PrerequisitesStepView()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepViewModel.cs b/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepViewModel.cs
deleted file mode 100644
index 3e2f5593d..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/PrerequisitesStepViewModel.cs
+++ /dev/null
@@ -1,133 +0,0 @@
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Threading.Tasks;
-using Artemis.UI.Installer.Screens.Steps.Prerequisites;
-using Artemis.UI.Installer.Services;
-using Stylet;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- public class PrerequisitesStepViewModel : ConfigurationStep
- {
- private bool _canContinue;
-
- private bool _displayDownloadButton;
- private bool _displayProcess;
- private double _downloadCurrent;
- private int _downloadProcess;
- private double _downloadTotal;
- private bool _installing;
- private PrerequisiteViewModel _subject;
-
- public PrerequisitesStepViewModel(IInstallationService installationService)
- {
- Prerequisites = new BindableCollection(installationService.Prerequisites.Select(p => new PrerequisiteViewModel(p)));
- }
-
- public BindableCollection Prerequisites { get; }
-
- public bool CanContinue
- {
- get => _canContinue;
- set => SetAndNotify(ref _canContinue, value);
- }
-
- public PrerequisiteViewModel Subject
- {
- get => _subject;
- set => SetAndNotify(ref _subject, value);
- }
-
- public bool DisplayDownloadButton
- {
- get => _displayDownloadButton;
- set => SetAndNotify(ref _displayDownloadButton, value);
- }
-
- public bool DisplayProcess
- {
- get => _displayProcess;
- set => SetAndNotify(ref _displayProcess, value);
- }
-
- public bool Installing
- {
- get => _installing;
- set => SetAndNotify(ref _installing, value);
- }
-
- public int DownloadProcess
- {
- get => _downloadProcess;
- set => SetAndNotify(ref _downloadProcess, value);
- }
-
- public double DownloadCurrent
- {
- get => _downloadCurrent;
- set => SetAndNotify(ref _downloadCurrent, value);
- }
-
- public double DownloadTotal
- {
- get => _downloadTotal;
- set => SetAndNotify(ref _downloadTotal, value);
- }
-
- public override int Order => 2;
-
- public void Update()
- {
- foreach (PrerequisiteViewModel prerequisiteViewModel in Prerequisites)
- prerequisiteViewModel.Update();
-
- CanContinue = Prerequisites.All(p => p.IsMet);
- DisplayDownloadButton = !DisplayProcess && Prerequisites.Any(p => !p.IsMet);
- }
-
- public async Task InstallMissing()
- {
- DisplayDownloadButton = false;
- DisplayProcess = true;
-
- foreach (PrerequisiteViewModel prerequisiteViewModel in Prerequisites)
- {
- if (prerequisiteViewModel.IsMet) continue;
- using (WebClient client = new WebClient())
- {
- Subject = prerequisiteViewModel;
-
- client.DownloadProgressChanged += ClientOnDownloadProgressChanged;
- string runtimeFile = Path.GetTempFileName();
- runtimeFile = runtimeFile.Replace(".tmp", ".exe");
- await client.DownloadFileTaskAsync(prerequisiteViewModel.Prerequisite.DownloadUrl, runtimeFile);
- client.DownloadProgressChanged -= ClientOnDownloadProgressChanged;
-
- Installing = true;
- await prerequisiteViewModel.Prerequisite.Install(runtimeFile);
- File.Delete(runtimeFile);
- Installing = false;
- }
-
- Update();
- }
-
- DisplayProcess = false;
- DisplayDownloadButton = Prerequisites.Any(p => !p.IsMet);
- }
-
- protected override void OnActivate()
- {
- Update();
- base.OnActivate();
- }
-
- private void ClientOnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
- {
- DownloadTotal = e.TotalBytesToReceive / 1000000d;
- DownloadCurrent = e.BytesReceived / 1000000d;
- DownloadProcess = e.ProgressPercentage;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/WelcomeStepView.xaml b/src/Artemis.UI.Installer/Screens/Steps/WelcomeStepView.xaml
deleted file mode 100644
index c7afdbb69..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/WelcomeStepView.xaml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
- Welcome to the Artemis installation wizard!
-
-
- This wizard will install or update Artemis for you, ensuring you have the latest version.
-
-
- In order to do this, the installer requires an active internet connection to download the latest program files.
- Click continue to get started!
-
-
- PS: The files downloaded will be about 35 MB.
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Screens/Steps/WelcomeStepViewModel.cs b/src/Artemis.UI.Installer/Screens/Steps/WelcomeStepViewModel.cs
deleted file mode 100644
index 07121aaa4..000000000
--- a/src/Artemis.UI.Installer/Screens/Steps/WelcomeStepViewModel.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Artemis.UI.Installer.Services;
-
-namespace Artemis.UI.Installer.Screens.Steps
-{
- public class WelcomeStepViewModel : ConfigurationStep
- {
- private readonly IInstallationService _installationService;
-
- public WelcomeStepViewModel(IInstallationService installationService)
- {
- _installationService = installationService;
- }
-
- public override int Order => 1;
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Services/IIInstallationService.cs b/src/Artemis.UI.Installer/Services/IIInstallationService.cs
deleted file mode 100644
index e48721e50..000000000
--- a/src/Artemis.UI.Installer/Services/IIInstallationService.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Collections.Generic;
-using Artemis.UI.Installer.Services.Prerequisites;
-
-namespace Artemis.UI.Installer.Services
-{
- public interface IInstallationService
- {
- string InstallationDirectory { get; set; }
- List Prerequisites { get; }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Services/InstallationService.cs b/src/Artemis.UI.Installer/Services/InstallationService.cs
deleted file mode 100644
index cb437b3a1..000000000
--- a/src/Artemis.UI.Installer/Services/InstallationService.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using Artemis.UI.Installer.Services.Prerequisites;
-
-namespace Artemis.UI.Installer.Services
-{
- public class InstallationService : IInstallationService
- {
- public InstallationService(IEnumerable prerequisites)
- {
- InstallationDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Artemis");
- Prerequisites = prerequisites.ToList();
- }
-
- public string InstallationDirectory { get; set; }
- public List Prerequisites { get; }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Services/Prerequisites/DotnetPrerequisite.cs b/src/Artemis.UI.Installer/Services/Prerequisites/DotnetPrerequisite.cs
deleted file mode 100644
index e6189c6a7..000000000
--- a/src/Artemis.UI.Installer/Services/Prerequisites/DotnetPrerequisite.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System;
-using System.Threading.Tasks;
-using Artemis.UI.Installer.Utilities;
-using Microsoft.Win32;
-
-namespace Artemis.UI.Installer.Services.Prerequisites
-{
- public class DotnetPrerequisite : IPrerequisite
- {
- public string Title => ".NET 5 runtime x64";
-
- public string Description => "The .NET 5 runtime is required for Artemis to run, the download is about 50 MB";
-
- public string DownloadUrl => "https://download.visualstudio.microsoft.com/download/pr/c6a74d6b-576c-4ab0-bf55-d46d45610730/" +
- "f70d2252c9f452c2eb679b8041846466/windowsdesktop-runtime-5.0.1-win-x64.exe";
-
- public bool IsMet()
- {
- RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost");
- object versionValue = key?.GetValue("Version");
- if (versionValue == null)
- return false;
-
- Version dotnetVersion = Version.Parse(versionValue.ToString());
- return dotnetVersion.Major >= 5;
- }
-
- public async Task Install(string file)
- {
- await ProcessUtilities.RunProcessAsync(file, "-passive");
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Services/Prerequisites/Interface/IPrerequisite.cs b/src/Artemis.UI.Installer/Services/Prerequisites/Interface/IPrerequisite.cs
deleted file mode 100644
index efbaa5e0e..000000000
--- a/src/Artemis.UI.Installer/Services/Prerequisites/Interface/IPrerequisite.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Threading.Tasks;
-
-namespace Artemis.UI.Installer.Services.Prerequisites
-{
- public interface IPrerequisite
- {
- string Title { get; }
- string Description { get; }
- string DownloadUrl { get; }
-
- bool IsMet();
- Task Install(string file);
- }
-}
diff --git a/src/Artemis.UI.Installer/Services/Prerequisites/RedistPrerequisite.cs b/src/Artemis.UI.Installer/Services/Prerequisites/RedistPrerequisite.cs
deleted file mode 100644
index ffea96173..000000000
--- a/src/Artemis.UI.Installer/Services/Prerequisites/RedistPrerequisite.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System.Threading.Tasks;
-using Artemis.UI.Installer.Utilities;
-using Microsoft.Win32;
-
-namespace Artemis.UI.Installer.Services.Prerequisites
-{
- public class RedistPrerequisite : IPrerequisite
- {
- public string Title => "Visual C++ Redistributable for VS 2015, 2017 and 2019 x64";
- public string Description => "The C++ Redistributable is required for many device SDKs, the download is about 15 MB";
- public string DownloadUrl => "https://aka.ms/vs/16/release/vc_redist.x64.exe";
-
- public bool IsMet()
- {
- RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64", false);
- object majorValue = key?.GetValue("Major");
- if (majorValue == null)
- return false;
-
- return int.Parse(majorValue.ToString()) >= 14;
- }
-
- public async Task Install(string file)
- {
- await ProcessUtilities.RunProcessAsync(file, "-passive");
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Stylet/FluentValidationAdapter.cs b/src/Artemis.UI.Installer/Stylet/FluentValidationAdapter.cs
deleted file mode 100644
index 5e6b26d46..000000000
--- a/src/Artemis.UI.Installer/Stylet/FluentValidationAdapter.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using FluentValidation;
-using Stylet;
-
-namespace Artemis.UI.Installer.Stylet
-{
- public class FluentValidationAdapter : IModelValidator
- {
- private readonly IValidator _validator;
- private T _subject;
-
- public FluentValidationAdapter(IValidator validator)
- {
- _validator = validator;
- }
-
- public void Initialize(object subject)
- {
- _subject = (T) subject;
- }
-
- public async Task> ValidatePropertyAsync(string propertyName)
- {
- // If someone's calling us synchronously, and ValidationAsync does not complete synchronously,
- // we'll deadlock unless we continue on another thread.
- return (await _validator.ValidateAsync(_subject, options => options.IncludeProperties(propertyName)).ConfigureAwait(false))
- .Errors.Select(x => x.ErrorMessage);
- }
-
- public async Task>> ValidateAllPropertiesAsync()
- {
- // If someone's calling us synchronously, and ValidationAsync does not complete synchronously,
- // we'll deadlock unless we continue on another thread.
- return (await _validator.ValidateAsync(_subject).ConfigureAwait(false))
- .Errors.GroupBy(x => x.PropertyName)
- .ToDictionary(x => x.Key, x => x.Select(failure => failure.ErrorMessage));
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/Utilities/ProcessUtilities.cs b/src/Artemis.UI.Installer/Utilities/ProcessUtilities.cs
deleted file mode 100644
index 2b4cd3fee..000000000
--- a/src/Artemis.UI.Installer/Utilities/ProcessUtilities.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Diagnostics;
-using System.Threading.Tasks;
-
-namespace Artemis.UI.Installer.Utilities
-{
- public static class ProcessUtilities
- {
- public static Task RunProcessAsync(string fileName, string arguments)
- {
- TaskCompletionSource tcs = new TaskCompletionSource();
-
- Process process = new Process
- {
- StartInfo = {FileName = fileName, Arguments = arguments},
- EnableRaisingEvents = true
- };
-
- process.Exited += (sender, args) =>
- {
- tcs.SetResult(process.ExitCode);
- process.Dispose();
- };
-
- process.Start();
-
- return tcs.Task;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/app.manifest b/src/Artemis.UI.Installer/app.manifest
deleted file mode 100644
index d72e75011..000000000
--- a/src/Artemis.UI.Installer/app.manifest
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Artemis.UI.Installer/packages.config b/src/Artemis.UI.Installer/packages.config
deleted file mode 100644
index aae3fca73..000000000
--- a/src/Artemis.UI.Installer/packages.config
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI.Installer/packages.lock.json b/src/Artemis.UI.Installer/packages.lock.json
deleted file mode 100644
index 6fd99a1a6..000000000
--- a/src/Artemis.UI.Installer/packages.lock.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "version": 1,
- "dependencies": {
- ".NETFramework,Version=v4.7.2": {
- "FluentValidation": {
- "type": "Direct",
- "requested": "[9.3.0, 9.3.0]",
- "resolved": "9.3.0",
- "contentHash": "C44l6Ih+YwpED/TsXfl6LIq6Z4wLXahstnr6T70uUg1Hs7/bLBKKAo9Nl0sLhVjDE8TA+fF+O3IM4nDrwabcSQ=="
- },
- "MaterialDesignColors": {
- "type": "Direct",
- "requested": "[1.2.7, 1.2.7]",
- "resolved": "1.2.7",
- "contentHash": "e+shDlaSAJcuTArqtfWjVUgAOlwQlgWq8akkzCGe1MvfV1ozmOqqXyWxg5w0vC/3/KZ84wnPUJeI1wzEpI0uJQ=="
- },
- "MaterialDesignExtensions": {
- "type": "Direct",
- "requested": "[3.3.0-a01, 3.3.0-a01]",
- "resolved": "3.3.0-a01",
- "contentHash": "dq8lvcj73H6TCmhjlRud8EeUSgC8S2U7T4jOoefmLieZQigbfQNy29hF1041cnu6b3l8mW00zWJituRMSt0iOQ=="
- },
- "MaterialDesignThemes": {
- "type": "Direct",
- "requested": "[3.2.0, 3.2.0]",
- "resolved": "3.2.0",
- "contentHash": "aOZQShQuV7sCWOwO98dYz1S4stmIWDBH+Q6KoR3wDiDyuG7twoGnBDzQBhrxuS16I3GQiG5nfvUjEJFVc/zdKg=="
- },
- "Ookii.Dialogs.Wpf": {
- "type": "Direct",
- "requested": "[3.1.0, 3.1.0]",
- "resolved": "3.1.0",
- "contentHash": "EpUWoSLLO1aVkUmo2dPE4xO+zQZRxbp13agbbQzGBL1ACALgCD69cTwdLdPdg2LIsPcZ4uA3iID+YaazdZxyww=="
- },
- "Stylet": {
- "type": "Direct",
- "requested": "[1.3.5, 1.3.5]",
- "resolved": "1.3.5",
- "contentHash": "9vjjaTgf5sZAGHnxQWIslD32MG5gXj7ANgS+w965L5Eh//UC3qwZDrEf226Pf+v1P/ldAJDpUySnOyGlb3TSSw=="
- },
- "Stylet.Start": {
- "type": "Direct",
- "requested": "[1.3.5, 1.3.5]",
- "resolved": "1.3.5",
- "contentHash": "UwVT5eTTNWI8a3hiva361UMD/ebmY4pd7c4qtkM9soAGcBavNCrgcxO3IC3+L+1hEcuZqyOqdBLyrT1lOB/M+w=="
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.sln b/src/Artemis.sln
index 7517e96e6..890db3aa7 100644
--- a/src/Artemis.sln
+++ b/src/Artemis.sln
@@ -11,8 +11,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Artemis.Core", "Artemis.Cor
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Artemis.UI.Shared", "Artemis.UI.Shared\Artemis.UI.Shared.csproj", "{ADB357E6-151D-4D0D-87CB-68FD0BC29812}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.UI.Installer", "Artemis.UI.Installer\Artemis.UI.Installer.csproj", "{2AE00626-50EC-4788-9EA7-CDADB00502A3}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -35,9 +33,6 @@ Global
{ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Debug|x64.Build.0 = Debug|x64
{ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|x64.ActiveCfg = Release|x64
{ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|x64.Build.0 = Release|x64
- {2AE00626-50EC-4788-9EA7-CDADB00502A3}.Debug|x64.ActiveCfg = Debug|x64
- {2AE00626-50EC-4788-9EA7-CDADB00502A3}.Debug|x64.Build.0 = Debug|x64
- {2AE00626-50EC-4788-9EA7-CDADB00502A3}.Release|x64.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE