diff --git a/typo3/sysext/core/Classes/Composer/PackageArtifactBuilder.php b/typo3/sysext/core/Classes/Composer/PackageArtifactBuilder.php
index 8e8bb60a8f8d4b4dde1544fe7cd5b2fa6c7094e9..db57f312fde1b91baea6094db7822942f74c362f 100644
--- a/typo3/sysext/core/Classes/Composer/PackageArtifactBuilder.php
+++ b/typo3/sysext/core/Classes/Composer/PackageArtifactBuilder.php
@@ -21,6 +21,7 @@ use Composer\Package\PackageInterface;
 use Composer\Repository\PlatformRepository;
 use Composer\Script\Event;
 use Composer\Util\Filesystem;
+use Composer\Util\Platform;
 use Symfony\Component\Finder\Finder;
 use TYPO3\CMS\Composer\Plugin\Config;
 use TYPO3\CMS\Composer\Plugin\Core\InstallerScript;
@@ -33,6 +34,7 @@ use TYPO3\CMS\Core\Package\Exception\InvalidPackageStateException;
 use TYPO3\CMS\Core\Package\Package;
 use TYPO3\CMS\Core\Package\PackageManager;
 use TYPO3\CMS\Core\Service\DependencyOrderingService;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\PathUtility;
 
 /**
@@ -167,6 +169,7 @@ class PackageArtifactBuilder extends PackageManager implements InstallerScript
             function (array $packageAndPath) use ($rootPackage, &$usedExtensionKeys) {
                 [$composerPackage, $packagePath] = $packageAndPath;
                 $packageName = $composerPackage->getName();
+                $packagePath = GeneralUtility::fixWindowsFilePath($packagePath);
                 try {
                     $extensionKey = ExtensionKeyResolver::resolve($composerPackage);
                 } catch (\Throwable $e) {
@@ -277,7 +280,9 @@ class PackageArtifactBuilder extends PackageManager implements InstallerScript
             [$relativePrefix] = explode('Resources/Public', $relativePath);
             $publicResourcesPath = $fileSystem->normalizePath($this->config->get('web-dir') . '/_assets/' . md5($relativePrefix));
             $fileSystem->ensureDirectoryExists(dirname($publicResourcesPath));
-            if (!$fileSystem->isSymlinkedDirectory($publicResourcesPath)) {
+            if (Platform::isWindows() && !$fileSystem->isJunction($publicResourcesPath)) {
+                $fileSystem->junction($fileSystemResourcesPath, $publicResourcesPath);
+            } elseif (!$fileSystem->isSymlinkedDirectory($publicResourcesPath)) {
                 $fileSystem->relativeSymlink($fileSystemResourcesPath, $publicResourcesPath);
             }
         }