public function run($force = false)
    {
        if (!is_readable($this->config)) {
            throw new InstallerException("Missing or unreadable config_si file {$this->config}.");
        }
        $this->getLogger()->notice("Installing SugarCRM into {$this->getPath()}...");
        if ($this->fs->exists($this->getPath())) {
            if (!$this->fs->isEmpty($this->getPath())) {
                if ($force === true) {
                    $this->deletePath();
                    $this->createPath();
                } else {
                    throw new InstallerException(
                        "The target path {$this->getPath()} is not empty. "
                        ."Use --force to remove {$this->getPath()} and its contents before installing."
                    );
                }
            }
        } else {
            $this->createPath();
        }
        // At this point we should have an empty dir for path.
        $this->extract();
        $this->copyConfigSi();
        $this->runSugarInstaller();
        $this->deleteConfigSi();
        $this->getLogger()->notice('Installation complete.');
    }