diff --git a/src/Composer/Package/Archiver/ZipArchiver.php b/src/Composer/Package/Archiver/ZipArchiver.php index 310addaea..87337558e 100644 --- a/src/Composer/Package/Archiver/ZipArchiver.php +++ b/src/Composer/Package/Archiver/ZipArchiver.php @@ -13,6 +13,7 @@ namespace Composer\Package\Archiver; use ZipArchive; +use Composer\Util\Filesystem; /** * @author Jan Prieser @@ -28,15 +29,17 @@ class ZipArchiver implements ArchiverInterface */ public function archive($sources, $target, $format, array $excludes = array()) { - $sources = realpath($sources); + $fs = new Filesystem(); + $sources = $fs->normalizePath($sources); + $zip = new ZipArchive(); $res = $zip->open($target, ZipArchive::CREATE); if ($res === true) { $files = new ArchivableFilesFinder($sources, $excludes); foreach ($files as $file) { /** @var $file \SplFileInfo */ - $filepath = $file->getPath()."/".$file->getFilename(); - $localname = str_replace($sources."/", '', $filepath); + $filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/'); + $localname = str_replace($sources.'/', '', $filepath); if ($file->isDir()) { $zip->addEmptyDir($localname); } else {