aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-12-04 15:23:43 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-12-04 15:23:43 +0200
commite8c9c0b649f31bf5170be409cdf6925aa9fc11b6 (patch)
tree14e9e27618a74ac7619e935c9e2dfbd2aaf1e649
parent4fb7e23ead019e9c2b573eb4ccc89444fb5a7a6f (diff)
downloadTango-e8c9c0b649f31bf5170be409cdf6925aa9fc11b6.tar.gz
Tango-e8c9c0b649f31bf5170be409cdf6925aa9fc11b6.zip
Working on PPC packages
-rw-r--r--Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs18
-rw-r--r--Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs18
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs29
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/DefaultPackageRunner.cs23
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs10
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj21
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs225
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPPCPackage.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/IPPCPackage.cs)4
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/IPackageRunner.cs)6
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PPCPackageAttribute.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageContext.cs13
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallation.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageInstallation.cs)4
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallationState.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageInstallationState.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageRunnerProgressEventArgs.cs)5
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageType.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageType.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackagesFile.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml18
-rw-r--r--Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/Properties/AssemblyInfo.cs (renamed from Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/Properties/AssemblyInfo.cs)0
-rw-r--r--Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs22
-rw-r--r--Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/Tango.PPC.Packages.SamplePostPackage.csproj (renamed from Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/Tango.PPC.Packages.SamplePostPackage.csproj)10
-rw-r--r--Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/Properties/AssemblyInfo.cs (renamed from Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/Properties/AssemblyInfo.cs)0
-rw-r--r--Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs22
-rw-r--r--Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/Tango.PPC.Packages.SamplePrePackage.csproj (renamed from Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/Tango.PPC.Packages.SamplePrePackage.csproj)10
-rw-r--r--Software/Visual_Studio/Tango.sln102
25 files changed, 423 insertions, 147 deletions
diff --git a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs b/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs
deleted file mode 100644
index cb4b57cfd..000000000
--- a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Tango.PPC.Common.Packages;
-
-namespace Tango.PPC.Packages.SamplePostPackage
-{
- [PPCPackage(PackageType.Post, "Sample Post Package")]
- public class SamplePostPackage : IPPCPackage
- {
- public Task Run()
- {
- throw new NotImplementedException();
- }
- }
-}
diff --git a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs b/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs
deleted file mode 100644
index fa61c7073..000000000
--- a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Tango.PPC.Common.Packages;
-
-namespace Tango.PPC.Packages.SamplePrePackage
-{
- [PPCPackage(PackageType.Pre, "Sample Pre Package")]
- public class SamplePrePackage : IPPCPackage
- {
- public Task Run()
- {
- throw new NotImplementedException();
- }
- }
-}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
index dacd1b69a..ae3e093be 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
@@ -19,6 +19,7 @@ using Tango.Integration.Upgrade;
using Tango.PMR.Synchronization;
using Tango.PPC.Common.Application;
using Tango.PPC.Common.Connection;
+using Tango.PPC.Common.UpdatePackages;
using Tango.PPC.Common.Web;
using Tango.Settings;
using Tango.SharedUI.Helpers;
@@ -31,6 +32,7 @@ namespace Tango.PPC.Common.MachineUpdate
{
private IPPCApplicationManager _app_manager;
private IMachineProvider _machineProvider;
+ private IPackageRunner _packageRunner;
private PPCWebClient _client;
#region Events
@@ -64,11 +66,22 @@ namespace Tango.PPC.Common.MachineUpdate
/// Initializes a new instance of the <see cref="MachineUpdateManager"/> class.
/// </summary>
/// <param name="applicationManager">The application manager.</param>
- public MachineUpdateManager(PPCWebClient ppcWebClient, IPPCApplicationManager applicationManager, IMachineProvider machineProvider)
+ public MachineUpdateManager(PPCWebClient ppcWebClient, IPPCApplicationManager applicationManager, IMachineProvider machineProvider, IPackageRunner packageRunner)
{
_client = ppcWebClient;
_machineProvider = machineProvider;
_app_manager = applicationManager;
+ _packageRunner = packageRunner;
+ _packageRunner.PackageStateChanged += _packageRunner_PackageStateChanged;
+ }
+
+ #endregion
+
+ #region Event Handlers
+
+ private void _packageRunner_PackageStateChanged(object sender, PackageStateChangedEventArgs e)
+ {
+ UpdateProgress("Preparing", e.PackageName);
}
#endregion
@@ -281,7 +294,7 @@ namespace Tango.PPC.Common.MachineUpdate
{
throw LogManager.Log(new InvalidOperationException("Could not perform an update while the machine is not connected."));
}
- if (op.IsPrinting)
+ if (op.Status != MachineStatuses.ReadyToDye)
{
throw LogManager.Log(new InvalidOperationException($"Could not perform an update while the machine is in {op.Status} status."));
}
@@ -343,6 +356,18 @@ namespace Tango.PPC.Common.MachineUpdate
//Copy new updater utility to app path.
File.Copy(Path.Combine(_newPackageTempFolder, "Tango.PPC.Updater.exe"), Path.Combine(PathHelper.GetStartupPath(), "Tango.PPC.Updater.exe"), true);
+ //Run pre-update packages.
+ try
+ {
+ UpdateProgress("Preparing", "Running update packages...");
+ LogManager.Log("Running pre-update packages...");
+ var packagesFolder = Path.Combine(_newPackageTempFolder, "Packages");
+ await _packageRunner.Run(PackageType.Pre, packagesFolder);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error running pre-update packages...");
+ }
//Synchronize database
UpdateProgress("Updating Database", "Initializing...");
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/DefaultPackageRunner.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/DefaultPackageRunner.cs
deleted file mode 100644
index a14a17af6..000000000
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/DefaultPackageRunner.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Tango.PPC.Common.Packages
-{
- public class DefaultPackageRunner : IPackageRunner
- {
- public event EventHandler<PackageRunnerProgressEventArgs> Progress;
-
- public Task<PackagesFile> GetPackagesFile()
- {
- throw new NotImplementedException();
- }
-
- public Task Run(PackageType type)
- {
- return null;
- }
- }
-}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs
index 526d4465a..7118912f2 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs
@@ -185,6 +185,7 @@ namespace Tango.PPC.Common.Publish
FirmwareVersion = GetVersionInfoFromTFP(Options.TfpPath).FileDescriptors.SingleOrDefault(x => x.Destination == VersionFileDestination.Mcu).Version,
}).Result;
+ CreateTupPackage(tempFile).Wait();
if (!String.IsNullOrWhiteSpace(Options.InstallerProject))
{
@@ -210,8 +211,6 @@ namespace Tango.PPC.Common.Publish
}
}
- CreateTupPackage(tempFile).Wait();
-
OnPublishProgress(0, 100, $"Starting version upload...");
using (StorageBlobUploader uploader = new StorageBlobUploader(response.BlobAddress, tempFile))
@@ -289,7 +288,10 @@ namespace Tango.PPC.Common.Publish
using (ZipFile zip = new ZipFile())
{
- zip.AddFile(Options.TfpPath, "/").FileName = "firmware_package.tfp";
+ if (Options.BuildConfig != "Debug")
+ {
+ zip.AddFile(Options.TfpPath, "/").FileName = "firmware_package.tfp";
+ }
PublishInfo versionInfo = new PublishInfo();
versionInfo.ApplicationVersion = GetLocalVersion();
@@ -362,6 +364,8 @@ namespace Tango.PPC.Common.Publish
var cuf = zip.AddFile(update_config_file, update_dir);
cuf.FileName = update_dir + "\\config.xml";
+ zip.AddDirectory(folder + "\\" + "Packages", "/Packages");
+
foreach (var file in Directory.GetFiles(folder, "*.*", SearchOption.TopDirectoryOnly))
{
zip.AddFile(file, "/");
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
index d14a2cb91..892269c03 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
@@ -156,15 +156,16 @@
<Compile Include="MachineSetup\MachineSetupManager.cs" />
<Compile Include="MachineSetup\MachineSetupProgress.cs" />
<Compile Include="MachineSetup\MachineSetupResult.cs" />
- <Compile Include="Packages\DefaultPackageRunner.cs" />
- <Compile Include="Packages\IPackageRunner.cs" />
- <Compile Include="Packages\IPPCPackage.cs" />
- <Compile Include="Packages\PackageInstallation.cs" />
- <Compile Include="Packages\PackageInstallationState.cs" />
- <Compile Include="Packages\PackageRunnerProgressEventArgs.cs" />
- <Compile Include="Packages\PackagesFile.cs" />
- <Compile Include="Packages\PackageType.cs" />
- <Compile Include="Packages\PPCPackageAttribute.cs" />
+ <Compile Include="UpdatePackages\DefaultPackageRunner.cs" />
+ <Compile Include="UpdatePackages\IPackageRunner.cs" />
+ <Compile Include="UpdatePackages\IPPCPackage.cs" />
+ <Compile Include="UpdatePackages\PackageContext.cs" />
+ <Compile Include="UpdatePackages\PackageInstallation.cs" />
+ <Compile Include="UpdatePackages\PackageInstallationState.cs" />
+ <Compile Include="UpdatePackages\PackageStateChangedEventArgs.cs" />
+ <Compile Include="UpdatePackages\PackagesFile.cs" />
+ <Compile Include="UpdatePackages\PackageType.cs" />
+ <Compile Include="UpdatePackages\PPCPackageAttribute.cs" />
<Compile Include="Publish\PPCPublisher.cs" />
<Compile Include="Publish\PublishInfo.cs" />
<Compile Include="Publish\PublishOptions.cs" />
@@ -404,7 +405,7 @@
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs
new file mode 100644
index 000000000..882896f04
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs
@@ -0,0 +1,225 @@
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+using Tango.Core.Helpers;
+
+namespace Tango.PPC.Common.UpdatePackages
+{
+ public class DefaultPackageRunner : ExtendedObject, IPackageRunner
+ {
+ private JsonSerializerSettings _jsonSettings;
+ private String _configFile;
+ private PackagesFile _packagesFile;
+
+ public event EventHandler<PackageStateChangedEventArgs> PackageStateChanged;
+
+ public DefaultPackageRunner()
+ {
+ _jsonSettings = new JsonSerializerSettings
+ {
+ Formatting = Formatting.Indented,
+ Error = (sender, args) =>
+ {
+ args.ErrorContext.Handled = true;
+ LogManager.Log(args.ErrorContext.Error.Message);
+ }
+ };
+
+ _jsonSettings.Converters.Add(new StringEnumConverter(false));
+
+ _configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Twine", "Tango", "Packages", "packages.json");
+ }
+
+ public Task<PackagesFile> GetPackagesFile()
+ {
+ return Task.Factory.StartNew<PackagesFile>(() =>
+ {
+ if (_packagesFile != null)
+ {
+ return _packagesFile;
+ }
+ else
+ {
+ Directory.CreateDirectory(Path.GetDirectoryName(_configFile));
+
+ _packagesFile = new PackagesFile();
+
+ try
+ {
+ if (File.Exists(_configFile))
+ {
+ LogManager.Log("Loading packages config from " + _configFile + "...");
+ _packagesFile = JsonConvert.DeserializeObject<PackagesFile>(File.ReadAllText(_configFile), _jsonSettings);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error loading packages file.");
+ }
+
+ return _packagesFile;
+ }
+ });
+ }
+
+ private void SavePackagesConfig()
+ {
+ Directory.CreateDirectory(Path.GetDirectoryName(_configFile));
+
+ String json = String.Empty;
+
+ if (_packagesFile != null)
+ {
+ json = JsonConvert.SerializeObject(_packagesFile, _jsonSettings);
+ }
+ else
+ {
+ json = JsonConvert.SerializeObject(new PackagesFile(), _jsonSettings);
+ }
+
+ File.WriteAllText(_configFile, json);
+ }
+
+ public Task Run(PackageType type, String packagesFolder)
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ PackageContext context = new PackageContext();
+
+ LogManager.Log($"Running {type}-update packages...");
+
+ //Get installed packages.
+ _packagesFile = GetPackagesFile().Result;
+
+ LogManager.Log($"Installed packages file:\n{_packagesFile}");
+
+ LogManager.Log($"Scanning for packages on '{packagesFolder}'...");
+
+ //Get all packages in folder.
+ foreach (var packageFile in Directory.GetFiles(packagesFolder, "*.dll"))
+ {
+ LogManager.Log($"Loading assembly '{Path.GetFileName(packageFile)}'...");
+
+ Assembly asm;
+
+ //Load assembly and investigate for types based on package type.
+ try
+ {
+ asm = Assembly.LoadFile(packageFile);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error loading assembly!");
+ continue;
+ }
+
+ try
+ {
+ foreach (var packageType in asm.GetTypes().Where(
+ x => typeof(IPPCPackage).IsAssignableFrom(x) &&
+ x.GetCustomAttribute<PPCPackageAttribute>() != null &&
+ x.GetCustomAttribute<PPCPackageAttribute>().Type == type))
+ {
+ LogManager.Log($"Checking package '{packageType.FullName}'...");
+
+ try
+ {
+ //Getting installed package from file.
+ var installedPackage = _packagesFile.PackageInstallations.SingleOrDefault(x => x.PackageName == packageType.FullName);
+
+ //Check if requires installation.
+ if (installedPackage == null || installedPackage.State != PackageInstallationState.Installed)
+ {
+ if (installedPackage == null)
+ {
+ LogManager.Log("Package was never installed.");
+
+ installedPackage = new PackageInstallation();
+ installedPackage.State = PackageInstallationState.NotInstalled;
+ installedPackage.PackageName = packageType.FullName;
+ installedPackage.Type = type;
+ _packagesFile.PackageInstallations.Add(installedPackage);
+ }
+ else
+ {
+ LogManager.Log($"Package installation state is '{installedPackage.State}' due to {installedPackage.FailedReason}");
+ }
+
+ LogManager.Log("Installing package...");
+
+ //Install package...
+ var att = packageType.GetCustomAttribute<PPCPackageAttribute>();
+
+ var packageInstance = Activator.CreateInstance(packageType) as IPPCPackage;
+
+ if (packageInstance != null)
+ {
+ try
+ {
+ OnPackageRuns(att.Name, installedPackage.State);
+ packageInstance.Run(context).GetAwaiter().GetResult();
+ installedPackage.State = PackageInstallationState.Installed;
+ installedPackage.FailedReason = null;
+ OnPackageRuns(att.Name, installedPackage.State);
+ LogManager.Log("Package installed successfully.");
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Package installation failed.");
+ installedPackage.State = PackageInstallationState.Failed;
+ installedPackage.FailedReason = ex.FlattenMessage();
+ OnPackageRuns(att.Name, installedPackage.State);
+ continue;
+ }
+ }
+ }
+ else
+ {
+ LogManager.Log("Package is already installed.");
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error in handling the package!");
+ continue;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error investigating assembly!");
+ continue;
+ }
+ }
+
+ //Save package file.
+ LogManager.Log("Running packages has completed. Saving packages config file.");
+
+ try
+ {
+ SavePackagesConfig();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error saving packages file!");
+ }
+ });
+ }
+
+ protected virtual void OnPackageRuns(String packageName, PackageInstallationState state)
+ {
+ PackageStateChanged?.Invoke(this, new PackageStateChangedEventArgs()
+ {
+ PackageName = packageName,
+ State = state,
+ });
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/IPPCPackage.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPPCPackage.cs
index e90dc166f..d9dc70135 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/IPPCPackage.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPPCPackage.cs
@@ -4,10 +4,10 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
public interface IPPCPackage
{
- Task Run();
+ Task Run(PackageContext context);
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/IPackageRunner.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs
index e9eaf8791..03c583dca 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/IPackageRunner.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs
@@ -4,12 +4,12 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
public interface IPackageRunner
{
- event EventHandler<PackageRunnerProgressEventArgs> Progress;
+ event EventHandler<PackageStateChangedEventArgs> PackageStateChanged;
Task<PackagesFile> GetPackagesFile();
- Task Run(PackageType type);
+ Task Run(PackageType type, String packagesFolder);
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PPCPackageAttribute.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs
index 41f706272..7ae4ea52d 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PPCPackageAttribute.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
[AttributeUsage(AttributeTargets.Class)]
public class PPCPackageAttribute : Attribute
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageContext.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageContext.cs
new file mode 100644
index 000000000..cf96ff026
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageContext.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.PPC.Common.UpdatePackages
+{
+ public class PackageContext
+ {
+
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageInstallation.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallation.cs
index 490db5234..bcffb1b6e 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageInstallation.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallation.cs
@@ -4,11 +4,11 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
public class PackageInstallation
{
- public String AssemblyName { get; set; }
+ public String PackageName { get; set; }
public PackageType Type { get; set; }
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageInstallationState.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallationState.cs
index 728b74836..1300352fb 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageInstallationState.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallationState.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
public enum PackageInstallationState
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageRunnerProgressEventArgs.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs
index 4cb785537..62eb00e5e 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageRunnerProgressEventArgs.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs
@@ -4,10 +4,11 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
- public class PackageRunnerProgressEventArgs : EventArgs
+ public class PackageStateChangedEventArgs : EventArgs
{
+ public PackageInstallationState State { get; set; }
public String PackageName { get; set; }
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageType.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageType.cs
index b54542ab2..48a2140b1 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackageType.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageType.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
public enum PackageType
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackagesFile.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs
index ac3d72678..2fbd30d9f 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Packages/PackagesFile.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.Packages
+namespace Tango.PPC.Common.UpdatePackages
{
public class PackagesFile
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs
index cb448bb0e..ed56f8a08 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs
@@ -22,6 +22,7 @@ using Tango.PPC.Common.Printing;
using Tango.PPC.Common.RemoteAssistance;
using Tango.PPC.Common.Storage;
using Tango.PPC.Common.Threading;
+using Tango.PPC.Common.UpdatePackages;
using Tango.PPC.Common.UWF;
using Tango.PPC.Common.Web;
using Tango.PPC.UI.Authentication;
@@ -87,6 +88,7 @@ namespace Tango.PPC.UI
TangoIOC.Default.Register<IDiagnosticsFrameProvider, DefaultDiagnosticsFrameProvider>();
TangoIOC.Default.Register<IPPCExternalBridgeService, PPCExternalBridgeService>();
TangoIOC.Default.Register<IRemoteAssistanceProvider, DefaultRemoteAssistanceProvider>();
+ TangoIOC.Default.Register<IPackageRunner, DefaultPackageRunner>();
TangoIOC.Default.Register<IMachineSetupManager, MachineSetupManager>();
TangoIOC.Default.Register<IMachineUpdateManager, MachineUpdateManager>();
TangoIOC.Default.Register<IPrintingManager, DefaultPrintingManager>();
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml
index 443ca4f7a..d139ad5ed 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml
@@ -78,30 +78,30 @@
<Image Margin="10 0 0 0" Width="18" Height="18" VerticalAlignment="Center" RenderOptions.BitmapScalingMode="Fant">
<Image.Style>
<Style TargetType="Image">
- <Setter Property="Source" Value="/Images/GlobalStatus/standby.png"></Setter>
+ <Setter Property="Source" Value="/Images/GlobalStatus/machine-off.png"></Setter>
<Style.Triggers>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.Disconnected}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.Disconnected}">
<Setter Property="Source" Value="/Images/GlobalStatus/machine-off.png"></Setter>
</DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.Standby}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.Standby}">
<Setter Property="Source" Value="/Images/GlobalStatus/standby.png"></Setter>
</DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.ReadyToDye}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.ReadyToDye}">
<Setter Property="Source" Value="/Images/GlobalStatus/ready-to-dye.png"></Setter>
</DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.GettingReady}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.GettingReady}">
<Setter Property="Source" Value="/Images/GlobalStatus/getting-ready.png"></Setter>
</DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.Printing}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.Printing}">
<Setter Property="Source" Value="/Images/GlobalStatus/dyeing.png"></Setter>
</DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.ShuttingDown}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.ShuttingDown}">
<Setter Property="Source" Value="/Images/GlobalStatus/shutting-down.png"></Setter>
</DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.Error}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.Error}">
<Setter Property="Source" Value="/Images/GlobalStatus/error.png"></Setter>
</DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="{x:Static operations:MachineStatuses.Service}">
+ <DataTrigger Binding="{Binding MachineProvider.MachineOperator.Status}" Value="{x:Static operations:MachineStatuses.Service}">
<Setter Property="Source" Value="/Images/GlobalStatus/service.png"></Setter>
</DataTrigger>
</Style.Triggers>
diff --git a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/Properties/AssemblyInfo.cs
index ce0d97e8c..ce0d97e8c 100644
--- a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/Properties/AssemblyInfo.cs
diff --git a/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs
new file mode 100644
index 000000000..0d5e117da
--- /dev/null
+++ b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/SamplePostPackage.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+using Tango.PPC.Common.UpdatePackages;
+
+namespace Tango.PPC.Packages.SamplePostPackage
+{
+ [PPCPackage(PackageType.Post, "Sample Post Package")]
+ public class SamplePostPackage : ExtendedObject, IPPCPackage
+ {
+ public Task Run(PackageContext context)
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ LogManager.Log("Hi from 'Sample Post Package'.. !!! ____________");
+ });
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/Tango.PPC.Packages.SamplePostPackage.csproj b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/Tango.PPC.Packages.SamplePostPackage.csproj
index 493d4fbec..f06fdd5cf 100644
--- a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePostPackage/Tango.PPC.Packages.SamplePostPackage.csproj
+++ b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePostPackage/Tango.PPC.Packages.SamplePostPackage.csproj
@@ -45,6 +45,16 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\..\..\Tango.Core\Tango.Core.csproj">
+ <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project>
+ <Name>Tango.Core</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\Tango.Logging\Tango.Logging.csproj">
+ <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project>
+ <Name>Tango.Logging</Name>
+ <Private>False</Private>
+ </ProjectReference>
<ProjectReference Include="..\..\Tango.PPC.Common\Tango.PPC.Common.csproj">
<Project>{0be74eee-22cb-4dba-b896-793b9e1a3ac0}</Project>
<Name>Tango.PPC.Common</Name>
diff --git a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/Properties/AssemblyInfo.cs
index 24117be29..24117be29 100644
--- a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/Properties/AssemblyInfo.cs
diff --git a/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs
new file mode 100644
index 000000000..1e51e9c94
--- /dev/null
+++ b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/SamplePrePackage.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+using Tango.PPC.Common.UpdatePackages;
+
+namespace Tango.PPC.Packages.SamplePrePackage
+{
+ [PPCPackage(PackageType.Pre, "Sample Pre Package")]
+ public class SamplePrePackage : ExtendedObject, IPPCPackage
+ {
+ public Task Run(PackageContext context)
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ LogManager.Log("Hi from 'Sample Pre Package'.. !!! ____________");
+ });
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/Tango.PPC.Packages.SamplePrePackage.csproj b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/Tango.PPC.Packages.SamplePrePackage.csproj
index 8576a7bed..b4397d253 100644
--- a/Software/Visual_Studio/PPC/Packages/Tango.PPC.Packages.SamplePrePackage/Tango.PPC.Packages.SamplePrePackage.csproj
+++ b/Software/Visual_Studio/PPC/UpdatePackages/Tango.PPC.Packages.SamplePrePackage/Tango.PPC.Packages.SamplePrePackage.csproj
@@ -45,6 +45,16 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\..\..\Tango.Core\Tango.Core.csproj">
+ <Project>{A34EE0F0-649D-41C8-8489-B6F1CC6924EE}</Project>
+ <Name>Tango.Core</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\Tango.Logging\Tango.Logging.csproj">
+ <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project>
+ <Name>Tango.Logging</Name>
+ <Private>False</Private>
+ </ProjectReference>
<ProjectReference Include="..\..\Tango.PPC.Common\Tango.PPC.Common.csproj">
<Project>{0be74eee-22cb-4dba-b896-793b9e1a3ac0}</Project>
<Name>Tango.PPC.Common</Name>
diff --git a/Software/Visual_Studio/Tango.sln b/Software/Visual_Studio/Tango.sln
index 939e217c2..5d601ae52 100644
--- a/Software/Visual_Studio/Tango.sln
+++ b/Software/Visual_Studio/Tango.sln
@@ -317,13 +317,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.Maintenance", "PP
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.BackupRestore", "PPC\Modules\Tango.PPC.BackupRestore\Tango.PPC.BackupRestore.csproj", "{BC2753F8-C0F7-48F5-A85C-149EC7A2F8C7}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Packages", "Packages", "{E728CBD9-1AF4-4814-A218-E4BD26E7EDEA}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UpdatePackages", "UpdatePackages", "{E728CBD9-1AF4-4814-A218-E4BD26E7EDEA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.Packages.SamplePrePackage", "PPC\Packages\Tango.PPC.Packages.SamplePrePackage\Tango.PPC.Packages.SamplePrePackage.csproj", "{2CD12594-3522-4658-A65F-190EE58B6AFA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.DispenserAnalyzer.UI", "Utilities\Tango.DispenserAnalyzer.UI\Tango.DispenserAnalyzer.UI.csproj", "{D74893F2-9E39-4C72-BDD4-937404E1FC37}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.Packages.SamplePostPackage", "PPC\Packages\Tango.PPC.Packages.SamplePostPackage\Tango.PPC.Packages.SamplePostPackage.csproj", "{DA391B02-AE28-4EA1-A80F-D0F4C8029FFA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.Packages.SamplePrePackage", "PPC\UpdatePackages\Tango.PPC.Packages.SamplePrePackage\Tango.PPC.Packages.SamplePrePackage.csproj", "{2CD12594-3522-4658-A65F-190EE58B6AFA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.DispenserAnalyzer.UI", "Utilities\Tango.DispenserAnalyzer.UI\Tango.DispenserAnalyzer.UI.csproj", "{D74893F2-9E39-4C72-BDD4-937404E1FC37}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.Packages.SamplePostPackage", "PPC\UpdatePackages\Tango.PPC.Packages.SamplePostPackage\Tango.PPC.Packages.SamplePostPackage.csproj", "{DA391B02-AE28-4EA1-A80F-D0F4C8029FFA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -5656,6 +5656,46 @@ Global
{BC2753F8-C0F7-48F5-A85C-149EC7A2F8C7}.Release|x64.Build.0 = Release|Any CPU
{BC2753F8-C0F7-48F5-A85C-149EC7A2F8C7}.Release|x86.ActiveCfg = Release|Any CPU
{BC2753F8-C0F7-48F5-A85C-149EC7A2F8C7}.Release|x86.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|Any CPU.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|Any CPU.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM64.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM64.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x64.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x64.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x86.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x86.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x64.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x86.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|Any CPU.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|Any CPU.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM64.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM64.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x64.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x64.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x86.ActiveCfg = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x86.Build.0 = Debug|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM64.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x64.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x64.Build.0 = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x86.ActiveCfg = Release|Any CPU
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x86.Build.0 = Release|Any CPU
{2CD12594-3522-4658-A65F-190EE58B6AFA}.AppVeyor|Any CPU.ActiveCfg = Release|Any CPU
{2CD12594-3522-4658-A65F-190EE58B6AFA}.AppVeyor|Any CPU.Build.0 = Release|Any CPU
{2CD12594-3522-4658-A65F-190EE58B6AFA}.AppVeyor|ARM.ActiveCfg = Release|Any CPU
@@ -5736,46 +5776,6 @@ Global
{DA391B02-AE28-4EA1-A80F-D0F4C8029FFA}.Release|x64.Build.0 = Release|Any CPU
{DA391B02-AE28-4EA1-A80F-D0F4C8029FFA}.Release|x86.ActiveCfg = Release|Any CPU
{DA391B02-AE28-4EA1-A80F-D0F4C8029FFA}.Release|x86.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|Any CPU.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|Any CPU.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM64.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|ARM64.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x64.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x64.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x86.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.AppVeyor|x86.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|ARM64.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x64.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x86.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Debug|x86.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|Any CPU.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|Any CPU.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM64.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|ARM64.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x64.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x64.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x86.ActiveCfg = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.DefaultBuild|x86.Build.0 = Debug|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|Any CPU.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM64.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|ARM64.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x64.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x64.Build.0 = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x86.ActiveCfg = Release|Any CPU
- {D74893F2-9E39-4C72-BDD4-937404E1FC37}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -5880,17 +5880,17 @@ Global
{011470AC-6BD6-4366-B5F2-C82C065D4A84} = {0048447D-1D94-4E60-9DAD-7349C777CB4E}
{BC2753F8-C0F7-48F5-A85C-149EC7A2F8C7} = {0048447D-1D94-4E60-9DAD-7349C777CB4E}
{E728CBD9-1AF4-4814-A218-E4BD26E7EDEA} = {C81ED1A3-D18C-4D80-A8F5-061994A14A60}
+ {D74893F2-9E39-4C72-BDD4-937404E1FC37} = {5F6BBAA8-EAD0-4B18-97E5-55B4F56DD760}
{2CD12594-3522-4658-A65F-190EE58B6AFA} = {E728CBD9-1AF4-4814-A218-E4BD26E7EDEA}
{DA391B02-AE28-4EA1-A80F-D0F4C8029FFA} = {E728CBD9-1AF4-4814-A218-E4BD26E7EDEA}
- {D74893F2-9E39-4C72-BDD4-937404E1FC37} = {5F6BBAA8-EAD0-4B18-97E5-55B4F56DD760}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- BuildVersion_UseGlobalSettings = False
- BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs
- BuildVersion_StartDate = 2000/1/1
- BuildVersion_UpdateFileVersion = False
- BuildVersion_UpdateAssemblyVersion = True
- BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear
SolutionGuid = {7986F7F4-A86A-4994-B1B6-0988D7F057B6}
+ BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear
+ BuildVersion_UpdateAssemblyVersion = True
+ BuildVersion_UpdateFileVersion = False
+ BuildVersion_StartDate = 2000/1/1
+ BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs
+ BuildVersion_UseGlobalSettings = False
EndGlobalSection
EndGlobal