WIX merge c++ runtime

不打扰是莪最后的温柔 提交于 2019-12-28 06:52:27

问题


I have merged msm for vs 2015 crt:

<DirectoryRef Id="TARGETDIR" >
<Merge Id = "Microsoft_VC140_CRT_x64.msm" FileCompression = "yes" Language = "1033" SourceFile = "..\\..\\..\\..\\..\\..\\..\\external\\tools\\systemsetups\\merge_modules\\Microsoft_VC140_CRT_x64.msm" DiskId = "1" />"
</DirectoryRef>
<Feature>
<Feature Id="Complete" Title="Complete" Absent="allow" Level="1">
...
<MergeRef Id="Microsoft_VC140_CRT_x64.msm"/>
...
</Feature> 

but I still receiving:

---------------------------
MyApp.exe - System Error
---------------------------
The program can't start because mfc140u.dll is missing from your computer. Try reinstalling the program to fix this problem. 
---------------------------
OK   
---------------------------

Any ideas how to merge it properly?


回答1:


It seems Microsoft recommends you use one of the redist executables (vcredist_x86.exe, vcredist_x64.exe) instead of the merge modules (see towards bottom) these days since the 2015 versions of the runtimes are more complicated than before and the merge modules are basically insufficient: "There will not be a merge module for the Universal CRT".

This is fully explained by Bob Arnson in this answer: Redistributables for deploying C++ exe developed with Visual Studio 2015 on Windows 7 (must read link - it is the answer, I just added this one to throw in some further links as well).

Also, I don't have the list of merge modules in front of me on this Linux box, but perhaps there is an x86 version that you need - you are installing the x64 version? Just checking - these bitness issues are driving us all crazy.


Some Links:

  • Redistributing Visual C++ Files
  • Walkthrough: Deploying a Visual C++ Application By Using the Visual C++ Redistributable Package
  • Redistributing Components By Using Merge Modules


来源:https://stackoverflow.com/questions/51421050/wix-merge-c-runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!