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; }