0

I made crt merge (part from < Product >):

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

But light failed with strange errors:

: error LGHT0204 : ICE30: The target file marked.js is installed in [CommonAppDataFolder] by two different components on an LFN system:

wix trying install all files in to root (CommonAppDataFolder) folder, ignoring folder structure. but if I delete merge code, setup compiled without errors. all files installed into rights directories. looks like "Merge" elements break folders structure. any idea how to fix? and how to find msm files for crt updates, for example msm for crt 2015 update 3?

kain64b
  • 2,258
  • 2
  • 15
  • 27

1 Answers1

0

vcredist_x64.exe: As stated before I would recommend you use the executables rather than the merge modules for this runtime, but I assume you are not allowed to do that - for some reason.

Cause: I suppose you should investigate what the exact problem really is, but ICE errors and warnings from merge modules is an all too common phenomenon, and usually you can't fix them (consistency errors between merge modules, as opposed to between your own setup components and the merge module - the latter being something you can fix). Many end up suppressing the error messages to allow their build process to operate "correctly". At the very least you should search your compiled MSI for marked.js and see how many occurrences there are, and where they are being installed.

Retargetable Merge Module: Some merge modules have re-targetable destination directories in them. I never use such merge modules if I can help it, so I am not quite up to speed with the details. Merge Element. And a rough idea from Github.com. If they are required, make sure they are set. Unfortunately I don't know if they are.

Suppress Error: I'll just send you to another answer, rather than trying to write up a whole lot about ICE suppression without much practical experience on my part: How do I suppress ICE errors from merge modules. Please check all answers in that link. Arnson is a WiX developer - not sure if his answer there needs updating or not - maybe the feature he describes now exists? The screen shot will show you how to do this suppression from within Visual Studio. Only suppress single ICE errors and warnings, don't disable them all.

Light.exe: If you do not use Visual Studio, then I believe the command line switch for light.exe is: -sice:<ICE> to achieve the same effect when compiling via the command line. Rough idea from github.com.


Some Links:

Stein Åsmul
  • 39,960
  • 25
  • 91
  • 164