Index: ext/DifxAppExtension/wixext/DifxAppCompiler.cs
===================================================================
RCS file: /cvsroot/wix/wix/src/ext/DifxAppExtension/wixext/DifxAppCompiler.cs,v
retrieving revision 1.3
diff -u -r1.3 DifxAppCompiler.cs
--- ext/DifxAppExtension/wixext/DifxAppCompiler.cs	2 Aug 2006 11:24:41 -0000	1.3
+++ ext/DifxAppExtension/wixext/DifxAppCompiler.cs	8 Aug 2008 23:02:09 -0000
@@ -72,11 +72,13 @@
                 case "Component":
                     string componentId = contextValues[0];
                     string directoryId = contextValues[1];
+                    
+                    bool componentWin64 = Boolean.Parse(contextValues[2]);
 
                     switch (element.LocalName)
                     {
                         case "Driver":
-                            this.ParseDriverElement(element, componentId);
+                            this.ParseDriverElement(element, componentId, componentWin64);
                             break;
                         default:
                             this.Core.UnexpectedElement(parentElement, element);
@@ -94,7 +96,7 @@
         /// </summary>
         /// <param name="node">Element to parse.</param>
         /// <param name="componentId">Identifier for parent component.</param>
-        private void ParseDriverElement(XmlNode node, string componentId)
+        private void ParseDriverElement(XmlNode node, string componentId, bool win64)
         {
             SourceLineNumberCollection sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
             int attributes = 0;
@@ -166,7 +168,24 @@
                     row[2] = sequence;
                 }
 
-                this.Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "MsiProcessDrivers");
+                if (win64)
+                {
+                    if (this.Core.CurrentPlatform == Platform.IA64)
+                    {
+                        // Ensure MsiProcessDrivers (ia64) is referenced, to handle this ia64 component member
+                        this.Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "MsiProcessDrivers_ia64");
+                    }
+                    else
+                    {
+                        // Ensure MsiProcessDrivers (x64) is referenced, to handle this 64-bit, non-ia64 component member
+                        this.Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "MsiProcessDrivers_x64");
+                    }
+                }
+                else
+                {
+                    // Ensure MsiProcessDrivers (x86) is referenced, to handle this x86 component member
+                    this.Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "MsiProcessDrivers");
+                }
             }
         }
     }
Index: ext/DifxAppExtension/wixlib/DIFxAppExtension.wixproj
===================================================================
RCS file: /cvsroot/wix/wix/src/ext/DifxAppExtension/wixlib/DIFxAppExtension.wixproj,v
retrieving revision 1.1
diff -u -r1.1 DIFxAppExtension.wixproj
--- ext/DifxAppExtension/wixlib/DIFxAppExtension.wixproj	30 May 2008 07:23:37 -0000	1.1
+++ ext/DifxAppExtension/wixlib/DIFxAppExtension.wixproj	8 Aug 2008 22:35:47 -0000
@@ -14,6 +14,11 @@
       $(DefineConstants);
       DIFxAppDll=$(ProjectDir)x86\DIFxApp.dll;
       DIFxAppADll=$(ProjectDir)x86\DIFxAppA.dll;
+      DIFxApp_x64Dll=$(ProjectDir)x64\DIFxApp.dll;
+      DIFxAppA_x64Dll=$(ProjectDir)x64\DIFxAppA.dll;
+      DIFxApp_iaDll=$(ProjectDir)ia64\DIFxApp.dll;
+      DIFxAppA_iaDll=$(ProjectDir)ia64\DIFxAppA.dll;
+      BuildIA64=$(BuildIA64)
     </DefineConstants>
   </PropertyGroup>
   <ItemGroup>
Index: ext/DifxAppExtension/wixlib/DIFxAppExtension.wxs
===================================================================
RCS file: /cvsroot/wix/wix/src/ext/DifxAppExtension/wixlib/DIFxAppExtension.wxs,v
retrieving revision 1.1
diff -u -r1.1 DIFxAppExtension.wxs
--- ext/DifxAppExtension/wixlib/DIFxAppExtension.wxs	30 May 2008 07:23:37 -0000	1.1
+++ ext/DifxAppExtension/wixlib/DIFxAppExtension.wxs	11 Aug 2008 15:43:19 -0000
@@ -8,7 +8,7 @@
           <Custom Action='MsiProcessDrivers'   After='InstallFiles'/>
           <Custom Action='MsiCleanupOnSuccess' After='InstallFinalize'/>
       </InstallExecuteSequence>
-      
+     
       <Binary Id='DIFxApp.dll'  SourceFile='$(var.DIFxAppDll)'/>
       <Binary Id='DIFxAppA.dll' SourceFile='$(var.DIFxAppADll)'/>
 
@@ -20,4 +20,44 @@
    
    </Fragment>
 
+   <Fragment Id='DIFxAppCustomActions_x64'>
+
+      <InstallExecuteSequence>
+          <Custom Action='MsiProcessDrivers_x64'   After='InstallFiles'/>
+          <Custom Action='MsiCleanupOnSuccess_x64' After='InstallFinalize'/>
+      </InstallExecuteSequence>
+
+      <Binary Id='DIFxApp_x64.dll'  SourceFile='$(var.DIFxApp_x64Dll)'/>
+      <Binary Id='DIFxAppA_x64.dll' SourceFile='$(var.DIFxAppA_x64Dll)'/>
+
+      <CustomAction Id='MsiProcessDrivers_x64'   BinaryKey='DIFxApp_x64.dll'  DllEntry='ProcessDriverPackages'   SuppressModularization='yes' Execute='immediate' />
+      <CustomAction Id='MsiInstallDrivers'       BinaryKey='DIFxAppA_x64.dll' DllEntry='InstallDriverPackages'   SuppressModularization='yes' Execute='deferred' Impersonate='no' />
+      <CustomAction Id='MsiUninstallDrivers'     BinaryKey='DIFxAppA_x64.dll' DllEntry='UninstallDriverPackages' SuppressModularization='yes' Execute='deferred' Impersonate='no' />
+      <CustomAction Id='MsiRollbackInstall'      BinaryKey='DIFxAppA_x64.dll' DllEntry='RollbackInstall'         SuppressModularization='yes' Execute='rollback' Impersonate='no' />
+      <CustomAction Id='MsiCleanupOnSuccess_x64' BinaryKey='DIFxApp_x64.dll'  DllEntry='CleanupOnSuccess'        SuppressModularization='yes' Execute='immediate' />
+
+   </Fragment>
+
+   <?if $(var.BuildIA64)=true ?>
+
+   <Fragment Id='DIFxAppCustomActions_ia64'>
+
+      <InstallExecuteSequence>
+          <Custom Action='MsiProcessDrivers_ia64'   After='InstallFiles'/>
+          <Custom Action='MsiCleanupOnSuccess_ia64' After='InstallFinalize'/>
+      </InstallExecuteSequence>
+
+      <Binary Id='DIFxApp_ia64.dll'  SourceFile='$(var.DIFxApp_ia64Dll)'/>
+      <Binary Id='DIFxAppA_ia64.dll' SourceFile='$(var.DIFxAppA_ia64Dll)'/>
+
+      <CustomAction Id='MsiProcessDrivers_ia64'   BinaryKey='DIFxApp_ia64.dll'  DllEntry='ProcessDriverPackages'   SuppressModularization='yes' Execute='immediate' />
+      <CustomAction Id='MsiInstallDrivers'        BinaryKey='DIFxAppA_ia64.dll' DllEntry='InstallDriverPackages'   SuppressModularization='yes' Execute='deferred' Impersonate='no' />
+      <CustomAction Id='MsiUninstallDrivers'      BinaryKey='DIFxAppA_ia64.dll' DllEntry='UninstallDriverPackages' SuppressModularization='yes' Execute='deferred' Impersonate='no' />
+      <CustomAction Id='MsiRollbackInstall'       BinaryKey='DIFxAppA_ia64.dll' DllEntry='RollbackInstall'         SuppressModularization='yes' Execute='rollback' Impersonate='no' />
+      <CustomAction Id='MsiCleanupOnSuccess_ia64' BinaryKey='DIFxApp_ia64.dll'  DllEntry='CleanupOnSuccess'        SuppressModularization='yes' Execute='immediate' />
+
+    </Fragment>
+  
+  <?endif?>
+
 </Wix>
Index: wix/Compiler.cs
===================================================================
RCS file: /cvsroot/wix/wix/src/wix/Compiler.cs,v
retrieving revision 1.79
diff -u -r1.79 Compiler.cs
--- wix/Compiler.cs	1 Aug 2008 06:52:40 -0000	1.79
+++ wix/Compiler.cs	8 Aug 2008 22:17:04 -0000
@@ -2459,7 +2459,7 @@
                     }
                     else
                     {
-                        this.core.ParseExtensionElement(sourceLineNumbers, (XmlElement)node, (XmlElement)child, id, directoryId);
+                        this.core.ParseExtensionElement(sourceLineNumbers, (XmlElement)node, (XmlElement)child, id, directoryId, win64.ToString());
                     }
                 }
             }

