public static function isInstalled()
 {
     if (!self::isExtensionDriverReady()) {
         return false;
     }
     $pluginManager = Artificer::pluginManager();
     $widgetManager = Artificer::widgetManager();
     foreach (Artificer::getCoreExtensions() as $coreExtension) {
         if (!$pluginManager->isInstalled($coreExtension) && !$widgetManager->isInstalled($coreExtension)) {
             return false;
         }
     }
     return true;
 }
 protected function installCoreExtensions()
 {
     $pluginManager = Artificer::pluginManager();
     $widgetManager = Artificer::widgetManager();
     // Enable install events
     Artificer::pluginManager()->boot();
     Artificer::widgetManager()->boot();
     foreach (Artificer::getCoreExtensions() as $coreExtension) {
         if (!$pluginManager->isInstalled($coreExtension) && !$widgetManager->isInstalled($coreExtension)) {
             // Todo: know if its plugin or widget
             $installed = $pluginManager->installer()->install($coreExtension);
             if (!$installed) {
                 throw new \Exception("Unable to install Artificer core extension {$coreExtension}");
             }
         }
     }
 }