KFW: BUG: WIX: Improve Usability of multiple architecture MSI installations, remove...
authorJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 12 Oct 2007 19:01:38 +0000 (19:01 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 12 Oct 2007 19:01:38 +0000 (19:01 +0000)
The WiX installation package suffered from several problems:

 * The Beta ID was not being included in the package name.
   Fixed this by swapping the priority of "Release" and "Beta".
   "Beta" is an official release that has a beta value.
   A non-release has a datestamp as part of the package name.

 * There were duplicate GUID values being used for registry components.
   This would prevent proper removal of the components on uninstall.

 * 64-bit Installers were being constructed with the 32-bit installer
   schema.  This prevented side-by-side installation of the 64-bit and
   32-bit versions.  This also permitted 64-bit installers to be
   installed on 32-bit systems.

 * The 64-bit and 32-bit installers had the same package name.
   64-bit and 32-bit are now identified in the package name.

 * 64-bit files were being installed to the WOW64 environment.

ticket: new
component: windows
tags: pullup
target_version: 1.6.3

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20117 dc483132-0cff-0310-8789-dd5450dbe970

src/windows/installer/wix/config.wxi
src/windows/installer/wix/files.wxi
src/windows/installer/wix/kfw.wxs
src/windows/installer/wix/lang/config_1033.wxi
src/windows/installer/wix/lang/strings_1033.wxl
src/windows/installer/wix/platform.wxi

index 734e16c08e8ae57c18969bafc760cbe070dc262d..e1f48a8b1433b5fd2d3bf03f1890ab8cb7427ec5 100644 (file)
         <?define InstallerVersion="110"?>
         <?define Platform="Intel"?>
         <?define Win64="no"?>
+        <?define BinDir="$(var.TargetDir)bin\i386\"?>
+        <?define LibDir="$(var.TargetDir)lib\i386\"?>
     <?elseif $(env.CPU) = "AMD64"?>
         <?define InstallerVersion="200"?>
         <?define Platform="x64"?>
         <?define Win64="yes"?>
+        <?define BinDir="$(var.TargetDir)bin\amd64\"?>
+        <?define LibDir="$(var.TargetDir)lib\amd64\"?>
     <?else?>
         <?error Unknown build type?>
     <?endif?>
     
     <?define KfwRegRoot="SOFTWARE\MIT\Kerberos"?>
 
-    <?if $(env.CPU) = "i386"?>    
-            <?define BinDir="$(var.TargetDir)bin\i386\"?>
-            <?define LibDir="$(var.TargetDir)lib\i386\"?>
-    <?else?>
-            <?define BinDir="$(var.TargetDir)bin\amd64\"?>
-            <?define LibDir="$(var.TargetDir)lib\amd64\"?>
-    <?endif?>
     <?define DocDir="$(var.TargetDir)doc\"?>
     <?define IncDir="$(var.TargetDir)inc\"?>
     <?define InstallDir="$(var.TargetDir)install\"?>
index 360033f06c67476ae56cb3270cbbd0047d54f70f..4604b495177568fc825bb22db119bc93da31ccce 100644 (file)
@@ -26,7 +26,7 @@
   -->
 <Include xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
 <Directory Id="TARGETDIR" Name="SourceDir">
-    <Directory Id="SystemFolder" SourceName="System">
+    <Directory Id="$(var.PISystemFolder)" SourceName="System">
         <Component Win64="$(var.Win64)" Id="cmf_kfwlogon_DLL" Guid="$(var.cmf_kfwlogon_DLL_guid)">
              <File Id="filekfwlogon_DLL" Name="kfwlogon.dll" LongName="kfwlogon.dll" KeyPath="yes" DiskId="1" src="$(var.BinDir)kfwlogon.dll" />
              <Registry Id="reg_kfwlogon01" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" Action="createKeyAndRemoveKeyOnUninstall" />
              <Registry Id="reg_kfwlogon05" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" Name="DLLName" Type="string" Value="[#filekfwlogon_DLL]" />
              <Registry Id="reg_kfwlogon06" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\Notify\MIT_KFW" Name="Logon" Type="string" Value="KFW_Logon_Event" />
              <Registry Id="reg_kfwlogon07" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Action="createKeyAndRemoveKeyOnUninstall" />
-             <Registry Id="reg_kfwlogon08" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Name="AuthentProviderPath" Type="expandable" Value="[SystemFolder]kfwlogon.dll"/>
+             <Registry Id="reg_kfwlogon08" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Name="AuthentProviderPath" Type="expandable" Value="[$(var.PISystemFolder)]kfwlogon.dll"/>
              <Registry Id="reg_kfwlogon09" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider"/>
              <Registry Id="reg_kfwlogon10" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Name="VerboseLogging" Type="integer" Value="10"/>
-             <Registry Id="reg_kfwlogon11" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Name="ProviderPath" Type="expandable" Value="[SystemFolder]kfwlogon.dll"/>
+             <Registry Id="reg_kfwlogon11" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Name="ProviderPath" Type="expandable" Value="[$(var.PISystemFolder)]kfwlogon.dll"/>
              <Registry Id="reg_kfwlogon12" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Name="Class" Type="integer" Value="2" />
              <Registry Id="reg_kfwlogon13" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MIT Kerberos\NetworkProvider" Name="Name" Type="string" Value="MIT Kerberos"/>
          </Component>
@@ -53,7 +53,7 @@
          </Component>
      <?endif?>
      </Directory>
-    <Directory Id="ProgramFilesFolder">
+    <Directory Id="$(var.PIProgramFilesFolder)">
         <Directory Id="dirMIT" Name="MIT" SourceName=".">
             <Directory Id="KERBEROSDIR" Name="Kerberos">
                 <Directory Id="dirbin" Name="bin" src="$(var.BinDir)">
index 02bfb6898229678c57d800cc829356d54d85745a..c01d1bfe59e98b6ac607156ba19853c1b7e59690 100644 (file)
             Description="$(var.ProductName)"
             Comments="$(var.ProductFullName)"
             Manufacturer="$(loc.Manufacturer)"
-            InstallerVersion="110"
+            InstallerVersion="$(var.InstallerVersion)"
             Languages="$(var.Language)"
             Compressed="yes"
-            SummaryCodepage="$(var.CodePage)" 
+            SummaryCodepage="$(var.CodePage)"
+            Platforms="$(var.Platform)" 
             />
         
         <?include lang\ui_$(var.BuildLang).wxi?>
         <Condition Message="$(loc.OsVersionRequired)">VersionNT &gt;= 500</Condition>
         <Condition Message="$(loc.CMNotSelected)">USELEASH Or USENETIDMGR</Condition>
         <Condition Message="$(loc.CMDupSelected)">Not (USELEASH And USENETIDMGR)</Condition>
+        <?if $(var.Platform) = "x64" ?>
+            <Condition Message="$(loc.StrPlatform64)">
+                <![CDATA[VersionNT64]]>
+            </Condition>
+        <?endif?>
 
         <!-- Custom actions -->
         <Binary Id="binCustom" src="custom\custom.dll" />
index 0fc62e3d17f4b8cd54a270ab34bf9bc2d46e580e..5875e72817f5ccc0404e4eed69278c75580592d8 100644 (file)
 <Include xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
     
     <?define VersionString="$(var.VersionMajor).$(var.VersionMinor).$(var.VersionPatch)"?>
+    <?if $(var.Platform) = "x64" ?>
+        <?define BaseProductName="$(loc.ProductName64)"?>
+        <?define BaseProductNameShort="$(loc.ProductNameShort64)"?>
+    <?elseif $(var.Platform) = "Intel" ?>
+        <?define BaseProductName="$(loc.ProductName)"?>
+        <?define BaseProductNameShort="$(loc.ProductNameShort)"?>
+    <?else?>
+        <?error Unknown build type?>
+    <?endif?>
     
-    <?ifdef var.Release?>
+    <?ifdef var.Beta?> 
         <?ifndef var.Debug?>
-            <?define ProductFullName="$(loc.ProductMIT) $(loc.ProductName) $(var.VersionString)"?>
+            <?define ProductFullName="$(loc.ProductMIT) $(var.BaseProductName) $(var.VersionString) $(loc.ProductBeta) $(var.Beta) "?>
         <?else?>
-            <?define ProductFullName="$(loc.ProductMIT) $(loc.ProductName) $(var.VersionString) $(loc.ProductDebug)"?>
+            <?define ProductFullName="$(loc.ProductMIT) $(var.BaseProductName) $(var.VersionString) $(loc.ProductBeta) $(var.Beta) $(loc.ProductDebug)"?>
         <?endif?>
     <?else?>
-        <?ifdef var.Beta?>
+        <?ifdef var.Release?>
             <?ifndef var.Debug?>
-                <?define ProductFullName="$(loc.ProductMIT) $(loc.ProductName) $(var.VersionString) $(loc.ProductBeta) $(var.Beta) "?>
+                <?define ProductFullName="$(loc.ProductMIT) $(var.BaseProductName) $(var.VersionString)"?>
             <?else?>
-                <?define ProductFullName="$(loc.ProductMIT) $(loc.ProductName) $(var.VersionString) $(loc.ProductBeta) $(var.Beta) $(loc.ProductDebug)"?>
+                <?define ProductFullName="$(loc.ProductMIT) $(var.BaseProductName) $(var.VersionString) $(loc.ProductDebug)"?>
             <?endif?>
         <?else?>
-
             <?ifndef var.Date?>
                 <?error Date string must be specified?>
             <?endif?>
@@ -52,9 +60,9 @@
             <?endif?>
             
             <?ifndef var.Debug?>
-                <?define ProductFullName="$(loc.ProductMIT) $(loc.ProductName) $(var.VersionString) $(var.Date) $(var.Time)"?>
+                <?define ProductFullName="$(loc.ProductMIT) $(var.BaseProductName) $(var.VersionString) $(var.Date) $(var.Time)"?>
             <?else?>
-                <?define ProductFullName="$(loc.ProductMIT) $(loc.ProductName) $(var.VersionString) $(var.Date) $(var.Time) $(loc.ProductDebug)"?>
+                <?define ProductFullName="$(loc.ProductMIT) $(var.BaseProductName) $(var.VersionString) $(var.Date) $(var.Time) $(loc.ProductDebug)"?>
             <?endif?>
         <?endif?>
     <?endif?>
index 8813343768ec6351ace25070fa9b7fa2da6df322..60b680fbad5fd9955d002f6b02d461ddc6718ed0 100644 (file)
   or implied warranty.
   
   -->
-    <String Id="ProductName">Kerberos for Windows</String>
-    <String Id="ProductNameShort">KFW</String>
+    <String Id="ProductName64">Kerberos for Windows (64-bit)</String>
+    <String Id="ProductNameShort64">KFW64</String>
+    <String Id="ProductName">Kerberos for Windows (32-bit)</String>
+    <String Id="ProductNameShort">KFW32</String>
     <String Id="ProductMIT">MIT</String>
     <String Id="ProductDebug">Debug/Checked</String>
     <String Id="ProductBeta">Beta</String>
@@ -61,4 +63,6 @@
 
     <String Id="ARPComments">Build of</String>
 
+    <String Id="StrPlatform64">This build of Kerberos for Windows is for 64-bit Windows versions.  Please install the 32-bit version on this operating system.</String>
+    <String Id="StrPlatformNot64">This build of Kerberos for Windows is for 32-bit Windows versions.  Please install the 64-bit version on this operating system.</String>
 </WixLocalization>
\ No newline at end of file
index 93f173348562f21efcc90e0d81e22e78477a9857..65de105432b2125a6a46a86716478c303ced0f42 100644 (file)
@@ -3,6 +3,9 @@
 <!-- Platform specific GUID's and other definitions -->
 <?if $(var.Platform) = "x64" ?>
         <?define UpgradeCode="6DA9CD86-6028-4852-8C94-452CAC229244"?>
+        <?define PISystemFolder="System64Folder"?>
+        <?define PIProgramFilesFolder="ProgramFiles64Folder"?>
+
         <?define cmf_kfwlogon_DLL_guid="CFC0B7C9-9A59-4022-89B3-25E0941D0369"?>
         <?define cmf_kfwcpcc_EXE_guid="83F51B6D-F3C6-44cf-AC91-D1D6498FFA44"?>
         <?define cmp_ClientSystemDebug_guid="7B25B1E0-A22A-43c7-BA97-C30FCA3B1230"?>
         <?define csc_leash32_exe_guid="9D43350A-A8AE-4405-AB82-64E90E5A1A70"?>
         <?define rcm_leash_1_guid="7E5517FF-FB76-431f-A92B-2895C9BE7E98"?>
         <?define rcm_leash_2_guid="008208AC-46BE-4ca4-BEA7-8FCAAD8BA7C3"?>
-        <?define rcm_leash_3_guid="008208AC-46BE-4ca4-BEA7-8FCAAD8BA7C3"?>
+        <?define rcm_leash_3_guid="66D97178-E735-499b-961F-C7B8B8074E1A"?>
         <?define rcm_leash_4_guid="D20180CC-B68D-4a6d-95E4-5EB07B9EADCD"?>
         <?define rcm_leash_5_guid="AF3B73AE-86ED-42f5-987A-9831B8799D2F"?>
         <?define rcm_leash_6_guid="0C72D4F8-096B-4295-8F0A-6B5723A8593D"?>
         <?define csc_LeashStartup_guid="228192C5-D847-4c46-A726-0E8211742349"?>
-        <?define cmf_leash32_hlp_guid="228192C5-D847-4c46-A726-0E8211742349"?>
+        <?define cmf_leash32_hlp_guid="EF1B0ED6-9C01-4adb-9F11-C3FF07F669D5"?>
         <?define cmf_leash32_chm_guid="769B54EB-9B96-4abe-9B72-9EF346C8C03D"?>
         <?define cmf_leashw32_dll_guid="7222B9E1-EE70-4ccb-929F-43D45574AA83"?>
         <?define cmf_leashw32_dll_name="leashw64.dll"?>
         <?define rcm_leashdll_1_guid="64BC62DF-F1D6-423a-B4E0-E75E214BAC26"?>
-        <?define rcm_leashdll_2_guid="64BC62DF-F1D6-423a-B4E0-E75E214BAC26"?>
-        <?define rcm_leashdll_3_guid="64BC62DF-F1D6-423a-B4E0-E75E214BAC26"?>
+        <?define rcm_leashdll_2_guid="2CEF4DC7-684B-4a53-9053-5EB26264B009"?>
+        <?define rcm_leashdll_3_guid="D93DE8B4-919E-48ef-812D-BFCC26460608"?>
         <?define rcm_leashdll_4_guid="989B5FC5-63DC-47d6-BBBC-EE1B355127F6"?>
-        <?define rcm_leashdll_5_guid="989B5FC5-63DC-47d6-BBBC-EE1B355127F6"?>
+        <?define rcm_leashdll_5_guid="BF38025F-ED64-4dde-8BDD-250C1BB73909"?>
         <?define rcm_leashdll_6_guid="AC35CE64-9D8D-4a21-AB1F-18803C69E7B4"?>
         <?define rcm_leashdll_7_guid="02014C27-BAC8-4b86-95F8-43F9BF55064A"?>
         <?define rcm_leashdll_8_guid="DE70F57C-D3F8-4c1d-B868-A77DA04D9DD3"?>
@@ -95,6 +98,9 @@
         <?define cmf_bin_debug_guid="F3432C85-89D9-4bd6-BD82-4ED49A118338"?>
 <?elseif $(var.Platform) = "Intel"?>
         <?define UpgradeCode="61211594-AAA1-4A98-A299-757326763CC7"?>
+        <?define PISystemFolder="SystemFolder"?>
+        <?define PIProgramFilesFolder="ProgramFilesFolder"?>
+
         <?define cmf_kfwlogon_DLL_guid="2F104FEB-2D61-458A-BAE3-B153F151E728"?>
         <?define cmf_kfwcpcc_EXE_guid="C3284E7A-3665-45A6-B64E-C909B1D1BAA6"?>
         <?define cmp_ClientSystemDebug_guid="2D13ED48-53C2-4878-B196-2AD7F4100998"?>