How do I programmatically disable an Orchard module?
orchardcms
Solution
OK, I figured this out by looking at the Controller and Command classes in Orchard.Modules. First I had to add a project reference to Orchard.Modules, and then in Migrations.cs:
public int UpdateFrom2() {
var features = _moduleService.GetAvailableFeatures().ToDictionary(m=>m.Descriptor.Id, m=>m);
if (features.ContainsKey("TinyMce") && features["TinyMce"].IsEnabled) {
_moduleService.DisableFeatures(new string[] { "TinyMce" });
}
if (features.ContainsKey("TinyMceDeluxe") && !features["TinyMceDeluxe"].IsEnabled) {
_moduleService.EnableFeatures(new string[] { "TinyMceDeluxe" });
}
return 3;
}
Problem
From Migrations.cs, I want to disable one module if it is enabled, and enable another one if it is not already enabled. How can I do this?