예제 #1
0
        static void RunSetup(MessageContainer messages, string appDir)
        {
            Assembly setupAssembly = PluginLoader.LoadPlugin ("SetupPlugin");
            if (setupAssembly == null) {
                messages.Add ("Init: failed to load setup plugin assembly.");
                return;
            }

            Type[] types = setupAssembly.GetTypes ();
            ISetupPlugin setupPlugin;
            foreach (Type t in types) {
                if (!typeof (ISetupPlugin).IsAssignableFrom (t))
                    continue;

                try {
                    setupPlugin = Activator.CreateInstance (t) as ISetupPlugin;
                    setupPlugin.Initialize ();
                    messages.Add ("Init: setup type '{0}' v{1} loaded", t.FullName, setupPlugin.Version);
                } catch (Exception ex) {
                    messages.Add ("Init: failed to create instance of type '{0}' - cannot perform setup with this type. Exception '{1}' was caught, with message: {2}",
                        t.FullName, ex.GetType (), ex.Message);
                    continue;
                }

                try {
                    if (!setupPlugin.PerformSetupSteps (appDir)) {
                        messages.Add ("Init: setup failed.");
                        continue;
                    }
                    messages.Add ("Init: setup successful.");
                } catch (Exception ex) {
                    messages.Add ("Init: setup failed. Exception '{0}' caught: {1}", ex.GetType (), ex.Message);
                }
            }
        }
예제 #2
0
 void CreateDirectory(string name, string dataDir, MessageContainer messages)
 {
     string newDir = Path.Combine (dataDir, name);
     if (!Directory.Exists (newDir)) {
         Directory.CreateDirectory (newDir);
         messages.Add (1, false, "* directory {0} created", newDir);
     }
 }
예제 #3
0
        static void LoadPluginResources(Assembly pluginAssembly, MessageContainer messages)
        {
            Type [] types = pluginAssembly.GetTypes ();
            IPlugin plugin;

            foreach (Type t in types) {
                if (!typeof (IPlugin).IsAssignableFrom (t))
                    continue;

                try {
                    plugin = Activator.CreateInstance (t) as IPlugin;
                    plugin.Initialize ();
                    messages.Add ("Init: plugin type '{0}' v{1} loaded", t.FullName, plugin.Version);
                } catch (Exception ex) {
                    messages.Add ("Init: failed to create instance of type '{0}'. Exception '{1}' was caught, with message: {2}",
                        t.FullName, ex.GetType (), ex.Message);
                    continue;
                }
            }
        }
예제 #4
0
 static MessageContainer()
 {
     Instance = new MessageContainer ();
 }