|
Rob, I don’t think just filing a single
bug will make thing done for x64 build. There are several outstanding issues for
native x64 binaries. 1. To act as a native x64 binary (MSIL or
x64 native image), it should be compiled as .NET Framework 2.0 assembly. (supportedRuntime element in .config does
not generate 64-bit native images.) 2. mergemod.dll should be x64 native
binary if you really need it. But there are no x64 native binary
redistributable file at this time. Platform SDK only contains 32-bit version of
mergemod.dll. You, guys in Microsoft, may request for the native binaries. J 3. All custom action DLLs are generated as
x64 native binaries. MSI engine calls both 32-bit custom actions and 64-bit
custom actions in x64 packages. But 64-bit custom actions cannot be called in
32-bit MSI engine. 4. I don’t think VSIP support x64
native images. Maybe wix does not need to generate native images but .net
assemblies for VSIP. In that case, this doesn’t matter. 5. winterop.dll needs to be both x86 and
x64 native images, as it may be used in 32-bit assembly and 64-bit assembly. Anyhow, do we really need x64 binaries? Yes, we may need them, but not the whole
toolset. At first, there are some guys who need native wix custom action DLLs. I haven’t used custom action DLLs
shipped with WIX yet. So I don’t know if it is really necessary or not. I author device driver installation
packages and they require native custom action DLLs for x64. (I am not using
DIFx). Other than custom action DLLs, I do not
really see any needs for real x64 packages. Wix tools compiled only for .NET
2.0 will be sufficient to make use of native performance of x64 platforms, given
that those are compiled as MSIL (or AnyCPU, it’s default). But even if
you take this route, you need to supply native x64 mergemod.dll also. Interop’s
curse it is. It’s the decision of you and other
core developer’s decision whether it will support and how. P.S. FYI, I have successfully compiled
everything in x64 in my machine. But wix .net binaries are compiled in 1.1 mode
in the current build configuration. Other native ca DLLs are (scaexec.dll,
scasched.dll, winterop.dll, wixca.dll) are all x64 native images. As you may
anticipate, this simply does not work even after successful compilation. Winterop.dll
is now 64-bit DLL. But light.exe is 32-bit assembly. Light.exe cannot call any
functions in Winterop.dll. L So candle.exe works. But light.exe does not. Anyhow you need more
changes than those of Stevens. directories.include <!--
Library directories --> <!--
<property name="dir.platformsdk.lib.x86"
value="${path::combine(dir.platformsdk, 'Lib')}"
readonly="true" /> -->
<property name="dir.platformsdk.lib.x86"
value="${path::combine(dir.platformsdk, 'Lib\AMD64')}"
readonly="true" /> <!--
<property name="dir.vc8.lib.x86"
value="${path::combine(dir.vc8, 'lib')}" readonly="true"
/> --> <property name="dir.vc8.lib.x86" value="${path::combine(dir.vc8,
'lib\amd64')}" readonly="true" /> global.include <if
test="${x86}">
<property name="cl.defines" value="${cl.defines} -DWIN32
-D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -D_AMD64_ -D_AMD64_=1 " />
<!-- <property name="cl.defines" value="${cl.defines}
-DWIN32 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -D_X86_ -Di386=1
-D_X86_=1" /> --> </if> … <if test="${x86}"> <!-- <property
name="link.standardOptions" value="${link.standardOptions}
-machine:x86" /> <property
name="lib.standardOptions" value="${lib.standardOptions}
-machine:x86" /> --> <property
name="link.standardOptions" value="${link.standardOptions}
-machine:x64" /> <property
name="lib.standardOptions" value="${lib.standardOptions}
-machine:x64" /> </if> And you
need to call “%VS80DIR%\vc\bin\amd64\vcvarsamd64.bat” instead of
plain vcvars32.bat to set up the VC environment. From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Rob Mensching I don't think QTest is
working yet. I need to follow up with SF to get some of the bad files deleted
out of CVS. If the only problem you have left is QTest, I think you're
good to go. If you could open a
bug and provide all the details that you found necessary to build on x64, I'll
get those incorporated into the build scripts. Thanks! From:
[EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of Steven Chin My environment is a little different from Chesong’s. I had to change make.bat to override dir.platformsdk and
dir.vc8 nant.exe
-buildfile:"%ROOT%\wix.build" %ACTION% -D:dir.root=%ROOT%
-D:dir.platformsdk="C:\Program Files\Microsoft Platform SDK" -D:dir.vc8="C:\Program
Files\Microsoft Visual Studio 8\VC"
-D:COMPLUSBUILD="v2.0.50727.42" -D:flavor=%FLAVOR% %VERBOSE% then
in global.include I had to set my architecture and change my machine <if
test="${x86}">
<property name="cl.defines" value="${cl.defines} -D_AMD64_
-D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 " /> </if> <if
test="${x86}">
<property name="link.standardOptions"
value="${link.standardOptions} -machine:x64" />
<property name="lib.standardOptions"
value="${lib.standardOptions} -machine:x64" /> </if> I
was able to compile some programs but I eventually run into problems in QTest. S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\\Build\debug\qtest\tests.xsd)'
in 'S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix'
[csc] Output file
'S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\Release\debug\WixQTest.exe'
does not exist, rebuilding.
[csc] Compiling 2 files to
'S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\Release\debug\WixQTest.exe'."
[csc] Contents of c:\temp\tmpA41.tmp.
[csc] /fullpaths
[csc] /debug
[csc] /checked
[csc] "/warn:4"
[csc] /nologo
[csc] "/target:exe"
[csc] "/define:DEBUG"
[csc]
"/out:S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\Release\debug\WixQTest.exe"
[csc] /warnaserror
[csc] "/reference:S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\Release\debug\wix.dll"
[csc]
"/resource:S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\Build\debug\qtest\tests.xsd,Microsoft.Tools.WixQTest.Xsd.tests.xsd"
[csc] "S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\inc\wixver.cs"
[csc]
"S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\Build\debug\wixkey.cs"
[csc]
[csc] Starting 'c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe
(@"c:\temp\tmpA41.tmp")' in 'S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix'
[csc] error CS5001: Program
's:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\release\debug\WixQTest.exe'
does not have an entry point defined BUILD
FAILED - 2 non-fatal error(s), 2 warning(s) S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\src\qtest\qtest.build(47,6): External
Program Failed: c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe (return
code was 1): NAnt.Core.BuildException:
S:\sandbox\schin\workspaces\schin.3rdparty\tmw\wix\src\qtest\qtest.build(47,6): External
Program Failed: c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe (return
code was 1)
at NAnt.Core.Tasks.ExternalProgramBase.ExecuteTask()
at NAnt.DotNet.Tasks.CompilerBase.ExecuteTask()
at NAnt.Core.Task.Execute()
at NAnt.Core.Target.Execute()
at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies)
at NAnt.Core.Project.Execute()
at NAnt.Core.Project.Run() |
