The SxS Merge Modules from MSFT that I have used tend to have their own
fully-intact directory structures and don't use any of the packages
directory tree for anything.

If you look in the Microsoft_VC90_CRT_x86_x64.msm file's Directory table,
you will see that the only child directory of the required TARGETDIR
directory is
WindowsFolder.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_8F48_
1849E9DBC229 (in the version of that file on my hard drive), which will
(when added to my MSI via Mergemod.dll which light.exe uses) be set to use
the predefined variable "WindowsFolder". All other directories in the tree
descend from that WindowsFolder location.

Searching the entire MSM file for "TARGETDIR" further reveals that the only
place that directory is referenced is the Directory table. Thus, this MSM
doesn't make any use of the directory you pass to it via the Merge element's
parent.

What happens, though, with EVERY merge module, is that the merge module's
TARGETDIR directory, which must be the "root" of its directory tree, is the
directory you supply as the parent of the Merge element. As a result, the
payload_ul.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_8F48_184
9E9DBC229 directory will look to ICE80 as something akin to "C:\Program
Files\X\Y\bin\Windows\winsxs\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.3
0729.4148_none_08e3747fa83e48bc", which is clearly a 64-bit directory, when
what the real result will be is
"C:\Windows\winsxs\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_
none_08e3747fa83e48bc", which 32-bit code can see without any redirections
going on, allowing the use of 32-bit components.

See this page for more details about Merge Module directory authoring:
http://msdn.microsoft.com/en-us/library/aa367787(VS.85).aspx


The "workaround" is to place the MSFT VisualStudio runtime library Merge
Modules under your MSI's "TARGETDIR" directory instead of somewhere under
its installation directory.

Thus:

    <DirectoryRef Id="TARGETDIR">
      <Merge Id="VC90CRTModule" Language="1033"
SourceFile="$(env.CommonProgramFiles)\Merge
Modules\Microsoft_VC90_CRT_x86_x64.msm" DiskId='1' />
      <Merge Id="POLICY90VC90CRTModule" Language="1033"
SourceFile="$(env.CommonProgramFiles)\Merge
Modules\policy_9_0_Microsoft_VC90_CRT_x86_x64.msm" DiskId='1' />
      <Merge Id="VC90MFCModule" Language="1033"
SourceFile="$(env.CommonProgramFiles)\Merge
Modules\Microsoft_VC90_MFC_x86_x64.msm" DiskId='1' />
      <Merge Id="POLICY90VC90MFCModule" Language="1033"
SourceFile="$(env.CommonProgramFiles)\Merge
Modules\policy_9_0_Microsoft_VC90_MFC_x86_x64.msm" DiskId='1' />
    </DirectoryRef>

Note that you have to look at each and every MSM to see what directory it
should be placed under, and every time you accept an updated MSM you should
re-examine its directory usages to ensure that no directories in the MSM
really depend on the location of TARGETDIR.

-----Original Message-----
From: tsk [mailto:thomas.kr...@mecadtron.de] 
Sent: Monday, October 19, 2009 7:26 AM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] LGHT0204 : ICE80 error


Blair-2 (via Nabble) schrieb:
> Two questions:
> 1) What is the ICE80 message?
> 2) What is the commandline to candle?
> 

1) (wrapped...)
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
uplevel.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_8F48_1849E9
DBC229 
uses 64BitDirectory p
ayload_ul.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_8F48_1849
E9DBC229
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
downlevel_payload.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_8
F48_1849E9DBC229 
uses 64BitD
irectory 
payload.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_8F48_1849E9
DBC229
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
downlevel_manifest.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_
8F48_1849E9DBC229 
uses 64Bit
Directory 
WinSxsManifests.30729.4148.Microsoft_VC90_CRT_x64.QFE.DD7E30AD_4555_3131_8F4
8_1849E9DBC229
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
uplevel.30729.4148.policy_9_0_Microsoft_VC90_CRT_x64.QFE.F88F7F82_F6E0_309C_
981C_800644564D24 
uses 64Bit
Directory 
payload_ul.30729.4148.policy_9_0_Microsoft_VC90_CRT_x64.QFE.F88F7F82_F6E0_30
9C_981C_800644564D24
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
downlevel_manifest.30729.4148.policy_9_0_Microsoft_VC90_CRT_x64.QFE.F88F7F82
_F6E0_309C_981C_800644564D24
  uses 64BitDirectory 
policydir.30729.4148.policy_9_0_Microsoft_VC90_CRT_x64.QFE.F88F7F82_F6E0_309
C_981C_800644564D24
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
uplevel.30729.4148.Microsoft_VC90_MFC_x64.QFE.1D1BABF3_B608_379B_8FD1_BDA1F6
098DD6 
uses 64BitDirectory p
ayload_ul.30729.4148.Microsoft_VC90_MFC_x64.QFE.1D1BABF3_B608_379B_8FD1_BDA1
F6098DD6
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
downlevel_payload.30729.4148.Microsoft_VC90_MFC_x64.QFE.1D1BABF3_B608_379B_8
FD1_BDA1F6098DD6 
uses 64BitD
irectory 
payload.30729.4148.Microsoft_VC90_MFC_x64.QFE.1D1BABF3_B608_379B_8FD1_BDA1F6
098DD6
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
downlevel_manifest.30729.4148.Microsoft_VC90_MFC_x64.QFE.1D1BABF3_B608_379B_
8FD1_BDA1F6098DD6 
uses 64Bit
Directory 
WinSxsManifests.30729.4148.Microsoft_VC90_MFC_x64.QFE.1D1BABF3_B608_379B_8FD
1_BDA1F6098DD6
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
uplevel.30729.4148.policy_9_0_Microsoft_VC90_MFC_x64.QFE.C8ECA3D5_581C_3816_
B0A1_3556BB7418CE 
uses 64Bit
Directory 
payload_ul.30729.4148.policy_9_0_Microsoft_VC90_MFC_x64.QFE.C8ECA3D5_581C_38
16_B0A1_3556BB7418CE
light.exe : error LGHT0204 : ICE80: This 32BitComponent 
downlevel_manifest.30729.4148.policy_9_0_Microsoft_VC90_MFC_x64.QFE.C8ECA3D5
_581C_3816_B0A1_3556BB7418CE
  uses 64BitDirectory 
policydir.30729.4148.policy_9_0_Microsoft_VC90_MFC_x64.QFE.C8ECA3D5_581C_381
6_B0A1_3556BB7418CE


2)
Nothing fancy:
candle test.wxs
light.exe -sw1055 -sw1056 -sw1076 -out test.msi test.wixobj -ext 
WixUIExtension

Thomas

-- 
View this message in context:
http://n2.nabble.com/LGHT0204-ICE80-error-tp3849029p3849352.html
Sent from the wix-users mailing list archive at Nabble.com.
----------------------------------------------------------------------------
--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to