/**
  * @param array $datos_servidor Asociativo con los parámetros de conexión a la base
  */
 function instalar($datos_servidor)
 {
     if (!$this->permitir_instalar) {
         return;
     }
     $version = $this->get_version_nueva();
     $id = $this->proyecto->get_id();
     $this->manejador_interface->titulo("Instalando {$id} " . $version->__toString());
     $id_def_base = $this->proyecto->construir_id_def_base($this->get_fuente_defecto());
     //--- Chequea si existe la entrada de la base de negocios en el archivo de bases
     if (!$this->instalacion->existe_base_datos_definida($id_def_base)) {
         if (!isset($datos_servidor['base'])) {
             $id_base = $this->get_id_base();
             $datos_servidor['base'] = $id_base;
         }
         //-- Cambia el schema
         $datos_servidor['schema'] = $this->schema_modelo;
         //-- Agrega la definición de la base
         $this->instalacion->agregar_db($id_def_base, $datos_servidor);
         if ($this->permitir_determinar_encoding_bd) {
             $this->instalacion->determinar_encoding($id_def_base);
         }
     }
     //--- Chequea si existe fisicamente la base creada
     if (!$this->instalacion->existe_base_datos($id_def_base)) {
         $this->instalacion->crear_base_datos($id_def_base, false);
     }
     //--- Chequea si hay un modelo cargado y decide que hacer en tal caso
     $base = $this->instalacion->conectar_base($id_def_base);
     if (!$this->estructura_creada($base)) {
         $this->cargar_modelo_datos($base);
     } else {
         $this->regenerar_modelo_datos($base, $id_def_base);
     }
     //Actualiza permisos de la base
     $this->proyecto->generar_roles_db();
 }