27c21175d7
Migrate much of BI to Services. Added Wireless Profile Provider plugin feature. Added Certificate Authority Provider plugin feature. Modified Certificate Provider plugin feature. Database migration v17, for Device Profiles. Enrolment Client Updated to support CA Certificates, Wireless Profiles and Hardware Info. New Client Enrolment Protocol to support new features. Plugin Manifest Generator added to main solution. Improved AD search performance.
106 lines
4.1 KiB
C#
106 lines
4.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using Disco.Client.Extensions;
|
|
using Disco.Client.Interop;
|
|
|
|
namespace Disco.Client
|
|
{
|
|
public static class Presentation
|
|
{
|
|
public static bool DelayUI { get; set; }
|
|
|
|
private static string EscapeMessage(this string Message)
|
|
{
|
|
if (!string.IsNullOrEmpty(Message))
|
|
return Message.Replace(",", "{comma}").Replace(Environment.NewLine, "{newline}");
|
|
else
|
|
return null;
|
|
}
|
|
public static void UpdateStatus(string SubHeading, string Message, bool ShowProgress, int Progress, int TryDelay)
|
|
{
|
|
Presentation.UpdateStatus(SubHeading, Message, ShowProgress, Progress);
|
|
if (TryDelay > 0)
|
|
Presentation.TryDelay(TryDelay);
|
|
}
|
|
public static void UpdateStatus(string SubHeading, string Message, bool ShowProgress, int Progress)
|
|
{
|
|
Console.WriteLine("#{0},{1},{2},{3}", SubHeading.EscapeMessage(), Message.EscapeMessage(), ShowProgress.ToString(), Progress.ToString());
|
|
}
|
|
public static void TryDelay(int Milliseconds)
|
|
{
|
|
if (DelayUI)
|
|
Thread.Sleep(Milliseconds);
|
|
}
|
|
|
|
public static void WriteBanner()
|
|
{
|
|
StringBuilder message = new StringBuilder();
|
|
message.AppendLine($"Version: {Assembly.GetExecutingAssembly().GetName().Version.ToString(3)}");
|
|
message.AppendLine($"Device: {Hardware.Information.SerialNumber} ({Hardware.Information.Manufacturer} {Hardware.Information.Model})");
|
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
UpdateStatus("Preparation Client Started", message.ToString(), false, 0);
|
|
Console.ForegroundColor = ConsoleColor.White;
|
|
TryDelay(3000);
|
|
}
|
|
public static void WriteFatalError(Exception ex)
|
|
{
|
|
|
|
Console.ForegroundColor = ConsoleColor.Magenta;
|
|
ClientServiceException clientServiceException = ex as ClientServiceException;
|
|
if (clientServiceException != null)
|
|
{
|
|
UpdateStatus($"An error occurred during {clientServiceException.ServiceFeature}",
|
|
clientServiceException.Message, false, 0);
|
|
}
|
|
else
|
|
{
|
|
StringBuilder message = new StringBuilder();
|
|
message.Append("Type: ").AppendLine(ex.GetType().Name);
|
|
message.Append("Message: ").AppendLine(ex.Message);
|
|
message.Append("Source: ").AppendLine(ex.Source);
|
|
message.Append("Stack: ").AppendLine(ex.StackTrace);
|
|
UpdateStatus("An error occurred", message.ToString(), false, 0);
|
|
}
|
|
Console.ForegroundColor = ConsoleColor.White;
|
|
|
|
TryDelay(30000);
|
|
}
|
|
public static void WriteFooter(bool RebootRequired, bool AllowUninstall, bool ErrorEncountered)
|
|
{
|
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
|
|
if (ErrorEncountered)
|
|
{
|
|
UpdateStatus("Client Finished due to Error", "An error occurred which caused the Preparation Client to stop running.", false, 0);
|
|
TryDelay(5000);
|
|
}
|
|
else
|
|
{
|
|
UpdateStatus("Client Finished Successfully", "The Preparation Client finished successfully.", false, 0);
|
|
TryDelay(1000);
|
|
}
|
|
|
|
if (RebootRequired)
|
|
RegisterBootstrapperPostActions(ShutdownActions.Reboot, AllowUninstall && !ErrorEncountered);
|
|
else
|
|
RegisterBootstrapperPostActions(ShutdownActions.None, AllowUninstall && !ErrorEncountered);
|
|
}
|
|
|
|
public static void RegisterBootstrapperPostActions(ShutdownActions ShutdownAction, bool Uninstall)
|
|
{
|
|
Console.WriteLine("!{0},{1}", Enum.GetName(typeof(ShutdownActions), ShutdownAction), Uninstall ? "UninstallBootstrapper" : "DontUninstallBootstrapper");
|
|
}
|
|
public enum ShutdownActions
|
|
{
|
|
None,
|
|
Shutdown,
|
|
Reboot
|
|
}
|
|
|
|
}
|
|
}
|