/// <summary> /// Initializes the Plugin System. /// </summary> /// <param name="internalConfigPath">The Path that is used by internal config files by the Plugin System</param> /// <param name="pluginDirectory">The Path used as "Install Directory" for Plugins/Packages</param> public static void Initialize( string internalConfigPath, string pluginDirectory, Func <string, string, bool> updateDialog, Action <string, int, int> setStatus, string staticDataConfig = null, bool checkUpdates = true) { if (IsInitialized) { throw new Exception("Can not Initialize the Plugin System Twice"); } SendLog("Initializing Plugin System"); //TODO: Process Things like updates before the plugin system loads the libraries. PluginPaths.InternalSystemConfigPath = Path.GetFullPath(internalConfigPath); PluginPaths.PluginDirectory = Path.GetFullPath(pluginDirectory); PluginPaths.EnsureInternalDirectoriesExist(); PluginPaths.CreateInternalFilesIfMissing(); ErrorHandler.Initialize(); LoadOrder.Initialize(); if (staticDataConfig != null && File.Exists(staticDataConfig)) { StaticData.SetState(File.ReadAllText(staticDataConfig)); } IsInitialized = true; SendLog("Updating.."); PluginHost = new PluginSystemHost(); HelperClass.ReloadDefaultPlugins(); OnInitialized?.Invoke(); if (File.Exists(PluginPaths.InternalStartupInstructionPath)) { SendLog("Running Start Actions.."); ActionRunner.RunActions(); } if (checkUpdates) { ListHelper.LoadList(PluginPaths.PluginListFile).Select(x => new BasePluginPointer(x)).ToList() .ForEach(x => UpdateManager.CheckAndUpdate(x, updateDialog, setStatus)); } SendLog("Registering System Host.."); LoadPlugins(PluginHost); SendLog("Registered System Host.."); SendLogDivider(); //Everything Finished SendLog("Initialization Complete."); SendLogDivider(); }
protected void RunSelenium(List <Action> actionsList) { SetLogText(""); LogDir = (_actionArgs != null) ? _actionArgs.LogFilePath : GetCurrentFolder(); Log.Reset(LogDir); if (txtRootURL.Text == "" && _actionArgs == null) { MessageBox.Show("Please provide root url!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { EnablePaneAction(false); /////////////////////////////////////////////////////////////////////////////// var actionRunner = new ActionRunner(new ActionRunnerArgs { LogFilePath = LogDir, URL = txtRootURL.Text, RunTimes = Convert.ToInt32(txtRunTimes.Value) }); actionRunner.RunActions(this, GetActionsList()); } catch (Exception ex) { LogTask logMsg = new LogTask { message = ex.Message, status = TaskCompletionStatus.Error, TaskName = "MainForm class - RunSelenium", TimeNetto = TimeSpan.MinValue }; Log.WriteLog(logMsg); } finally { Log.Close(); } EnablePaneAction(true); ShowNotification(false); if (_actionArgs != null) { Close(); } }