public void Uninstalled(Feature feature)
        {
            var featureName = feature.Descriptor.Id;

            if (_dataMigrationManager.IsFeatureAlreadyInstalled(featureName))
            {
                _dataMigrationManager.Uninstall(featureName);
            }
        }
예제 #2
0
        private async Task EnableOrDisableFeaturesAsync(IEnumerable <IFeatureInfo> features, FeaturesBulkAction action, bool?force)
        {
            switch (action)
            {
            case FeaturesBulkAction.None:
                break;

            case FeaturesBulkAction.Enable:
                await _shellFeaturesManager.EnableFeaturesAsync(features, force == true);

                Notify(features);
                break;

            case FeaturesBulkAction.Disable:

                await _shellFeaturesManager.DisableFeaturesAsync(features, force == true);

                foreach (var featureInfoToDisable in features)
                {
                    _dataMigrationManager.Uninstall(featureInfoToDisable.Id).GetAwaiter().GetResult();
                }


                Notify(features, enabled: false);
                break;

            case FeaturesBulkAction.Toggle:
                var enabledFeatures = await _shellFeaturesManager.GetEnabledFeaturesAsync();

                var disabledFeatures = await _shellFeaturesManager.GetDisabledFeaturesAsync();

                var featuresToEnable  = disabledFeatures.Intersect(features);
                var featuresToDisable = enabledFeatures.Intersect(features);

                await _shellFeaturesManager.UpdateFeaturesAsync(featuresToDisable, featuresToEnable, force == true);

                Notify(featuresToEnable);
                Notify(featuresToDisable, enabled: false);
                return;

            default:
                break;
            }
        }