public static ActionResult BindCertificate(Session session)
        {
            ActionResult result;

            var methodName =
                MethodBase.GetCurrentMethod().Name;

            session.Log("{0}: BEGIN", methodName);

            try
            {
                var filePath =
                    session.CustomActionData["SessionData"];

                var sessionData =
                    SessionManager.Load(filePath);

                session.Log("{0}: Product Version = {1}", methodName, sessionData.InstallerVersion);

                session.Log("{0}: THUMBPRINT = {1}", methodName, sessionData.Certificate);

                session.Log("{0}: PORT = {1}", methodName, sessionData.Port);

                var port =
                    (ushort)sessionData.Port;

                CertificateManager.BindSelfSignedCertificate(sessionData.Certificate, port);

                var providerConfig =
                    ConfigManager.GetConfiguration(sessionData.Application);

                providerConfig.ListenPort = port;

                providerConfig.Version = sessionData.InstallerVersion;

                ConfigManager.SaveConfiguration(providerConfig, sessionData.Application);

                result = ActionResult.Success;
            }
            catch (Exception e)
            {
                session.Log("{0}", e);

                result = ActionResult.Failure;
            }

            session.Log("{0}: RESULT = {1}", methodName, result);

            session.Log("{0}: END", methodName);

            return(result);
        }