msiextract creates `Windows/winsxs` with subdirectories with overlong names
My use case for msiextract
is repackaging the files from some installer into a plain tarball that can be used on a system where installing MSIs is disallowed.
When extracting on Windows such a tarball made on Linux from https://www.python.org/ftp/python/2.7.15/python-2.7.15.amd64.msi, I get this error message:
making directory: mkdir C:\Users\task_1538397498\python2\Windows\winsxs\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4:ulCRTx64: The directory name is invalid.
I assume this is because the path is too long. There is a number of such long paths, all under Windows/winsxs
:
Windows/winsxs
Windows/winsxs/Manifests
Windows/winsxs/Manifests/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e.cat
Windows/winsxs/Manifests/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e.manifest
Windows/winsxs/amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_3da38fdebd0e6822:ft--8ci7|ulpCRTx64
Windows/winsxs/amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_3da38fdebd0e6822:ft--8ci7|ulpCRTx64/9.0.30729.1.cat
Windows/winsxs/amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_3da38fdebd0e6822:ft--8ci7|ulpCRTx64/9.0.30729.1.policy
Windows/winsxs/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4:ulCRTx64
Windows/winsxs/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4:ulCRTx64/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e.cat
Windows/winsxs/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4:ulCRTx64/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e.manifest
Windows/winsxs/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4:ulCRTx64/msvcm90.dll
Windows/winsxs/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4:ulCRTx64/msvcr90.dll
Windows/winsxs/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4:ulCRTx64/msvcp90.dll
Windows/winsxs/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e:dlCRTx64
Windows/winsxs/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e:dlCRTx64/msvcm90.dll
Windows/winsxs/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e:dlCRTx64/msvcr90.dll
Windows/winsxs/amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e:dlCRTx64/msvcp90.dll
Windows/winsxs/Policies
Windows/winsxs/Policies/amd64_policy.9.0.Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_x-ww_16f3e195:3m7n83mb|dlpCRTx64
Windows/winsxs/Policies/amd64_policy.9.0.Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_x-ww_16f3e195:3m7n83mb|dlpCRTx64/9.0.30729.1.cat
Windows/winsxs/Policies/amd64_policy.9.0.Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_x-ww_16f3e195:3m7n83mb|dlpCRTx64/9.0.30729.1.policy
However Windows/winsxs
is not created at all when running msiexec /i python-2.7.15.amd64.msi /qn TARGETDIR=py2
under wine, instead of msiextract
.
According to https://www.thewindowsclub.com/winsxs-folder-windows-7-8, WinSxS sounds like something managed by Windows itself, rather than something installers should write into. Would it be "more correct" for msiextract to skip those files entirely?