aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS_TheReturn/AppLauncherDaemon.cs
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-01-08 09:57:10 -0500
committerMichael <[email protected]>2017-01-08 09:57:10 -0500
commitf30dcf5ef41d54c588d7b42c48be8d941abba72e (patch)
tree7705f99b965673b1c034ac2b1c56e65072c827df /ShiftOS_TheReturn/AppLauncherDaemon.cs
parent69dfad54724d4176dfce238a8d7e73970e6eef24 (diff)
downloadshiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.tar.gz
shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.tar.bz2
shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.zip
Initial upload
Diffstat (limited to 'ShiftOS_TheReturn/AppLauncherDaemon.cs')
-rw-r--r--ShiftOS_TheReturn/AppLauncherDaemon.cs67
1 files changed, 67 insertions, 0 deletions
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<LauncherItem> Available()
+ {
+ List<LauncherItem> win = new List<LauncherItem>();
+
+ 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; }
+
+ }
+}