diff --git a/src/Composer/Command/DiagnoseCommand.php b/src/Composer/Command/DiagnoseCommand.php index a288109c7..f0bab63a7 100644 --- a/src/Composer/Command/DiagnoseCommand.php +++ b/src/Composer/Command/DiagnoseCommand.php @@ -177,17 +177,12 @@ EOT $finder = new ExecutableFinder; $hasSystemUnzip = (bool) $finder->find('unzip'); - if (Platform::isWindows()) { - $hasSystem7zip = (bool) $finder->find('7z', null, array('C:\Program Files\7-Zip')); - $windows7z = ', ' . ($hasSystem7zip ? '7-Zip present' : '7-Zip not available'); - } else { - $windows7z = ''; - } + $hasSystem7zip = (bool) $finder->find('7z', null, array('C:\Program Files\7-Zip')); $io->write( 'zip: ' . (extension_loaded('zip') ? 'extension present' : 'extension not loaded') . ', ' . ($hasSystemUnzip ? 'unzip present' : 'unzip not available') - . $windows7z + . ', ' . ($hasSystem7zip ? '7-Zip present' : '7-Zip not available') ); return $this->exitCode; diff --git a/src/Composer/Downloader/ZipDownloader.php b/src/Composer/Downloader/ZipDownloader.php index 4475c5e8f..fd0b93a4a 100644 --- a/src/Composer/Downloader/ZipDownloader.php +++ b/src/Composer/Downloader/ZipDownloader.php @@ -46,6 +46,9 @@ class ZipDownloader extends ArchiveDownloader if ($cmd = $finder->find('unzip')) { self::$unzipCommands[] = array('unzip', ProcessExecutor::escape($cmd).' -qq %s -d %s'); } + if (!Platform::isWindows() && ($cmd = $finder->find('7z'))) { // 7z linux/macOS support is only used if unzip is not present + self::$unzipCommands[] = array('7z', ProcessExecutor::escape($cmd).' x -bb0 -y %s -o%s'); + } } if (null === self::$hasZipArchive) {