From f30dcf5ef41d54c588d7b42c48be8d941abba72e Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 8 Jan 2017 09:57:10 -0500 Subject: Initial upload --- ShiftOS_TheReturn/AppLauncherDaemon.cs | 67 ++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 ShiftOS_TheReturn/AppLauncherDaemon.cs (limited to 'ShiftOS_TheReturn/AppLauncherDaemon.cs') diff --git a/ShiftOS_TheReturn/AppLauncherDaemon.cs b/ShiftOS_TheReturn/AppLauncherDaemon.cs new file mode 100644 index 0000000..8dc203a --- /dev/null +++ b/ShiftOS_TheReturn/AppLauncherDaemon.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Newtonsoft.Json; + +namespace ShiftOS.Engine +{ + public static class AppLauncherDaemon + { + public static bool Contains(this AssemblyName[] asms, string name) + { + foreach(var asm in asms) + { + if (asm.FullName.Contains(name)) + return true; + } + return false; + } + + public static List Available() + { + List win = new List(); + + foreach (var asmExec in System.IO.Directory.GetFiles(Environment.CurrentDirectory)) + { + if (asmExec.EndsWith(".dll") | asmExec.EndsWith(".exe")) + { + var asm = Assembly.LoadFrom(asmExec); + + if (asm.GetReferencedAssemblies().Contains("ShiftOS.Engine") || asm.FullName.Contains("ShiftOS.Engine")) + { + foreach (var type in asm.GetTypes()) + { + if (type.GetInterfaces().Contains(typeof(IShiftOSWindow))) + { + foreach (var attr in type.GetCustomAttributes(false)) + { + if (attr is LauncherAttribute) + { + var launch = attr as LauncherAttribute; + if (launch.UpgradeInstalled) + { + win.Add(new LauncherItem { DisplayData = launch, LaunchType = type }); + } + } + } + } + } + } + } + } + return win; + } + + } + + public class LauncherItem + { + public LauncherAttribute DisplayData { get; internal set; } + public Type LaunchType { get; internal set; } + + } +} -- cgit v1.2.3