Пример #1
0
        public UpdateXGGT7762(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT7762_AddDefaultPiBEntities(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #2
0
        public UpdateXGGT12505(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT12505_AddNewCampaignColumns(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #3
0
        public UpdateXGGT18424(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT18424_FailuresAreShownWithoutNames(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #4
0
        public UpdateXGGT12473(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT12473_AddShortNameForFaultTypes(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #5
0
        public UpdateXGGT4219(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT4219_Add_ABTZRB_Parameter(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #6
0
        public UpdateXGGT_17122(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT17122_NullPassStartEndTime(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #7
0
        public UpdateXGGT16422(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT16422_AddMapBreakWithProgrammesByExternalRefFeatureFlag(configuration.MasterConnectionString, _updatesFolder)
            };
        }
Пример #8
0
        public UpdateXGGT13351(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT13351_AddSmoothFeatureFlag(configuration.MasterConnectionString, _updatesFolder)
            };
        }
Пример #9
0
        /// <summary>
        /// Posts the specified configuraiton.
        /// </summary>
        /// <param name="request">The request.</param>
        public void Post(UpdateConfiguration request)
        {
            // Silly, but we need to serialize and deserialize or the XmlSerializer will write the xml with an element name of UpdateConfiguration

            var json = _jsonSerializer.SerializeToString(request);

            var config = _jsonSerializer.DeserializeFromString <ServerConfiguration>(json);

            _configurationManager.ReplaceConfiguration(config);
        }
Пример #10
0
        public UpdateXGGT13062(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT13062_RenamePassTarpsCollectionToRatingPoints(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #11
0
        public UpdateXGGT18062(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT18062_TypoInFailureDescription(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #12
0
        public UpdateXGGT8872(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT8872_AddSpotBasedDeliveryRules(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #13
0
        public UpdateXGGT10421(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT10421_MigrateProgrammeCategories(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #14
0
        public UpdateXGGT10357(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT10357_AddKPIPrioritiesAndDefaultBRSConfigurationTemplate(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #15
0
        public UpdateXGGT11304(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateXGGT11304_AddSponsorshipSmoothFailures(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #16
0
        public UpdateXGGT4159(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT4159_DefaultTargetAreaName(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #17
0
        private void Save()
        {
            var config = new UpdateConfiguration();

            config.UpdateCheckInterval = GetMinutesFromMilliseconds(UpdateCheckInterval);

            config.Enabled = UpdatesEnabled;

            UpdateConfiguration.Create(config);
        }
Пример #18
0
        public UpdateXGGT11538(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT11538_FeatureFlag_StrikeWeightDayPartsMerge(configuration.MasterConnectionString, _updatesFolder)
            };
        }
Пример #19
0
        public UpdateXGGT14618(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _            = Directory.CreateDirectory(_updatesFolder);
            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT14618_AgHfssDemos(configuration.TenantConnectionStrings, _updatesFolder)
            };
        }
Пример #20
0
        public IHttpActionResult UpdateConfiguration(UpdateConfiguration model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            _updateService.UpdateConfiguration(model);

            return(Ok());
        }
Пример #21
0
        public UpdateXGGT15514(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _ = Directory.CreateDirectory(_updatesFolder);

            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT15514_FixFitToSpotLengthRuleTypo(
                    configuration.TenantConnectionStrings)
            };
        }
Пример #22
0
        /// <summary>
        /// Send an updated configuration to libCEC
        /// </summary>
        /// <param name="config">The new configuration</param>
        public void UpdateConfigurationAsync(LibCECConfiguration config)
        {
            if (SuppressUpdates || _activeProcess != null)
            {
                return;
            }

            _controller.SetControlsEnabled(false);
            _activeProcess = new UpdateConfiguration(_controller.Lib, config);
            _activeProcess.EventHandler += ProcessEventHandler;
            (new Thread(_activeProcess.Run)).Start();
        }
Пример #23
0
        public UpdateXGGT14638(UpdateConfiguration configuration)
        {
            _updatesFolder = Path.Combine(configuration.UpdatesFolderRoot, Id.ToString());

            _ = Directory.CreateDirectory(_updatesFolder);

            _updateSteps = new List <IUpdateStep>
            {
                new UpdateStepXGGT14638_AddFiveNewWeightingRules(
                    configuration.TenantConnectionStrings)
            };
        }
Пример #24
0
        private UpdateConfiguration CreateConfig(string version, RolloutConditionMode conditionMode,
                                                 List <RolloutCondition> conditions, bool isnecessary = true)
        {
            var config = new UpdateConfiguration()
            {
                LiteralVersion       = version,
                RolloutConditionMode = conditionMode,
                RolloutConditions    = conditions,
                NecessaryUpdate      = isnecessary
            };

            return(config);
        }
Пример #25
0
        public IRestResponse <Upid> UpdateConfig(String vmId, UpdateConfiguration template)
        {
            var client  = new RestClient(baseUrl);
            var request = new RestRequest(string.Format("nodes/{0}/qemu/{1}/config", nodeid(vmId).node, nodeid(vmId).id), Method.POST);

            request.RequestFormat = DataFormat.Json;
            request.AddHeader("CSRFPreventionToken", apiTicket.CSRFPreventionToken);
            request.AddCookie("PVEAuthCookie", apiTicket.ticket);
            request.RootElement = "root";
            request.AddParameter("cores", template.cores);
            request.AddParameter("memory", template.memory);
            return(client.Execute <Upid>(request));
        }
Пример #26
0
        /// <summary>
        /// Start.
        /// </summary>
        /// <param name="serverIP">server ip</param>
        /// <param name="serverPort">server port</param>
        /// <param name="callerExe">callerExe</param>
        public void Start(string serverIP, int serverPort, string callerExe)
        {
            try
            {
                Random random = new Random();
                for (int i = 0; i < 100; i++)
                {
                    string        userID        = random.Next(1000000).ToString("00000");
                    string        logonPassword = string.Empty;
                    LogonResponse logonResponse = mRapidPassiveEngine.Initialize(userID, logonPassword, serverIP, serverPort, null);
                    if (logonResponse.LogonResult == LogonResult.Succeed)
                    {
                        break;
                    }
                }

                if (!File.Exists(UpdateConfiguration.ConfigurationPath))
                {
                    mUpdateConfiguration.Save();
                }
                else
                {
                    mUpdateConfiguration = (UpdateConfiguration)AgileConfiguration.Load(UpdateConfiguration.ConfigurationPath);
                }

                GetUpdateInfo(out mFileRelativePathListNeedDownloaded, out mFileListNeedRemoved);
                mFileCountNeedUpdated = mFileRelativePathListNeedDownloaded.Count;
                Event_FileCountNeedUpdated?.Invoke(mFileCountNeedUpdated);

                if (mFileCountNeedUpdated == 0 && mFileListNeedRemoved.Count == 0)
                {
                    return;
                }
                Event_UpdateStarted?.Invoke();

                Process[] processes = Process.GetProcessesByName(callerExe.Substring(0, callerExe.Length - 4));
                foreach (Process process in processes)
                {
                    process.Kill();
                }

                CbGeneric cbGeneric = new CbGeneric(UdpateThread);
                cbGeneric.BeginInvoke(null, null);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                Event_UpdateDisruptted?.Invoke(Resources.ConnectionFailed);
            }
        }
Пример #27
0
        static void Main()
        {
            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                //如果是其它类型的授权用户,请使用下面的语句设定正确的授权用户ID和密码。
                GlobalUtil.SetAuthorizedUser("FreeUser", "");

                //初始化服务端引擎
                CustomizeHandler customizeHandler = new CustomizeHandler();
                int port = int.Parse(ConfigurationManager.AppSettings["Port"]);
                RapidServerEngine.WriteTimeoutInSecs = -1;
                RapidServerEngine.Initialize(port, customizeHandler);
                RapidServerEngine.UserManager.RelogonMode = RelogonMode.IgnoreNew;

                //动态生成或加载配置信息
                if (!File.Exists(UpdateConfiguration.ConfigurationPath))
                {
                    Program.UpgradeConfiguration = new UpdateConfiguration();
                    Program.UpgradeConfiguration.Save();
                }
                else
                {
                    Program.UpgradeConfiguration = (UpdateConfiguration)UpdateConfiguration.Load(UpdateConfiguration.ConfigurationPath);
                }

                customizeHandler.Initialize(RapidServerEngine.FileController, Program.UpgradeConfiguration);

                bool remoting = bool.Parse(ConfigurationManager.AppSettings["RemotingServiceEnabled"]);
                if (remoting)
                {
                    ChannelServices.RegisterChannel(new TcpChannel(port + 2), false);
                    OausService service = new OausService(Program.UpgradeConfiguration);
                    RemotingServices.Marshal(service, "OausService");
                }


                //显示默认主窗体
                MainForm mainForm = new MainForm(Program.RapidServerEngine);
                mainForm.Text = ConfigurationManager.AppSettings["Title"];
                Application.Run(mainForm);
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message + " - " + ee.StackTrace);
            }
        }
Пример #28
0
        public Configuration(NameValueCollection config)
        {
            Update = new UpdateConfiguration();

            WorkerName = config.Get("worker_name") ?? "TestLib.Worker";

            TestingWorkDirectory = config.Get("workarea") ?? ".\\workarea\\";

            FileCacheFolder        = config.Get("cache_folder") ?? ".\\cache\\";
            CompilersConfigFolder  = config.Get("compilers_config_folder") ?? ".\\compilers\\";
            ProblemsCacheSize      = config.Get("problems_cache_size").ToUInt32OrDefault(1);
            ResultSendingCacheSize = config.Get("result_sending_cache_size").ToUInt32OrDefault(2048);

            BaseAddress    = new Uri(config.Get("base_address") ?? "http://localhost:8080/");
            BaseApiAddress = new Uri(BaseAddress, config.Get("api_path") ?? "/api");
            ApiAuthToken   = config.Get("api_token");

            InputFileName       = config.Get("input_file_name") ?? "input.txt";
            OutputFileName      = config.Get("output_file_name") ?? "output.txt";
            AnswerFileName      = config.Get("answer_file_name") ?? "answer.txt";
            ReportFileName      = config.Get("report_file_name") ?? "report.txt";
            CompilerLogFileName = config.Get("compiler_log_file_name") ?? "compiler_log.txt";

            GetSubmissionDelayMs = config.Get("get_submission_delay").ToInt32OrDefault(500);
            WorkerSlotCount      = config.Get("worker_slot_count").ToUInt32OrDefault(1);

            Update.LatestVersionUrl = config.Get("update_latest_version_url") ?? "http://localhost:8081/api/version";
            Update.LatestProgramUrl = config.Get("update_latest_program_url") ?? "http://localhost:8081/api/update?version=latest";

            fid = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                Process.GetCurrentProcess().ProcessName);

            if (!Directory.Exists(fid))
            {
                Directory.CreateDirectory(fid);
            }

            fid = Path.Combine(fid, "fid");

            if (File.Exists(fid))
            {
                if (!Guid.TryParse(File.ReadAllText(fid), out _workerId))
                {
                    File.Delete(fid);
                    _workerId = Guid.Empty;
                }
            }
        }
Пример #29
0
        public void Start()
        {
            //配置文件中记录着各个文件的版本信息。
            if (!File.Exists(UpdateConfiguration.ConfigurationPath))
            {
                this.updateConfiguration.Save();
            }
            else
            {
                this.updateConfiguration = (UpdateConfiguration)UpdateConfiguration.Load(UpdateConfiguration.ConfigurationPath);
            }

            //启动升级线程
            CbGeneric cb = new CbGeneric(this.UdpateThread);
            cb.BeginInvoke(null, null);
        }
Пример #30
0
        static void Main()
        {
            try
            {
                // ESFramework authorized user.
                GlobalUtil.SetAuthorizedUser("FreeUser", "");

                // Get update configuration.
                if (File.Exists(UpdateConfiguration.ConfigurationPath))
                {
                    mUpdateConfiguration = (UpdateConfiguration)AgileConfiguration.Load(UpdateConfiguration.ConfigurationPath);
                }
                else
                {
                    mUpdateConfiguration = new UpdateConfiguration();
                    mUpdateConfiguration.Save();
                }

                // Initialize rapid engine of server.
                int port = int.Parse(ConfigurationManager.AppSettings[Resources.CONFIG_KEY_PORT]);
                CustomizeHandler customizeHandler = new CustomizeHandler();
                mRapidServerEngine.WriteTimeoutInSecs = -1;
                mRapidServerEngine.Initialize(port, customizeHandler);
                customizeHandler.Initialize(mRapidServerEngine.FileController, mUpdateConfiguration);

                // Remote service.
                if (bool.Parse(ConfigurationManager.AppSettings[Resources.CONFIG_KEY_REMOTE]))
                {
                    ChannelServices.RegisterChannel(new TcpChannel(port + 2), false);
                    UpgradeService upgradeService = new UpgradeService(mUpdateConfiguration);
                    RemotingServices.Marshal(upgradeService, "UpgradeCenter");
                }

                // Create main form.
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                MainForm mainForm = new MainForm(mRapidServerEngine)
                {
                    Text = ConfigurationManager.AppSettings[Resources.CONFIG_KEY_FORM_TITLE]
                };
                Application.Run(mainForm);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
Пример #31
0
        private void PackageEditDialog_Load(object sender, EventArgs e)
        {
            Text = String.Format(Text, PackageVersion.FullText, Program.VersionString);

            try
            { 
            _ftp =
                    new FtpManager(Project.FtpHost, Project.FtpPort, Project.FtpDirectory, Project.FtpUsername,
                        FtpPassword,
                        Project.Proxy, Project.FtpUsePassiveMode, Project.FtpTransferAssemblyFilePath, Project.FtpProtocol);
            if (!String.IsNullOrWhiteSpace(Project.FtpTransferAssemblyFilePath))
                _ftp.TransferAssemblyPath = Project.FtpTransferAssemblyFilePath;
            else
                _ftp.Protocol = (FtpSecurityProtocol)Project.FtpProtocol;
            }
            catch (Exception ex)
            {
                Popup.ShowPopup(this, SystemIcons.Error, "Error while loading the FTP-data.", ex, PopupButtons.Ok);
                Close();
                return;
            }

            if (UpdateConfiguration == null)
            {
                Popup.ShowPopup(this, SystemIcons.Error, "Error while loading the configuration.",
                    "There are no entries available in the configuration.",
                    PopupButtons.Ok);
                Close();
                return;
            }

            try
            {
                _packageConfiguration =
                    UpdateConfiguration.First(item => item.LiteralVersion == PackageVersion.ToString()).DeepCopy();
            }
            catch (InvalidOperationException)
            {
                Popup.ShowPopup(this, SystemIcons.Error, "Error while loading the configuration.",
                    "There are no entries available for the current package in the configuration.",
                    PopupButtons.Ok);
                Close();
                return;
            }

            var packageVersion = new UpdateVersion(_packageConfiguration.LiteralVersion);
            majorNumericUpDown.Maximum = Decimal.MaxValue;
            minorNumericUpDown.Maximum = Decimal.MaxValue;
            buildNumericUpDown.Maximum = Decimal.MaxValue;
            revisionNumericUpDown.Maximum = Decimal.MaxValue;

            majorNumericUpDown.Value = packageVersion.Major;
            minorNumericUpDown.Value = packageVersion.Minor;
            buildNumericUpDown.Value = packageVersion.Build;
            revisionNumericUpDown.Value = packageVersion.Revision;

            _existingVersionString = _packageConfiguration.LiteralVersion;

            var devStages = Enum.GetValues(typeof (DevelopmentalStage));
            Array.Reverse(devStages);
            developmentalStageComboBox.DataSource = devStages;
            developmentalStageComboBox.SelectedIndex =
                developmentalStageComboBox.FindStringExact(packageVersion.DevelopmentalStage.ToString());
            developmentBuildNumericUpDown.Value = packageVersion.DevelopmentBuild;
            developmentBuildNumericUpDown.Enabled = (packageVersion.DevelopmentalStage != DevelopmentalStage.Release);
            architectureComboBox.SelectedIndex = (int) _packageConfiguration.Architecture;
            necessaryUpdateCheckBox.Checked = _packageConfiguration.NecessaryUpdate;
            includeIntoStatisticsCheckBox.Enabled = Project.UseStatistics;
            includeIntoStatisticsCheckBox.Checked = _packageConfiguration.UseStatistics;
            foreach (var package in Project.Packages.Where(package => new UpdateVersion(package.Version) == packageVersion))
            {
                descriptionTextBox.Text = package.Description;
            }

            unsupportedVersionsListBox.DataSource = _unsupportedVersionLiteralsBindingList;
            var cultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures).ToList();
            foreach (var info in cultureInfos)
            {
                changelogLanguageComboBox.Items.Add(String.Format("{0} - {1}", info.EnglishName, info.Name));
                _cultures.Add(info);
            }

            changelogContentTabControl.TabPages[0].Tag = _cultures.Where(x => x.Name == "en");
            changelogLanguageComboBox.SelectedIndex = changelogLanguageComboBox.FindStringExact("English - en");

            foreach (var changelogDictionaryEntry in _packageConfiguration.Changelog)
            {
                var culture = changelogDictionaryEntry.Key;
                if (culture.Name != "en")
                {
                    var page = new TabPage("Changelog")
                    {
                        BackColor = SystemColors.Window,
                        Tag = culture
                    };
                    page.Controls.Add(new ChangelogPanel {Changelog = changelogDictionaryEntry.Value});
                    changelogContentTabControl.TabPages.Add(page);
                }
                else
                {
                    englishChangelogTextBox.Text = changelogDictionaryEntry.Value;
                }
            }

            categoryTreeView.SelectedNode = categoryTreeView.Nodes[0];
            if (_packageConfiguration.UnsupportedVersions != null &&
                _packageConfiguration.UnsupportedVersions.Count() != 0)
            {
                someVersionsRadioButton.Checked = true;
                unsupportedVersionsPanel.Enabled = true;
                foreach (var unsupportedVersionLiteral in _packageConfiguration.UnsupportedVersions)
                {
                    _unsupportedVersionLiteralsBindingList.Add(unsupportedVersionLiteral);
                }
            }
            else
            {
                unsupportedVersionsPanel.Enabled = false;
            }

            foreach (var operation in _packageConfiguration.Operations)
            {
                switch (Operation.GetOperationTag(operation))
                {
                    case "DeleteFile":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _deleteNode.Clone());

                        var deletePage = new TabPage("Delete file") {BackColor = SystemColors.Window};
                        deletePage.Controls.Add(new FileDeleteOperationPanel
                        {
                            Path = operation.Value,
                            ItemList =
                                new BindingList<string>(((JArray) operation.Value2).ToObject<BindingList<string>>())
                        });
                        categoryTabControl.TabPages.Add(deletePage);
                        break;

                    case "RenameFile":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _renameNode.Clone());

                        var renamePage = new TabPage("Rename file") {BackColor = SystemColors.Window};
                        renamePage.Controls.Add(new FileRenameOperationPanel
                        {
                            Path = operation.Value,
                            NewName = operation.Value2.ToString()
                        });
                        categoryTabControl.TabPages.Add(renamePage);
                        break;

                    case "CreateRegistrySubKey":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _createRegistrySubKeyNode.Clone());

                        var createRegistrySubKeyPage = new TabPage("Create registry subkey")
                        {
                            BackColor = SystemColors.Window
                        };
                        createRegistrySubKeyPage.Controls.Add(new RegistrySubKeyCreateOperationPanel
                        {
                            KeyPath = operation.Value,
                            ItemList =
                                new BindingList<string>(((JArray) operation.Value2).ToObject<BindingList<string>>())
                        });
                        categoryTabControl.TabPages.Add(createRegistrySubKeyPage);
                        break;

                    case "DeleteRegistrySubKey":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _deleteRegistrySubKeyNode.Clone());

                        var deleteRegistrySubKeyPage = new TabPage("Delete registry subkey")
                        {
                            BackColor = SystemColors.Window
                        };
                        deleteRegistrySubKeyPage.Controls.Add(new RegistrySubKeyDeleteOperationPanel
                        {
                            KeyPath = operation.Value,
                            ItemList =
                                new BindingList<string>(((JArray) operation.Value2).ToObject<BindingList<string>>())
                        });
                        categoryTabControl.TabPages.Add(deleteRegistrySubKeyPage);
                        break;

                    case "SetRegistryValue":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _setRegistryValueNode.Clone());

                        var setRegistryValuePage = new TabPage("Set registry value")
                        {
                            BackColor = SystemColors.Window
                        };
                        setRegistryValuePage.Controls.Add(new RegistrySetValueOperationPanel
                        {
                            KeyPath = operation.Value,
                            NameValuePairs =
                                ((JArray) operation.Value2).ToObject<List<Tuple<string, object, RegistryValueKind>>>()
                        });
                        categoryTabControl.TabPages.Add(setRegistryValuePage);
                        break;

                    case "DeleteRegistryValue":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _deleteRegistryValueNode.Clone());

                        var deleteRegistryValuePage = new TabPage("Delete registry value")
                        {
                            BackColor = SystemColors.Window
                        };
                        deleteRegistryValuePage.Controls.Add(new RegistryDeleteValueOperationPanel
                        {
                            KeyPath = operation.Value,
                            ItemList = ((JObject) operation.Value2).ToObject<BindingList<string>>()
                        });
                        categoryTabControl.TabPages.Add(deleteRegistryValuePage);
                        break;

                    case "StartProcess":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _startProcessNode.Clone());

                        var startProcessPage = new TabPage("Start process") {BackColor = SystemColors.Window};
                        startProcessPage.Controls.Add(new ProcessStartOperationPanel
                        {
                            Path = operation.Value,
                            Arguments = ((JArray) operation.Value2).ToObject<BindingList<string>>()
                        });
                        categoryTabControl.TabPages.Add(startProcessPage);
                        break;

                    case "TerminateProcess":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _terminateProcessNode.Clone());

                        var terminateProcessPage = new TabPage("Terminate process") {BackColor = SystemColors.Window};
                        terminateProcessPage.Controls.Add(new ProcessStopOperationPanel
                        {
                            ProcessName = operation.Value
                        });
                        categoryTabControl.TabPages.Add(terminateProcessPage);
                        break;

                    case "StartService":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _startServiceNode.Clone());

                        var startServicePage = new TabPage("Start service") {BackColor = SystemColors.Window};
                        startServicePage.Controls.Add(new ServiceStartOperationPanel
                        {
                            ServiceName = operation.Value
                        });
                        categoryTabControl.TabPages.Add(startServicePage);
                        break;

                    case "StopService":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode) _stopServiceNode.Clone());

                        var stopServicePage = new TabPage("Stop service") {BackColor = SystemColors.Window};
                        stopServicePage.Controls.Add(new ServiceStopOperationPanel
                        {
                            ServiceName = operation.Value
                        });
                        categoryTabControl.TabPages.Add(stopServicePage);
                        break;

                    case "ExecuteScript":
                        categoryTreeView.Nodes[3].Nodes.Add((TreeNode)_executeScriptNode.Clone());

                        var executeScriptPage = new TabPage("Execute script") { BackColor = SystemColors.Window };
                        executeScriptPage.Controls.Add(new ScriptExecuteOperationPanel
                        {
                            Code = operation.Value
                        });
                        categoryTabControl.TabPages.Add(executeScriptPage);
                        break;
                }
            }
        }