protected override bool FilesFilterForImmediateMode(ComponentInstallStatus desiredStatus, ComponentInstallStatus allowedStatus, bool isNew, bool isRequiringUpdate)
        {
            // Текущий статус установки.
              CurrentInstallStatus currentInstallStatus = Session.GetService<ISessionCurrentInstallStatusExtension>().GetStatus();

              // Новая установка.
              if (currentInstallStatus == CurrentInstallStatus.Install
            && desiredStatus == ComponentInstallStatus.Install
            && allowedStatus.HasFlag(ComponentInstallStatus.Install))
              {
            // Для новой базы запускаем скрипт.
            return isNew;
              }

              // Обслуживание (изменение этого же продукта).
              // Добавлена новая база. В этом случае также необходимо выполнить скрипты с атрибутом Install.
              if (currentInstallStatus == CurrentInstallStatus.Change
            // Компонент уже должен быть установлен.
            && desiredStatus == ComponentInstallStatus.AlreadyInstalled)
              {
            return isNew && (allowedStatus.HasFlag(ComponentInstallStatus.Install)
              || allowedStatus.HasFlag(ComponentInstallStatus.Reinstall));
              }

              // При обновлении и patch новую базу не добавляем, поэтому эту ситуацию не обрабатываем.

              return false;
        }
        protected override bool FilesFilterForImmediateMode(ComponentInstallStatus desiredStatus, ComponentInstallStatus allowedStatus, bool isNew, bool isRequiringUpdate)
        {
            // Текущий статус установки.
              CurrentInstallStatus currentInstallStatus = Session.GetService<ISessionCurrentInstallStatusExtension>().GetStatus();

              // Новая установка.
              if (currentInstallStatus == CurrentInstallStatus.Install
            && desiredStatus == ComponentInstallStatus.Install
            && allowedStatus.HasFlag(ComponentInstallStatus.Install))
              {
            // Для базы требующей обновления запускаем скрипт.
            return isRequiringUpdate;
              }

              // Обслуживание (изменение этого же продукта).
              // Здесь будут базы с версией меньше устанавливаемой.
              // Базы с версией равной и больше текущей не должны обновлятся согласно возврату хранимой процедуры (по ТЗ).
              if (currentInstallStatus == CurrentInstallStatus.Change
            // Компонент уже должен быть установлен.
            && desiredStatus == ComponentInstallStatus.AlreadyInstalled
            && allowedStatus.HasFlag(ComponentInstallStatus.Reinstall))
              {
            return isRequiringUpdate;
              }

              // При обновлении запускаем скрипты только с признаком переустановки.
              if (currentInstallStatus == CurrentInstallStatus.Update
            && desiredStatus == ComponentInstallStatus.Reinstall
            && allowedStatus.HasFlag(ComponentInstallStatus.Reinstall))
              {
            return isRequiringUpdate;
              }

              // При patch запускаем скрипты только с признаком переустановки.
              if (currentInstallStatus == CurrentInstallStatus.Patch
            && desiredStatus == ComponentInstallStatus.AlreadyInstalled
            && allowedStatus.HasFlag(ComponentInstallStatus.Reinstall))
              {
            return isRequiringUpdate;
              }

              return false;
        }