/// <include file='doc\EventLogInstaller.uex' path='docs/doc[@for="EventLogInstaller.Rollback"]/*' />
        /// <devdoc>
        /// Called when this or another component in the installation has failed.
        /// </devdoc>
        public override void Rollback(IDictionary savedState)
        {
            base.Rollback(savedState);

            Context.LogMessage(Res.GetString(Res.RestoringEventLog, Source));

            if (savedState["baseInstalledAndPlatformOK"] != null)
            {
                bool logExists = (bool)savedState["logExists"];
                if (!logExists)
                {
                    EventLog.Delete(Log, ".");
                }
                else
                {
                    bool   alreadyRegistered;
                    object alreadyRegisteredObj = savedState["alreadyRegistered"];
                    if (alreadyRegisteredObj == null)
                    {
                        alreadyRegistered = false;
                    }
                    else
                    {
                        alreadyRegistered = (bool)alreadyRegisteredObj;
                    }

                    if (!alreadyRegistered)
                    {
                        // delete the source we installed, assuming it succeeded. Then put back whatever used to be there.
                        if (EventLog.SourceExists(Source, "."))
                        {
                            EventLog.DeleteEventSource(Source, ".");
                        }
                    }
                }
            }
        }