public static function installFromFile($path, $deleteFile = false)
    {
        // crate spa
        $spa = new Tenant_SPA();
        $spa->path = 'not/set';
        $spa->name = 'spa-' . rand();
        $spa->create();
        try {
            return self::updateFromFile($spa, $path, $deleteFile);
        } catch (Exception $ex) {
            $spa->delete();
            throw $ex;
        }
    }