[wix-users] VC redist merge module: 64-bit DLL copied to 32-bit Windows folder

Daan Nusman d.nusman at re-lion.com
Tue Sep 1 04:14:46 PDT 2015


Hi everyone,

 

I need to include the VS2015 C++ x64 runtime merge module into my project.
The install works without errors, and my own files are copied correctly,
however my app cannot start due to msvcp140.dll not being found. 

 

I've extracted an installer log, and it seems to claim to have installed the
files. Here's an example:

 

MSI (s) (BC:40) [11:56:18:667]: Executing op:
SetTargetFolder(Folder=C:\Program Files\RE-liON\RLaunch\)

MSI (s) (BC:40) [11:56:18:667]: Executing op:
SetSourceFolder(Folder=1\RE-liON\RLaunch\)

MSI (s) (BC:40) [11:56:18:667]: Executing op:
FileCopy(SourceName=RLaunch.exe,SourceCabKey=MainAppExe,DestName=RLaunch.exe
,Attributes=512,FileSize=315904,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,
Version=1.0.0.1,Language=1033,InstallMode=58982400,,,,,,,)

MSI (s) (BC:40) [11:56:18:667]: File: C:\Program
Files\RE-liON\RLaunch\RLaunch.exe;      To be installed; Won't patch;
No existing file

MSI (s) (BC:40) [11:56:18:667]: Source for file 'MainAppExe' is compressed

MSI (s) (BC:40) [11:56:18:683]: Executing op:
SetTargetFolder(Folder=C:\Windows\SysWOW64\)

MSI (s) (BC:40) [11:56:18:683]: Executing op:
SetSourceFolder(Folder=1\System64\)

MSI (s) (BC:40) [11:56:18:683]: Executing op:
FileCopy(SourceName=msvcp140.dll,SourceCabKey=msvcp140.dll.A38EBF59_3A35_375
9_B824_C9816882FA56,DestName=msvcp140.dll,Attributes=512,FileSize=635040,Per
Tick=65536,,VerifyMedia=1,,,,,CheckCRC=0,Version=14.0.23026.0,Language=1033,
InstallMode=58982400,,,,,,,)

MSI (s) (BC:40) [11:56:18:683]: File: msvcpm;       To be installed; Won't
patch;      No existing file

MSI (s) (BC:40) [11:56:18:683]: Source for file
'msvcp140.dll.A38EBF59_3A35_3759_B824_C9816882FA56' is compressed

 

So, it copies a msvcp140.dll to the SysWOW64 folder. Oops, that should be
target for 32 bit DLLs, this DLL should to go System32. I've confirmed
(using Dependency Walker) that the file is indeed in SysWO64 and is 64 bits.


 

I cannot figure out how to fix this. Am I missing some x64 flags?

 

Relevant wsx part:

 

<Directory Id="TARGETDIR" Name="SourceDir">  <!-- runtime-value of
TARGETDIR: C:\ -->

      <!-- Merge module for Visual C++ Runtime DLLs (msvcp140.dll)  -->

      <!-- Location usually C:\Program Files (x86)\Common Files\Merge
Modules -->

      <!-- You will need to update this when you update visual C++-->

      <Merge Id="CRT" Language="0"
SourceFile="$(env.CommonProgramFiles)\Merge
Modules\Microsoft_VC140_CRT_x64.msm" DiskId="1" />

 

The complete log: http://pastebin.com/JJwmzsFd   (copies seem to start
around line 620)

The complete source .wsx file: http://pastebin.com/jnnBUiBe 

 

Thanks,

Daan Nusman



More information about the wix-users mailing list