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

Phil Wilson phil.wilson at mvps.org
Tue Sep 1 11:36:57 PDT 2015


I'd check the Component table in the msm to be sure that it's got the 256
bit (64 bit) set in the attributes. Everything else seems ok at a quick
glance. 

Phil  

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of
Daan Nusman
Sent: Tuesday, September 01, 2015 4:15 AM
To: wix-users at lists.wixtoolset.org
Subject: [wix-users] VC redist merge module: 64-bit DLL copied to 32-bit
Windows folder

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


____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant
http://www.firegiant.com/




More information about the wix-users mailing list