From 2212ee4a8dc0fdb5e3d91fe87253da2059b15bbe Mon Sep 17 00:00:00 2001 From: Jbob Date: Sun, 19 Jun 2016 14:37:08 -0500 Subject: [PATCH] Increment to 0.11.0 --- .../Debugger.csproj.FileListAbsolute.txt | 6 + .../Debugger.csproj.FileListAbsolute.txt | 2 + FOGService.sln.DotSettings | 2 + MSI/Files.wxs | 3 + MSI/Product.wxs | 4 +- Modules/DisplayManager/DisplayManager.cs | 10 +- Modules/Modules.csproj | 3 - .../PrinterManager/DefaultPrinterManager.cs | 5 +- Modules/PrinterManager/PrinterManager.cs | 10 +- PrinterManagerHelper/Form1.Designer.cs | 114 ++++++------------ PrinterManagerHelper/Form1.cs | 2 +- Service/FOGSystemService.cs | 6 +- .../Debug/Service.csproj.FileListAbsolute.txt | 6 + .../Debug/Tray.csproj.FileListAbsolute.txt | 9 ++ .../Release/Tray.csproj.FileListAbsolute.txt | 2 + UniversalInstaller/Helper.cs | 2 +- UniversalInstaller/UniversalInstaller.cs | 9 ++ UpdateHelper/AbstractUpdate.cs | 2 +- .../UpdateHelper.csproj.FileListAbsolute.txt | 6 + .../UpdateHelper.csproj.FileListAbsolute.txt | 2 + .../UpdateWaiter.csproj.FileListAbsolute.txt | 6 + UserService/FOGUserService.cs | 16 ++- UserService/main.cs | 1 - .../UserService.csproj.FileListAbsolute.txt | 6 + build.ps1 | 6 +- libs/Zazzles.dll | Bin 90112 -> 90112 bytes 26 files changed, 133 insertions(+), 107 deletions(-) create mode 100644 FOGService.sln.DotSettings diff --git a/Debugger/obj/Debug/Debugger.csproj.FileListAbsolute.txt b/Debugger/obj/Debug/Debugger.csproj.FileListAbsolute.txt index d615bb34..58124999 100644 --- a/Debugger/obj/Debug/Debugger.csproj.FileListAbsolute.txt +++ b/Debugger/obj/Debug/Debugger.csproj.FileListAbsolute.txt @@ -18,3 +18,9 @@ D:\fog\client\Debugger\bin\x86\Debug\Modules.pdb D:\fog\client\Debugger\bin\x86\Debug\Newtonsoft.Json.xml D:\fog\client\Debugger\bin\x86\Debug\PipeServer.pdb D:\fog\client\Debugger\bin\x86\Debug\PipeClient.pdb +C:\Users\Administrator\dev\fog-client\bin\Debugger.exe.config +C:\Users\Administrator\dev\fog-client\bin\Debugger.exe +C:\Users\Administrator\dev\fog-client\bin\Debugger.pdb +C:\Users\Administrator\dev\fog-client\Debugger\obj\Debug\Debugger.csprojResolveAssemblyReference.cache +C:\Users\Administrator\dev\fog-client\Debugger\obj\Debug\Debugger.exe +C:\Users\Administrator\dev\fog-client\Debugger\obj\Debug\Debugger.pdb diff --git a/Debugger/obj/Release/Debugger.csproj.FileListAbsolute.txt b/Debugger/obj/Release/Debugger.csproj.FileListAbsolute.txt index 58217320..8c9f5c31 100644 --- a/Debugger/obj/Release/Debugger.csproj.FileListAbsolute.txt +++ b/Debugger/obj/Release/Debugger.csproj.FileListAbsolute.txt @@ -16,3 +16,5 @@ D:\fog\fog-client\bin\Debugger.exe.config D:\fog\fog-client\bin\Debugger.exe D:\fog\fog-client\Debugger\obj\Release\Debugger.csprojResolveAssemblyReference.cache D:\fog\fog-client\Debugger\obj\Release\Debugger.exe +C:\Users\Administrator\dev\fog-client\bin\Debugger.exe.config +C:\Users\Administrator\dev\fog-client\Debugger\obj\Release\Debugger.exe diff --git a/FOGService.sln.DotSettings b/FOGService.sln.DotSettings new file mode 100644 index 00000000..e4f6afc1 --- /dev/null +++ b/FOGService.sln.DotSettings @@ -0,0 +1,2 @@ + + FOG \ No newline at end of file diff --git a/MSI/Files.wxs b/MSI/Files.wxs index a8937d02..3ccb7711 100644 --- a/MSI/Files.wxs +++ b/MSI/Files.wxs @@ -54,6 +54,9 @@ + + + diff --git a/MSI/Product.wxs b/MSI/Product.wxs index d484a920..affe2fa7 100644 --- a/MSI/Product.wxs +++ b/MSI/Product.wxs @@ -20,14 +20,14 @@ --> - - diff --git a/Modules/DisplayManager/DisplayManager.cs b/Modules/DisplayManager/DisplayManager.cs index 8a840f0c..76b74fd5 100644 --- a/Modules/DisplayManager/DisplayManager.cs +++ b/Modules/DisplayManager/DisplayManager.cs @@ -49,11 +49,11 @@ protected override void DoWork(Response data, DisplayMessage msg) _display.LoadDisplaySettings(); if (_display.PopulatedSettings) { - //Get task info - var response = Communication.GetResponse("/service/displaymanager.php", true); - - if (response.Error) return; - + if (msg.X <= 0 || msg.Y <= 0) + { + Log.Error(Name, "Invalid settings provided"); + return; + } ChangeResolution(GetDisplays().Count > 0 ? GetDisplays()[0] : "", msg.X, msg.Y, msg.R); } else diff --git a/Modules/Modules.csproj b/Modules/Modules.csproj index daed07ab..b2ea90ec 100644 --- a/Modules/Modules.csproj +++ b/Modules/Modules.csproj @@ -160,9 +160,6 @@ - - Designer - diff --git a/Modules/PrinterManager/DefaultPrinterManager.cs b/Modules/PrinterManager/DefaultPrinterManager.cs index 74f92abc..a7034cf4 100644 --- a/Modules/PrinterManager/DefaultPrinterManager.cs +++ b/Modules/PrinterManager/DefaultPrinterManager.cs @@ -34,7 +34,7 @@ public class DefaultPrinterManager : AbstractModule public DefaultPrinterManager() { - Name = "PrinterManager"; + Name = "DefaultPrinterManager"; switch (Settings.OS) { @@ -49,8 +49,7 @@ public DefaultPrinterManager() protected override void DoWork(Response data, DefaultPrinterMessage msg) { - //Get printers - if (data.Error || string.IsNullOrWhiteSpace(msg.Name)) return; + if (string.IsNullOrEmpty(msg.Name)) return; Log.Entry(Name, "Checking defaults"); var printer = new Printer {Name = msg.Name}; diff --git a/Modules/PrinterManager/PrinterManager.cs b/Modules/PrinterManager/PrinterManager.cs index 0431def9..4313edcd 100644 --- a/Modules/PrinterManager/PrinterManager.cs +++ b/Modules/PrinterManager/PrinterManager.cs @@ -57,17 +57,15 @@ public PrinterManager() protected override void DoWork(Response data, PrinterMessage msg) { - Log.Entry(Name, "Getting installed printers"); var installedPrinters = _instance.GetPrinters(); - var printerAdded = false; //Get printers - if (msg.Mode.Equals("0")) return; + if (msg.Mode == "0") return; - if (data.Error && data.ReturnCode.Equals("np")) + if (data.Error && data.ReturnCode.Equals("np", StringComparison.OrdinalIgnoreCase)) { RemoveExtraPrinters(new List(), msg, installedPrinters); return; @@ -81,8 +79,6 @@ protected override void DoWork(Response data, PrinterMessage msg) RemoveExtraPrinters(msg.Printers, msg, installedPrinters); - - Log.Entry(Name, "Adding printers"); foreach (var printer in msg.Printers) { @@ -108,7 +104,7 @@ private void RemoveExtraPrinters(List newPrinters, PrinterMessage msg, { var managedPrinters = newPrinters.Where(printer => printer != null).Select(printer => printer.Name).ToList(); - if (!msg.Mode.Equals("ar")) + if (!msg.Mode.Equals("ar", StringComparison.OrdinalIgnoreCase)) { foreach (var name in msg.AllPrinters.Where(name => !managedPrinters.Contains(name) && existingPrinters.Contains(name))) CleanPrinter(name, true); diff --git a/PrinterManagerHelper/Form1.Designer.cs b/PrinterManagerHelper/Form1.Designer.cs index ff0f3049..390ab141 100644 --- a/PrinterManagerHelper/Form1.Designer.cs +++ b/PrinterManagerHelper/Form1.Designer.cs @@ -41,12 +41,9 @@ private void InitializeComponent() this.aliasLB = new System.Windows.Forms.Label(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.localPage = new System.Windows.Forms.TabPage(); - this.button1 = new System.Windows.Forms.Button(); - this.defaultButton = new System.Windows.Forms.Button(); - this.removeButton = new System.Windows.Forms.Button(); this.addPrinter = new System.Windows.Forms.TabPage(); - this.typeCombo = new System.Windows.Forms.ComboBox(); - this.typeLabel = new System.Windows.Forms.Label(); + this.aliasBox = new System.Windows.Forms.TextBox(); + this.addButton = new System.Windows.Forms.Button(); this.aliasLabel = new System.Windows.Forms.Label(); this.driverBox = new System.Windows.Forms.TextBox(); this.ipLabel = new System.Windows.Forms.Label(); @@ -56,8 +53,8 @@ private void InitializeComponent() this.modelLabel = new System.Windows.Forms.Label(); this.ipBox = new System.Windows.Forms.TextBox(); this.driverLabel = new System.Windows.Forms.Label(); - this.addButton = new System.Windows.Forms.Button(); - this.aliasBox = new System.Windows.Forms.TextBox(); + this.typeLabel = new System.Windows.Forms.Label(); + this.typeCombo = new System.Windows.Forms.ComboBox(); this.tabControl1.SuspendLayout(); this.localPage.SuspendLayout(); this.addPrinter.SuspendLayout(); @@ -174,9 +171,6 @@ private void InitializeComponent() // // localPage // - this.localPage.Controls.Add(this.button1); - this.localPage.Controls.Add(this.defaultButton); - this.localPage.Controls.Add(this.removeButton); this.localPage.Controls.Add(this.aliasLB); this.localPage.Controls.Add(this.printerComboBox); this.localPage.Controls.Add(this.driverText); @@ -195,33 +189,6 @@ private void InitializeComponent() this.localPage.Text = "Local Printers"; this.localPage.UseVisualStyleBackColor = true; // - // button1 - // - this.button1.Location = new System.Drawing.Point(13, 195); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(890, 23); - this.button1.TabIndex = 12; - this.button1.Text = "Export Printer(s)"; - this.button1.UseVisualStyleBackColor = true; - // - // defaultButton - // - this.defaultButton.Location = new System.Drawing.Point(13, 166); - this.defaultButton.Name = "defaultButton"; - this.defaultButton.Size = new System.Drawing.Size(433, 23); - this.defaultButton.TabIndex = 11; - this.defaultButton.Text = "Set Default"; - this.defaultButton.UseVisualStyleBackColor = true; - // - // removeButton - // - this.removeButton.Location = new System.Drawing.Point(470, 166); - this.removeButton.Name = "removeButton"; - this.removeButton.Size = new System.Drawing.Size(433, 23); - this.removeButton.TabIndex = 10; - this.removeButton.Text = "Remove Printer"; - this.removeButton.UseVisualStyleBackColor = true; - // // addPrinter // this.addPrinter.Controls.Add(this.aliasBox); @@ -245,28 +212,25 @@ private void InitializeComponent() this.addPrinter.Text = "Add New Printer"; this.addPrinter.UseVisualStyleBackColor = true; // - // typeCombo + // aliasBox // - this.typeCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.typeCombo.FormattingEnabled = true; - this.typeCombo.Items.AddRange(new object[] { - "TCP/IP", - "Network", - "iPrint"}); - this.typeCombo.Location = new System.Drawing.Point(65, 6); - this.typeCombo.Name = "typeCombo"; - this.typeCombo.Size = new System.Drawing.Size(836, 21); - this.typeCombo.TabIndex = 13; - this.typeCombo.SelectedIndexChanged += new System.EventHandler(this.typeCombo_SelectedIndexChanged); + this.aliasBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.aliasBox.Location = new System.Drawing.Point(65, 46); + this.aliasBox.Name = "aliasBox"; + this.aliasBox.ReadOnly = true; + this.aliasBox.Size = new System.Drawing.Size(836, 20); + this.aliasBox.TabIndex = 14; // - // typeLabel + // addButton // - this.typeLabel.AutoSize = true; - this.typeLabel.Location = new System.Drawing.Point(8, 9); - this.typeLabel.Name = "typeLabel"; - this.typeLabel.Size = new System.Drawing.Size(31, 13); - this.typeLabel.TabIndex = 1; - this.typeLabel.Text = "Type"; + this.addButton.Location = new System.Drawing.Point(11, 203); + this.addButton.Name = "addButton"; + this.addButton.Size = new System.Drawing.Size(890, 23); + this.addButton.TabIndex = 20; + this.addButton.Text = "Add Printer"; + this.addButton.UseVisualStyleBackColor = true; + this.addButton.Click += new System.EventHandler(this.addButton_Click); // // aliasLabel // @@ -355,25 +319,28 @@ private void InitializeComponent() this.driverLabel.TabIndex = 14; this.driverLabel.Text = "Driver"; // - // addButton + // typeLabel // - this.addButton.Location = new System.Drawing.Point(11, 203); - this.addButton.Name = "addButton"; - this.addButton.Size = new System.Drawing.Size(890, 23); - this.addButton.TabIndex = 20; - this.addButton.Text = "Add Printer"; - this.addButton.UseVisualStyleBackColor = true; - this.addButton.Click += new System.EventHandler(this.addButton_Click); + this.typeLabel.AutoSize = true; + this.typeLabel.Location = new System.Drawing.Point(8, 9); + this.typeLabel.Name = "typeLabel"; + this.typeLabel.Size = new System.Drawing.Size(31, 13); + this.typeLabel.TabIndex = 1; + this.typeLabel.Text = "Type"; // - // aliasBox + // typeCombo // - this.aliasBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.aliasBox.Location = new System.Drawing.Point(65, 46); - this.aliasBox.Name = "aliasBox"; - this.aliasBox.ReadOnly = true; - this.aliasBox.Size = new System.Drawing.Size(836, 20); - this.aliasBox.TabIndex = 14; + this.typeCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.typeCombo.FormattingEnabled = true; + this.typeCombo.Items.AddRange(new object[] { + "TCP/IP", + "Network", + "iPrint"}); + this.typeCombo.Location = new System.Drawing.Point(65, 6); + this.typeCombo.Name = "typeCombo"; + this.typeCombo.Size = new System.Drawing.Size(836, 21); + this.typeCombo.TabIndex = 13; + this.typeCombo.SelectedIndexChanged += new System.EventHandler(this.typeCombo_SelectedIndexChanged); // // Form1 // @@ -408,9 +375,6 @@ private void InitializeComponent() private System.Windows.Forms.Label aliasLB; private System.Windows.Forms.TabControl tabControl1; private System.Windows.Forms.TabPage localPage; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Button defaultButton; - private System.Windows.Forms.Button removeButton; private System.Windows.Forms.TabPage addPrinter; private System.Windows.Forms.Label typeLabel; private System.Windows.Forms.ComboBox typeCombo; diff --git a/PrinterManagerHelper/Form1.cs b/PrinterManagerHelper/Form1.cs index 1652c3ae..7ee29783 100644 --- a/PrinterManagerHelper/Form1.cs +++ b/PrinterManagerHelper/Form1.cs @@ -1,6 +1,6 @@ /* * FOG Service : A computer management client for the FOG Project - * Copyright (C) 2014-2015 FOG Project + * Copyright (C) 2014-2016 FOG Project * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/Service/FOGSystemService.cs b/Service/FOGSystemService.cs index ff4e4a96..330b2ac4 100644 --- a/Service/FOGSystemService.cs +++ b/Service/FOGSystemService.cs @@ -67,9 +67,9 @@ protected override Response GetLoopData() Settings.Set("DefaultPrinter", (pDefault == null) ? "" : pDefault.GetField("default")); var display = response.GetSubResponse("displaymanager"); - Settings.Set("DisplayX", (display == null) ? "0" : display.GetField("x")); - Settings.Set("DisplayY", (display == null) ? "0" : display.GetField("y")); - Settings.Set("DisplayR", (display == null) ? "0" : display.GetField("r")); + Settings.Set("DisplayX", (display == null || display.Error) ? "" : display.GetField("x")); + Settings.Set("DisplayY", (display == null || display.Error) ? "" : display.GetField("y")); + Settings.Set("DisplayR", (display == null || display.Error) ? "" : display.GetField("r")); } catch (Exception ex) { diff --git a/Service/obj/Debug/Service.csproj.FileListAbsolute.txt b/Service/obj/Debug/Service.csproj.FileListAbsolute.txt index a57b4b1b..5098d598 100644 --- a/Service/obj/Debug/Service.csproj.FileListAbsolute.txt +++ b/Service/obj/Debug/Service.csproj.FileListAbsolute.txt @@ -27,3 +27,9 @@ D:\fog\client\Service\bin\x86\Debug\Modules.pdb D:\fog\client\Service\bin\x86\Debug\PipeServer.pdb D:\fog\client\Service\bin\x86\Debug\FOGUpdateHelper.pdb D:\fog\client\Service\bin\x86\Debug\FOGUpdateWaiter.pdb +C:\Users\Administrator\dev\fog-client\bin\FOGService.exe.config +C:\Users\Administrator\dev\fog-client\bin\FOGService.exe +C:\Users\Administrator\dev\fog-client\bin\FOGService.pdb +C:\Users\Administrator\dev\fog-client\Service\obj\Debug\Service.csprojResolveAssemblyReference.cache +C:\Users\Administrator\dev\fog-client\Service\obj\Debug\FOGService.exe +C:\Users\Administrator\dev\fog-client\Service\obj\Debug\FOGService.pdb diff --git a/Tray/obj/Debug/Tray.csproj.FileListAbsolute.txt b/Tray/obj/Debug/Tray.csproj.FileListAbsolute.txt index 234875ed..2a25900e 100644 --- a/Tray/obj/Debug/Tray.csproj.FileListAbsolute.txt +++ b/Tray/obj/Debug/Tray.csproj.FileListAbsolute.txt @@ -12,3 +12,12 @@ C:\Users\jbob\Desktop\fog-client\Tray\obj\Debug\FOG.NotificationIcon.resources C:\Users\jbob\Desktop\fog-client\Tray\obj\Debug\Tray.csproj.GenerateResource.Cache C:\Users\jbob\Desktop\fog-client\Tray\obj\Debug\FOGTray.exe C:\Users\jbob\Desktop\fog-client\Tray\obj\Debug\FOGTray.pdb +C:\Users\Administrator\dev\fog-client\bin\logo.ico +C:\Users\Administrator\dev\fog-client\bin\FOGTray.exe.config +C:\Users\Administrator\dev\fog-client\bin\FOGTray.exe +C:\Users\Administrator\dev\fog-client\bin\FOGTray.pdb +C:\Users\Administrator\dev\fog-client\Tray\obj\Debug\Tray.csprojResolveAssemblyReference.cache +C:\Users\Administrator\dev\fog-client\Tray\obj\Debug\FOG.NotificationIcon.resources +C:\Users\Administrator\dev\fog-client\Tray\obj\Debug\Tray.csproj.GenerateResource.Cache +C:\Users\Administrator\dev\fog-client\Tray\obj\Debug\FOGTray.exe +C:\Users\Administrator\dev\fog-client\Tray\obj\Debug\FOGTray.pdb diff --git a/Tray/obj/Release/Tray.csproj.FileListAbsolute.txt b/Tray/obj/Release/Tray.csproj.FileListAbsolute.txt index 9b1491f1..31a3f6f8 100644 --- a/Tray/obj/Release/Tray.csproj.FileListAbsolute.txt +++ b/Tray/obj/Release/Tray.csproj.FileListAbsolute.txt @@ -20,3 +20,5 @@ D:\fog\fog-client\bin\FOGTray.exe.config D:\fog\fog-client\bin\FOGTray.exe D:\fog\fog-client\Tray\obj\Release\Tray.csprojResolveAssemblyReference.cache D:\fog\fog-client\Tray\obj\Release\FOGTray.exe +C:\Users\Administrator\dev\fog-client\bin\FOGTray.exe.config +C:\Users\Administrator\dev\fog-client\Tray\obj\Release\FOGTray.exe diff --git a/UniversalInstaller/Helper.cs b/UniversalInstaller/Helper.cs index f63def79..99619919 100644 --- a/UniversalInstaller/Helper.cs +++ b/UniversalInstaller/Helper.cs @@ -28,7 +28,7 @@ namespace FOG public static class Helper { private const string LogName = "Installer"; - public const string ClientVersion = "0.10.6"; + public const string ClientVersion = "0.11.0"; public static IInstall Instance { get; } diff --git a/UniversalInstaller/UniversalInstaller.cs b/UniversalInstaller/UniversalInstaller.cs index c94c1c91..1ad39ed8 100644 --- a/UniversalInstaller/UniversalInstaller.cs +++ b/UniversalInstaller/UniversalInstaller.cs @@ -47,6 +47,7 @@ static void Main(string[] args) var https = false; var server = ""; var webRoot = ""; + var logFile = ""; var p = new OptionSet() { { "server=|SERVER=", "the FOG server address, defaults to fogserver", @@ -65,10 +66,18 @@ static void Main(string[] args) v => uninstall = v != null }, { "upgrade", "upgrade an existing installation", v => upgrade = v != null }, + { "l|log", "the log file to use", + v => logFile = v }, }; p.Parse(args); + if (!string.IsNullOrWhiteSpace(logFile)) + { + LogPath = logFile; + Log.FilePath = LogPath; + } + if (args.Length == 1) { if (args[0].Equals("upgrade")) diff --git a/UpdateHelper/AbstractUpdate.cs b/UpdateHelper/AbstractUpdate.cs index 188374b0..7ebd1db1 100644 --- a/UpdateHelper/AbstractUpdate.cs +++ b/UpdateHelper/AbstractUpdate.cs @@ -27,7 +27,7 @@ abstract class AbstractUpdate : IUpdate { public void ApplyUpdate() { - ProcessHandler.RunClientEXE("SmartInstaller.exe", "--upgrade"); + ProcessHandler.RunClientEXE("SmartInstaller.exe", $"/upgrade /log=\"{Log.FilePath}\""); } public abstract void StartService(); diff --git a/UpdateHelper/obj/Debug/UpdateHelper.csproj.FileListAbsolute.txt b/UpdateHelper/obj/Debug/UpdateHelper.csproj.FileListAbsolute.txt index 6e9d9131..5a9391e1 100644 --- a/UpdateHelper/obj/Debug/UpdateHelper.csproj.FileListAbsolute.txt +++ b/UpdateHelper/obj/Debug/UpdateHelper.csproj.FileListAbsolute.txt @@ -19,3 +19,9 @@ D:\fog\client\UpdateHelper\bin\x86\Debug\Handlers.pdb D:\fog\client\UpdateHelper\bin\x86\Debug\Newtonsoft.Json.xml D:\fog\client\UpdateHelper\bin\x86\Debug\PipeServer.pdb D:\fog\client\UpdateHelper\bin\x86\Debug\PipeClient.pdb +C:\Users\Administrator\dev\fog-client\bin\FOGUpdateHelper.exe.config +C:\Users\Administrator\dev\fog-client\bin\FOGUpdateHelper.exe +C:\Users\Administrator\dev\fog-client\bin\FOGUpdateHelper.pdb +C:\Users\Administrator\dev\fog-client\UpdateHelper\obj\Debug\UpdateHelper.csprojResolveAssemblyReference.cache +C:\Users\Administrator\dev\fog-client\UpdateHelper\obj\Debug\FOGUpdateHelper.exe +C:\Users\Administrator\dev\fog-client\UpdateHelper\obj\Debug\FOGUpdateHelper.pdb diff --git a/UpdateHelper/obj/Release/UpdateHelper.csproj.FileListAbsolute.txt b/UpdateHelper/obj/Release/UpdateHelper.csproj.FileListAbsolute.txt index 9da45a3e..312ba58a 100644 --- a/UpdateHelper/obj/Release/UpdateHelper.csproj.FileListAbsolute.txt +++ b/UpdateHelper/obj/Release/UpdateHelper.csproj.FileListAbsolute.txt @@ -9,3 +9,5 @@ D:\fog\fog-client\bin\FOGUpdateHelper.exe.config D:\fog\fog-client\bin\FOGUpdateHelper.exe D:\fog\fog-client\UpdateHelper\obj\Release\UpdateHelper.csprojResolveAssemblyReference.cache D:\fog\fog-client\UpdateHelper\obj\Release\FOGUpdateHelper.exe +C:\Users\Administrator\dev\fog-client\bin\FOGUpdateHelper.exe.config +C:\Users\Administrator\dev\fog-client\UpdateHelper\obj\Release\FOGUpdateHelper.exe diff --git a/UpdateWaiter/obj/Debug/UpdateWaiter.csproj.FileListAbsolute.txt b/UpdateWaiter/obj/Debug/UpdateWaiter.csproj.FileListAbsolute.txt index 3af30e65..11694c96 100644 --- a/UpdateWaiter/obj/Debug/UpdateWaiter.csproj.FileListAbsolute.txt +++ b/UpdateWaiter/obj/Debug/UpdateWaiter.csproj.FileListAbsolute.txt @@ -8,3 +8,9 @@ C:\Users\jbob\Desktop\fog-client\bin\FOGUpdateWaiter.pdb C:\Users\jbob\Desktop\fog-client\UpdateWaiter\obj\Debug\ResolveAssemblyReference.cache C:\Users\jbob\Desktop\fog-client\UpdateWaiter\obj\Debug\FOGUpdateWaiter.exe C:\Users\jbob\Desktop\fog-client\UpdateWaiter\obj\Debug\FOGUpdateWaiter.pdb +C:\Users\Administrator\dev\fog-client\bin\FOGUpdateWaiter.exe.config +C:\Users\Administrator\dev\fog-client\bin\FOGUpdateWaiter.exe +C:\Users\Administrator\dev\fog-client\bin\FOGUpdateWaiter.pdb +C:\Users\Administrator\dev\fog-client\UpdateWaiter\obj\Debug\UpdateWaiter.csprojResolveAssemblyReference.cache +C:\Users\Administrator\dev\fog-client\UpdateWaiter\obj\Debug\FOGUpdateWaiter.exe +C:\Users\Administrator\dev\fog-client\UpdateWaiter\obj\Debug\FOGUpdateWaiter.pdb diff --git a/UserService/FOGUserService.cs b/UserService/FOGUserService.cs index b85ccc8e..fedfa095 100644 --- a/UserService/FOGUserService.cs +++ b/UserService/FOGUserService.cs @@ -92,12 +92,14 @@ protected override Response GetLoopData() int.TryParse(Settings.Get("DisplayY"), out displayY); int.TryParse(Settings.Get("DisplayR"), out displayR); - var data = new JObject { ["autologout"] = new JObject { ["time"] = alo }, - ["printermanager"] = new JObject { ["name"] = printer } - ["displaymanager"] = new JObject { ["x"] = displayX, ["y"] = displayY, ["r"] = displayR } + ["defaultprintermanager"] = new JObject { ["name"] = printer }, + ["displaymanager"] = new JObject { ["error"] = ((displayX == -1) ? "Configuration not set" : "ok"), + ["x"] = displayX, + ["y"] = displayY, + ["r"] = displayR } }; return new Response(data, false); @@ -115,6 +117,14 @@ protected override void Load() Bus.SetMode(Bus.Mode.Client); Bus.Subscribe(Bus.Channel.Update, OnUpdate); Bus.Subscribe(Bus.Channel.Power, OnPower); + Bus.Subscribe(Bus.Channel.Status, OnStatus); + } + + private void OnStatus(dynamic data) + { + if (data.action == null) return; + if (data.action.toString().Equals("unload")) + Environment.Exit(0); } protected override void Unload() diff --git a/UserService/main.cs b/UserService/main.cs index 4a584cfe..f20e7cc8 100644 --- a/UserService/main.cs +++ b/UserService/main.cs @@ -42,7 +42,6 @@ public static void Main(string[] args) AppDomain.CurrentDomain.UnhandledException += Log.UnhandledException; - Eager.Initalize(); Log.Entry(LogName, "Initializing - phase 2"); diff --git a/UserService/obj/Debug/UserService.csproj.FileListAbsolute.txt b/UserService/obj/Debug/UserService.csproj.FileListAbsolute.txt index 70cba2ff..d93bab1b 100644 --- a/UserService/obj/Debug/UserService.csproj.FileListAbsolute.txt +++ b/UserService/obj/Debug/UserService.csproj.FileListAbsolute.txt @@ -8,3 +8,9 @@ C:\Users\jbob\Desktop\fog-client\bin\FOGUserService.pdb C:\Users\jbob\Desktop\fog-client\UserService\obj\Debug\ResolveAssemblyReference.cache C:\Users\jbob\Desktop\fog-client\UserService\obj\Debug\FOGUserService.exe C:\Users\jbob\Desktop\fog-client\UserService\obj\Debug\FOGUserService.pdb +C:\Users\Administrator\dev\fog-client\bin\FOGUserService.exe.config +C:\Users\Administrator\dev\fog-client\bin\FOGUserService.exe +C:\Users\Administrator\dev\fog-client\bin\FOGUserService.pdb +C:\Users\Administrator\dev\fog-client\UserService\obj\Debug\UserService.csprojResolveAssemblyReference.cache +C:\Users\Administrator\dev\fog-client\UserService\obj\Debug\FOGUserService.exe +C:\Users\Administrator\dev\fog-client\UserService\obj\Debug\FOGUserService.pdb diff --git a/build.ps1 b/build.ps1 index f75c9cbe..85ec334a 100644 --- a/build.ps1 +++ b/build.ps1 @@ -56,7 +56,8 @@ $debuggerMerge = "/ndebug /copyattrs /targetplatform:4.0``,""$netPath"" /out:""$ """$PSScriptRoot\bin\Modules.dll"" ""$PSScriptRoot\bin\EngineIoClientDotNet.dll"" " + ` """$PSScriptRoot\bin\log4net.dll"" ""$PSScriptRoot\bin\ProcessPrivileges.dll"" " + ` """$PSScriptRoot\bin\SuperSocket.Common.dll"" ""$PSScriptRoot\bin\SuperSocket.SocketBase.dll"" " + ` - """$PSScriptRoot\bin\WebSocket4Net.dll""" + """$PSScriptRoot\bin\WebSocket4Net.dll"" ""$PSScriptRoot\bin\Quartz.dll"" " + ` + """$PSScriptRoot\bin\Common.Logging.Core.dll"" ""$PSScriptRoot\bin\Common.Logging.dll""" $toZip = "EngineIoClientDotNet.dll", "FOGService.exe", "FOGService.exe.config", "FOGShutdownGUI.exe", ` "FOGShutdownGUI.exe.config", "FOGTray.exe", "FOGTray.exe.config", "FOGUpdateHelper.exe", ` @@ -66,7 +67,8 @@ $toZip = "EngineIoClientDotNet.dll", "FOGService.exe", "FOGService.exe.config", "Modules.dll", "Modules.dll.config", "Newtonsoft.Json.dll", ` "ProcessPrivileges.dll", "SuperSocket.Common.dll", "SuperSocket.SocketBase.dll", ` "SuperSocket.SocketEngine.dll", "SuperWebSocket.dll", "themes.xml", ` - "WebSocket4Net.dll", "Zazzles.dll" + "WebSocket4Net.dll", "Zazzles.dll", "Quartz.dll", "Common.Logging.dll", ` + "Common.Logging.Core.dll" ################################################## # Initial Build diff --git a/libs/Zazzles.dll b/libs/Zazzles.dll index b421889abe0361547f77ede53929ef82c661e8dc..3b5829b6f874f25dc846ec9a2c050f361f845ae3 100644 GIT binary patch delta 9414 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 delta 9412 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Νq5)H5oj9FX!9<50!A4FN|kb0FRXO$SNMG z;*mFaWDAe%;E{KEWH*l-;E{to@)?hO#Usagk;^=CT?nw_Xyzdl+4SKe zJIZL0t=cQHRVRpS>--|yx-_2c%(LBjwinN4@@!v`ZEUv4HufQr?dxE1GjXW+-^3@x zcZhl7F5)P$mY6TrvFraCv4J>2WLN%Vv5`1U{E9eJJVBfzeoHJC&k{?;?}-b=i^Qek zZ^RYiHRs)60e9Hl;DUC$QjES&zZ&9hjYIYU`5|? z5lyTe&)J7_4Ce;UeVnH_!OSYXoSB?i78WVt%(SxhD9%zlJNnl->p3&sJj+?^9-l|) z4P5qlSmG2Xgt4}l6C!z=Gm~=^XEEmn&V8Jxw0JxpCxIAzucl|tN%_3|lYCX~V;p2$ zZv5CND(#h?N|v%&Iig%udYeX=rkLiL)|qyielo?I^UPz-v&|*uGV>DiYV#ZBcg*jb zkDG6rEtVKd2g|*dkrsn>nRRb);O-8AV;+E>>Ph08u2aO-$!CfFs2_-b$c%^Gj4KTn ziI>A!<(#A@;tdr1^(Y@f*DKZuNy_ZIPp%-B&9>5e(f!YWNk3bjp1_AvIpAR_(I zQwFj6>h5&x^p!l)IL`Q*@shEfGFd58-c$A~pD5ocKPZYO{|^m)sTOW z_2#$v^nV?#l^tzA`ZTfA!nH^Dd|Mq4wjD6b_I46Wv!iQ?53q?27He_V&aw@Q{tvNK z7Q3TwaBS_W0UeBgVh5un6c|myVq{ zh@K{4x230e#L}CdbHy5~NkCh5zdesW?U*%T>RslQ*1qqR3>`kDbjF2Un`7`3*=+I( zp~a`|&UrbNvwe653o1t>VWMGT=)8%QWl6XUr&p?eObD6foHy4wuf*sTkcwwjX8Y+& z0Mbl4Ddui&qJDyX-|8de@?4>|=KWTzjx(7Xd=qzX^HE zV?Ait^?Nr|l}dXizF;}GXcnCY1p2wFG7}%bkTl2u_D&Gk{@o&+}$NON$ dzm`^C#;2{OOr$#