public static CaParameters ExtractFromSession(Session session)
        {
            const string createHkcuCommandKey = "CREATE_HKCU_OPEN_FULL";
            const string createGuidKey        = "ACTIVESETUP_GUID";
            const string productNameKey       = "PRODUCTNAME";
            const string companyNameKey       = "COMPANYNAME";
            const string versionKey           = "VERSION";
            const string removeHkcuCommand    = "REMOVE_HKCU_OPEN_FULL";

            string productName = ExtractAndCheck(session, productNameKey);
            string version     = ExtractAndCheck(session, versionKey);

            string createCommand         = ExtractAndCheck(session, createHkcuCommandKey);
            string createActiveSetupGuid = ExtractAndCheck(session, createGuidKey);

            string removeCommand = ExtractAndCheck(session, removeHkcuCommand);
            string companyName   = ExtractAndCheck(session, companyNameKey);

            var caParams = new CaParameters()
            {
                ActiveSetupGuid = createActiveSetupGuid,
                CreateCommand   = createCommand,
                ProductName     = productName,
                Version         = version,
                RemoveCommand   = removeCommand,
                CompanyName     = companyName
            };

            return(caParams);
        }
        public static ActionResult CaActiveSetup_RemoveHKCU(Session session)
        {
            Action action = () =>
            {
                var registryAbstractor = new RegistryAbstractor(session);

                //Set the Active Setup ot IsInstalled = 0 and change the StubPath
                var caParams = CaParameters.ExtractFromSession(session);
                registryAbstractor.DeleteHkcuKey(caParams.RegistrySubKey);
            };

            var runner = new CaRunner(session);

            return(runner.RunAction(action, "CaActiveSetup_RemoveHKCU"));
        }
        public static ActionResult CaActiveSetup_SetHKLM(Session session)
        {
            Action action = () =>
            {
                var registryAbstractor = new RegistryAbstractor(session);
                var caParams           = CaParameters.ExtractFromSession(session);

                //install the active setup that will set the OPEN key.
                using (RegistryKey hklmKey = registryAbstractor.OpenOrCreateHklmKey(caParams.RegistrySubKey))
                {
                    UpdateActiveSetupHklmKey(hklmKey, caParams.Default, caParams.CreateComponentId, caParams.CreateCommand, caParams.RemoveCommand, caParams.Version, true);
                }
            };

            var runner = new CaRunner(session);

            return(runner.RunAction(action, "CaActiveSetup_SetHKLM"));
        }
        public static ActionResult CaActiveSetup_SetHKCU(Session session)
        {
            Action action = () =>
            {
                var registryAbstractor = new RegistryAbstractor(session);

                //Set the Active Setup ot IsInstalled = 0 and change the StubPath
                var caParams = CaParameters.ExtractFromSession(session);
                using (RegistryKey hkcuKey = registryAbstractor.OpenOrCreateHkcuKey(caParams.RegistrySubKey))
                {
                    UpdateHkcuActiveSetupKey(hkcuKey, caParams.Version);
                }
            };

            var runner = new CaRunner(session);

            return(runner.RunAction(action, "CaActiveSetup_SetHKCU"));
        }
        public static ActionResult CaActiveSetup_RemoveHKLM(Session session)
        {
            Action action = () =>
            {
                var registryAbstractor = new RegistryAbstractor(session);

                //Set the Active Setup ot IsInstalled = 0 and change the StubPath
                var caParams = CaParameters.ExtractFromSession(session);
                using (RegistryKey createHklmKey = registryAbstractor.OpenOrCreateHklmKey(caParams.RegistrySubKey))
                {
                    UpdateActiveSetupHklmKey(createHklmKey, caParams.Default, caParams.CreateComponentId,
                                             caParams.CreateCommand, caParams.RemoveCommand, caParams.Version, false);
                }
            };

            var runner = new CaRunner(session);

            return(runner.RunAction(action, "CaActiveSetup_RemoveHKLM"));
        }
        public static CaParameters ExtractFromSession(Session session)
        {
            const string createHkcuCommandKey = "CREATE_HKCU_OPEN_FULL";
            const string createGuidKey = "ACTIVESETUP_GUID";
            const string productNameKey = "PRODUCTNAME";
            const string companyNameKey = "COMPANYNAME";
            const string versionKey = "VERSION";
            const string removeHkcuCommand = "REMOVE_HKCU_OPEN_FULL";

            string productName = ExtractAndCheck(session, productNameKey);
            string version = ExtractAndCheck(session, versionKey);

            string createCommand = ExtractAndCheck(session, createHkcuCommandKey);
            string createActiveSetupGuid = ExtractAndCheck(session, createGuidKey);

            string removeCommand = ExtractAndCheck(session, removeHkcuCommand);
            string companyName = ExtractAndCheck(session, companyNameKey);

            var caParams = new CaParameters()
                {
                    ActiveSetupGuid = createActiveSetupGuid,
                    CreateCommand = createCommand,
                    ProductName = productName,
                    Version = version,
                    RemoveCommand = removeCommand,
                    CompanyName = companyName
                };

            return caParams;
        }