You're looking for something defined at build time. Try $(env.ProgramFiles).

Windows defines the ProgramFiles environment variable to the location of the
Program Files folder.

I'm not guaranteeing this will work as I don't have an x64 system and don't
know whether ProgramFiles is defined differently for a 64-bit versus 32-bit
process. I _think_ that since the WiX toolset is compiled with .NET 1.1, all
the programs will run in 32-bit processes.

Personally I prefer to put all my dependencies under my source tree and
check them into source control so I can be certain that all builds are fully
reproducible.

-- 
Mike Dimmick

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Geoff Finger
Sent: 22 May 2007 23:23
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Allowing sources from either x64 or x86

I've got a rather simple question that is probably due to some obvious
in hindsight error, but I'm totally stymied by it and haven't had any
luck searching for a solution.

I just recently switched from an x86 machine to an x64 machine running
XP x64. I suddenly find that some of the installers I've written don't
compile because they're looking for files in "Program Files" rather
than "Program Files (x86)". In particular the Microsoft VC80 CRT and
MFC merge modules in Program Files (x86)\Common Files\Merge Modules
are being problematic.

I thought for starters I could try using ProgramFilesFolder to see if
that would resolve properly, but I can't get it to work correctly.

I've got the following setup in the relevant wxs file:

<?if ($(var.PLATFORM) = "Win32")?>
  <?define PROGRAMFILESFOLDER = "ProgramFilesFolder"?>

                        <Directory Id="$(var.PROGRAMFILESFOLDER)"
Name="PFiles">


So at first I thought it'd try

<Merge Id="CRT" Language="0" src="$(var.PROGRAMFILESFOLDER)\Common
Files\Merge Modules\Microsoft_VC80_CRT_x86.msm"
             DiskId="1" FileCompression="yes" />

However that results in the error:

Error   25      error LGHT0100 : File of type 'Module' with name
'ProgramFilesFolder\Common Files\Merge
Modules\Microsoft_VC80_CRT_x86.msm' could not be found. light.exe

So it's getting resolved to ProgramFilesFolder but not getting any
further. I tried [ProgramFilesFolder] instead, but that didn't work
either. Is there some other variable I should be using or am I going
about this in entirely the wrong way?

Thanks!

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to