[ofw] [ANNOUNCE] Wix 2.0 to Wix 3.0 conversion coming.

Smith, Stan stan.smith at intel.com
Mon Nov 16 15:18:40 PST 2009


Currently the WinOF installer is based on the WIX (Windows Installer XML) 2.0 specification.
WIX developers are at version 3.5, with a stable version released at WIX version 3.0.
Before WIX 2.0 is deprecated, I'd like to move the WinOF installer forward to WIX 3.0 to take advantage of new functionality.
The WIX 3.0 src base is more streamlined (easier to use, less to code) and provides additional functionality. More CustomActions can be replaced with WIX code thus further simplifying the WinOF installer implementation.

Overall the WIX 3.0 environment is more flexible in custom install screen layouts.

OFA license file no longer has to reside in the folder where the WOF.wxs file resides; file copy/delete operations are removed.

Compressed attribute becomes a Product attribute instead of a file attribute; less to specify for each file.

OpenSM service is started via WIX code instead of a CustomAction calling 'sc.exe'.


If anyone has serious concerns please contact me ASAP.
Commit timeframe is Friday 11-20-09.


The WIX 3.0 installers have been tested (installed, verified, uninstalled and checked for leftovers) on x86, x64 and ia64 architectures for all Windows variants: XP32, XP64, Server 2003, Server 2008, Server 20008 R2, Windows 7 with no observed problems.

Thanks,

Stan.

More Details:

The bulk of the WIX src includes WIX\common\*.inc diffs consist of the removal of NAME="xxx" as WIX 3.0 will automatically generate the 8.3 short name from the LONGNAME="xxx" argument.

WIX source file mods are of the nature

--- a/WinOF/WIX/wlh/x64/wof.wxs Mon Nov 16 13:06:38 2009
+++ b/WinOF/WIX/wlh/x64/wof.wxs Wed Oct 28 09:37:44 2009
@@ -8,7 +8,8 @@
 <?define OS=wlh ?>
 <?include ..\..\common\WinOF_cfg.inc ?>

-<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
+<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
+     xmlns:DifxApp='http://schemas.microsoft.com/wix/DifxAppExtension' >
   <Product
     Name="Windows OpenFabrics InfiniBand $(var.WOFREL) $(var.ARCHP)"
     Version="$(var.WOFRELNUM)"
@@ -17,13 +18,13 @@
     Language="1033" Codepage="1252"
     Manufacturer="Open Fabrics Alliance Windows">

-    <Package Id="????????-????-????-????-????????????"
+    <Package Id="*"
      Keywords="Installer, InfiniBand, WinOF, OpenFabrics"
      InstallPrivileges='elevated'
      Description="WinOF Installer"
      Comments="Windows OpenFabrics Alliance InfiniBand stack"
      Manufacturer="OpenFabrics Alliance" InstallerVersion="200"
-     Platforms="$(var.ARCHP)" Languages="1033"
+     Platform="$(var.ARCHP)" Languages="1033"
      Compressed="yes" SummaryCodepage="1252" />

     <Condition Message="Administrator required to install [ProductName].">
@@ -46,11 +47,9 @@
     <?include ..\..\common\requirements.inc ?>

     <Directory Id="TARGETDIR" Name="SourceDir">
-      <Directory Id="ProgramMenuFolder" Name="PMenu" LongName="Programs">
-        <Directory Id="ProgramMenuDir" LongName="Windows OpenFabrics"
-                   Name="WinOF" />
-      </Directory>
-      <Directory Id="DesktopFolder" Name="Desktop" />
+
+      <?include ..\..\common\PgmMenuShortcuts.inc ?>
+
       <Directory Id="ProgramFiles64Folder" Name="PFiles">
         <Directory Id="INSTALLDIR" Name="WinOF">

@@ -70,12 +69,12 @@

           <Component Id="WinsockDirect"
                      Guid="516A61B4-EBC2-41CE-8D18-81BADA4649D4">
-            <File Id="installsp.exe" Compressed="yes" DiskId="1"
-                     LongName="installsp.exe" Name="INSTALL.EXE"
-                     Source="..\bin\net\$(var.ARCH)\installsp.exe" />
+            <File Id="installsp.exe" DiskId="1"
+                  Name="installsp.exe"
+                  Source="..\bin\net\$(var.ARCH)\installsp.exe" />
           </Component>

-          <Component Id="cNetworkDirect"
+          <Component Id="cNetworkDirect" KeyPath="yes"
                      Guid="F3BA9E15-E532-4b8c-BB0C-E8C1CC0EEF3F">
           </Component>

@@ -86,7 +85,7 @@
         </Directory>
       </Directory>

-      <Directory Id="WindowsVolume">
+      <Directory Id="WINROOT" Name="WinRoot">

         <!-- copy DAT header files to
            %SystemDrive%\DAT\v1-1\DAT
@@ -106,10 +105,6 @@
     </Directory> <!-- End TARGETDIR -->

     <?include ..\..\common\arp.inc ?>
-
-    <!--
-       Features - Level=1 == Typical, no WSD on XP or SRP on 32-bit XP
-     -->

     <?include ..\..\common\std_features.inc ?>


Wix\Common\Makefile.inc mods:

--- C:/Documents and Settings/scsmith/Local Settings/Temp/Makefile.inc-revBASE.svn000.tmp.inc   Mon Nov 16 15:01:18 2009
+++ C:/Documents and Settings/scsmith/My Documents/openIB-windows/SVN/gen1/trunk/WinOF/WIX/common/Makefile.inc  Mon Nov 16 10:34:37 2009
@@ -6,52 +6,46 @@
 # S == WIX src & obj filename: .wxs & .wixobj
 # A == arch {x86,ia64,x64}
 # P == Installer (.msi) filename
-# optional: DFXP == Path to arch specific DifxApp files setup in makebin.bat
-
-#WIX 2.0
-L=..\..\WIX_tools\wix-2.0.5805.0-binaries
-
-WIX_UI="$(L)\wixui.wixlib" -loc "$(L)\WixUI_en-us.wxl"
-
-DFX=DIFxApp.wixlib
-
-# Since makebin.bat knows correct WDK version, it copies the DIFX APP files
-# to the bin\ tree; eliminates Makefiles having to know about WDK versions.
+# optional: DFXP == Path to DifxApp files setup in makebin.bat

 !ifndef DFXP
 DFXP=..\bin\Misc\$(A)
 !endif

+# WIX 3.0
+L=..\..\WIX_tools\wix3.0.5419.0-binaries
+
+DFX=difxapp_$(A).wixlib
+
+# Since makebin.bat knows correct WDK version, makebin copies the DIFX APP files
+# to the bin\Misc\arch tree; this eliminates Makefiles having to know about
+# WDK versions.  see DFXP=..\bin\Misc\arch

 full: clean $(P).msi

 clean:
        @del /q $(S).wixobj 2>nul
+       @del /q $(P).wixpdb 2>nul
        @del /q $(P).msi 2>nul
-       @del /q license.rtf 2>nul
        @del /q/f DIFxA*.* 2>nul

 MySetup: $(P).msi

-license.rtf: ..\..\license.rtf
-       @copy ..\..\license.rtf .\license.rtf
-
 # .dlls need to be in the current folder
-
-$(DFX) : $(DFXP)\$(DFX) $(DFXP)\DIFxApp.dll $(DFXP)\DIFxAppA.dll
+$(DFX) : $(L)\$(DFX) $(DFXP)\DIFxApp.dll $(DFXP)\DIFxAppA.dll
        @copy /B/Y $(DFXP)\DIFxApp.dll .
        @copy /B/Y $(DFXP)\DIFxAppA.dll .
-       @copy /B/Y $(DFXP)\$(DFX) .
+       @copy /B/Y $(L)\$(DFX) .

 $(S).wixobj: $(S).wxs

-$(P).msi: $(S).wixobj license.rtf $(DFX)
+$(P).msi: $(S).wixobj $(DFX)
        @echo --
        @echo Building $(P).msi
-       $(L)\light.exe /nologo -out $(P).msi $(S).wixobj $(DFX) $(WIX_UI)
+       $(L)\light.exe -nologo -ext WixUiExtension -ext WixDifxAppExtension -out $(P).msi $(S).wixobj $(DFX)
        @del /q $(S).wixobj 2>nul
-       @del /q license.rtf 2>nul
        @del /q/f DIFxA*.* 2>nul
+       @del /q $(P).wixpdb 2>nul


 ###################
@@ -60,6 +54,5 @@
 .SUFFIXES: .wxs .wixobj

 .wxs.wixobj::
-       @$(L)\candle.exe -nologo -trace -v $<
-
+       @$(L)\candle.exe -nologo -arch $(A) -ext WixDifxAppExtension  -trace -v $<






More information about the ofw mailing list