Handle Updates a bit better
authorRod Widdowson <rdw@steadingsoftware.com>
Thu, 31 May 2012 12:23:02 +0000 (12:23 +0000)
committerRod Widdowson <rdw@steadingsoftware.com>
Thu, 31 May 2012 12:23:02 +0000 (12:23 +0000)
- Have a separate dialog for updates (allowing us to refactor the current dialog into a separate file)
- Save all user supplied parameters (in case we need them later)
- Set up parameters from these as appropriate for the update case.
- Remove some old cruft from no-longer needed Dialogs

We still have some work to do because an update will sense shibd running and we are about to stop it.

13 files changed:
msi/WiX/Compile.bat
msi/WiX/Info.bmp [deleted file]
msi/WiX/ShibbolethSP-defs-x86.wxi
msi/WiX/ShibbolethSP-exe-x86.wxs
msi/WiX/ShibbolethSP-gui.wxs
msi/WiX/ShibbolethSP-install-dlg.wxs [new file with mode: 0644]
msi/WiX/ShibbolethSP-main-x64.wxs
msi/WiX/ShibbolethSP-noarch.wxs
msi/WiX/ShibbolethSP-registry-x64.wxs
msi/WiX/ShibbolethSP-registry-x86.wxs
msi/WiX/ShibbolethSP-update-dlg.wxs [new file with mode: 0644]
msi/WiX/new.bmp [deleted file]
msi/WiX/up.bmp [deleted file]

index da6fd95..f02a0f2 100644 (file)
@@ -16,12 +16,18 @@ candle ShibbolethSP-registry-x86.wxs
 wixcop -indent:2 ShibbolethSP-gui.wxs
 candle ShibbolethSP-gui.wxs
 
+wixcop -indent:2 ShibbolethSP-update-dlg.wxs
+candle ShibbolethSP-update-dlg.wxs
+
+wixcop -indent:2 ShibbolethSP-install-dlg.wxs
+candle ShibbolethSP-install-dlg.wxs
+
 wixcop -indent:2 ShibbolethSP-main-x64.wxs
 candle ShibbolethSP-main-x64.wxs
-light -sw1055 -sice:ICE82 -o ShibbolethSP-main-x64.msi ShibbolethSP-main-x64.wixobj ShibbolethSP-exe-x64.wixobj ShibbolethSP-registry-x64.wixobj  ShibbolethSP-noarch.wixobj ShibbolethSP-exe-x86.wixobj ShibbolethSP-registry-x86.wixobj ShibbolethSP-gui.wixobj -ext WixUtilExtension.dll -ext WixUIExtension -ext WixIISExtension
+light -sw1055 -sice:ICE82 -o ShibbolethSP-main-x64.msi ShibbolethSP-main-x64.wixobj ShibbolethSP-exe-x64.wixobj ShibbolethSP-registry-x64.wixobj  ShibbolethSP-noarch.wixobj ShibbolethSP-exe-x86.wixobj ShibbolethSP-registry-x86.wixobj ShibbolethSP-gui.wixobj ShibbolethSP-update-dlg.wixobj ShibbolethSP-install-dlg.wixobj -ext WixUtilExtension.dll -ext WixUIExtension -ext WixIISExtension
 
 wixcop -indent:2 ShibbolethSP-main-x86.wxs
 candle ShibbolethSP-main-x86.wxs
-light -sw1055 -sice:ICE82 -o ShibbolethSP-main-x86.msi ShibbolethSP-main-x86.wixobj ShibbolethSP-noarch.wixobj ShibbolethSP-exe-x86.wixobj ShibbolethSP-registry-x86.wixobj  ShibbolethSP-gui.wixobj -ext WixUtilExtension.dll -ext WixUIExtension  -ext WixIISExtension
+light -sw1055 -sice:ICE82 -o ShibbolethSP-main-x86.msi ShibbolethSP-main-x86.wixobj ShibbolethSP-noarch.wixobj ShibbolethSP-exe-x86.wixobj ShibbolethSP-registry-x86.wixobj  ShibbolethSP-gui.wixobj ShibbolethSP-update-dlg.wixobj ShibbolethSP-install-dlg.wixobj -ext WixUtilExtension.dll -ext WixUIExtension  -ext WixIISExtension
 
 
diff --git a/msi/WiX/Info.bmp b/msi/WiX/Info.bmp
deleted file mode 100644 (file)
index 7e0ff7f..0000000
Binary files a/msi/WiX/Info.bmp and /dev/null differ
index 58fbedb..94bc4fa 100644 (file)
@@ -81,6 +81,9 @@
   <ComponentRef Id='shibd.exe_debug'/>\r
 \r
   <!-- ShibbolethSP-registry-x32 -->\r
+  <ComponentRef Id='TargetDir'/>\r
+  <ComponentRef Id='InstallShibd'/>\r
+  <ComponentRef Id='InstallIsapi'/>\r
   <ComponentRef Id='file_extension'/>\r
   <ComponentRef Id='shib.ico' />\r
 </Include>\r
index 3f65cc3..6216a82 100644 (file)
           <ServiceInstall Id='shibd' Name='shibd_Default' \r
                           DisplayName='Shibboleth 2 Daemon (Default)' Type='ownProcess' \r
                           Start='auto' ErrorControl='ignore' />\r
-          <ServiceControl Id='shibd_Default' Name='shibd_Default' Stop='uninstall'  \r
+          <ServiceControl Id='shibd_Default' Name='shibd_Default' Stop='both'  \r
                           Remove='uninstall' Start='install' Wait='no' />\r
         </Component>\r
         <Directory Id='sbin_debug' Name='debug' FileSource='$(var.SPBuildDirectory)\cpp-sp\Debug' >\r
index 2aaf3cc..fde8f37 100644 (file)
@@ -17,7 +17,7 @@
      permissions and limitations under the License.  -->\r
 \r
 <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>\r
-  <!-- This is where we put all executables & so & dlls which make up the SP X86 installer -->\r
+  <!-- This file controls the dispaying of the GUI dialogs (both WiX and custom) -->\r
   <Fragment>\r
 \r
     <WixVariable Id="WixUILicenseRtf" Value="license.rtf" />\r
@@ -43,7 +43,6 @@
       <!-- "WixUI_InstallDir includes the following dialogs:" -->\r
       <DialogRef Id='BrowseDlg' />\r
       <DialogRef Id='DiskCostDlg' />\r
-      <DialogRef Id='InstallDirDlg' />\r
       <DialogRef Id='InvalidDirDlg' />\r
       <DialogRef Id='LicenseAgreementDlg' />\r
       <DialogRef Id='WelcomeDlg' />\r
       <DialogRef Id='VerifyReadyDlg' />\r
       <DialogRef Id='WaitForCostingDlg' />\r
 \r
+      <!-- We also define two dialogs -->\r
+      <DialogRef Id='UpdateDlgShib' />\r
+      <DialogRef Id='InstallDirDlgShib' />\r
+\r
       <!-- Text Styles (from Orca) -->\r
       <TextStyle Id='WixUI_Font_Normal' FaceName='Tahoma' Size='8' />\r
       <TextStyle Id='WixUI_Font_Bigger' FaceName='Tahoma' Size='12' />\r
       <Publish Dialog='MaintenanceWelcomeDlg' Control='Next' Event='NewDialog' Value='MaintenanceTypeDlg'>1</Publish>\r
 \r
       <Publish Dialog='WelcomeDlg' Control='Next' Event='NewDialog' Value='LicenseAgreementDlg'>\r
-        NOT Installed\r
+        (NOT Installed) AND (NOT ALREADYINSTALLED)\r
+      </Publish>\r
+      <Publish Dialog='WelcomeDlg' Control='Next' Event='NewDialog' Value='UpdateDlgShib'>\r
+        (NOT Installed) AND ALREADYINSTALLED\r
       </Publish>\r
       <Publish Dialog='WelcomeDlg' Control='Next' Event='NewDialog' Value='VerifyReadyDlg'>\r
         Installed AND PATCH\r
         Installed AND PATCH\r
       </Publish>\r
       <Publish Dialog='VerifyReadyDlg' Control='Back' Event='NewDialog' Value='InstallDirDlgShib'>\r
-        NOT Installed\r
+        (NOT Installed) AND (NOT ALREADYINSTALLED)\r
+      </Publish>\r
+      <Publish Dialog='VerifyReadyDlg' Control='Back' Event='NewDialog' Value='UpdateDlgShib'>\r
+        (NOT Installed) AND ALREADYINSTALLED\r
       </Publish>\r
       <Publish Dialog='VerifyReadyDlg' Control='Back' Event='NewDialog' Value='MaintenanceTypeDlg'>\r
         Installed AND NOT PATCH\r
       </Publish>\r
 \r
-      <!-- And now the new dialog that we add.  This sets up:\r
-           INSTALLDIR\r
-           INSTALL_SHIBD_SERVICE\r
-           INSTALL_32BIT (if a 64bit machine)\r
-           INSTALL_ISAPI_FILTER (if IIS about)\r
-           SHIB_FILE_EXTENSION (if IIS about)\r
-        -->\r
-\r
-      <Dialog Id='InstallDirDlgShib' Width='370' Height='270' Title='[ProductName] Setup'>\r
-        <!-- Stuff at the top: picture, some text, a line -->\r
-        <Control Id='TopBitMap' Type='Bitmap' X='0' Y='0' Width='370' Height='44' Text='WixUI_Bmp_Banner' />\r
-        <Control Id='TopInfo' Type='Text' X='15' Y='6' Width='150' Height='12' \r
-                 Text='{\WixUI_Font_Title}Configure Shibboleth' Transparent='yes'/>\r
-        <Control Id='TopDetailed' Type='Text' X='25' Y='24' Width='320' Height='12' \r
-                 Text='Please choose where to install the Shibboleth SP and other installation options' Transparent='yes'/>\r
-        <Control Id='TopLine' Type='Line' X='0' Y='44' Width='370' Height='1' />\r
-\r
-        <!-- Buttons to control Shibboleth Setup -->\r
-        <Control Id='DescriptionLine1' Type='Text' X='25' Y='51' Height='12' Width='320' \r
-                 Text='The files for [ProductName] will be installed in the following folder.'/>\r
-\r
-        <Control Id='DescriptionLine2' Type='Text' X='25' Y='70' Height='12' Width='320' \r
-                 Text='To install into a different folder, click the Browse button, and select another folder.'/>\r
-\r
-        <Control Id='DescriptionLine3' Type='Text' X='25' Y='90' Height='12' Width='320' \r
-                 Text='You can choose not to install [ProductName] by clicking Cancel to exit the installer.' />\r
-\r
-        <!-- Where? -->\r
-        <Control Id='Dest' Type='Edit' X='25' Y='115' Width='228' Height='17' Property='INSTALLDIR' Text='[INSTALLDIR]' />\r
-        <Control Id='ChangeFolder' Type='PushButton' X='265' Y='115' Height='17' Width='56' Text='B&amp;rowse...'>\r
-          <Publish Event='SpawnDialog' Value='BrowseDlg' Order='1'>1</Publish>\r
-          <Publish Event='[_BrowseProperty]' Value='[WIXUI_INSTALLDIR]' Order='1'>1</Publish>\r
-        </Control>\r
-\r
-        <!-- Service? -->\r
-        <Control Id='InstallShibd' Type='CheckBox' X='25' Y='146' Height='17' Width='160' \r
-                 Property='INSTALL_SHIBD_SERVICE' CheckBoxValue='TRUE' \r
-                 Text='Install Shibd daemon' />\r
-\r
-        <!-- 32 Bits? -->\r
-        <Control Id='Install32Bit' Type='CheckBox' X='185' Y='146' Height='17' Width='160'\r
-                 Property='INSTALL_32BIT' CheckBoxValue='TRUE' \r
-                 Text='32bit defaults'>\r
-          <Condition Action='show'>IS64BITINSTALL = "TRUE"</Condition>\r
-          <Condition Action='hide'>IS64BITINSTALL &lt;&gt; "TRUE"</Condition>\r
-        </Control>\r
-\r
-        <!-- ISAPI? -->\r
-        <Control Id='InstallISAPI' Type='CheckBox' X='25' Y='175' Height='17' Width='160'\r
-                 Property='INSTALL_ISAPI_FILTER' CheckBoxValue='TRUE' \r
-                 Text='Install ISAPI filter and configure IIS'>\r
-          <Condition Action='show'>IISMAJORVERSION</Condition>\r
-          <Condition Action='hide'>NOT IISMAJORVERSION</Condition>\r
-        </Control>\r
-        <Control Id='FileExtensionText' Type='Text' X='185' Y='178' Height='17' Width='96'\r
-                 Text='Shibboleth File Extension'>\r
-          <Condition Action='show'>IISMAJORVERSION</Condition>\r
-          <Condition Action='hide'>NOT IISMAJORVERSION</Condition>\r
-        </Control>\r
-        <Control Id='FileExtensionEdit' Type='Edit' X='285' Y='175' Height='17' Width='50'\r
-                 Property='SHIB_FILE_EXTENSION' Text='[SHIB_FILE_EXTENSION]'>\r
-          <Condition Action='show'>IISMAJORVERSION</Condition>\r
-          <Condition Action='hide'>NOT IISMAJORVERSION</Condition>\r
-          <Condition Action='enable'>INSTALL_ISAPI_FILTER = "TRUE"</Condition>\r
-          <Condition Action='disable'>INSTALL_ISAPI_FILTER &lt;&gt; "TRUE"</Condition>\r
-        </Control>\r
-\r
-        <!-- Stuff at the bottom: line, Back,Next, [space] Cancel -->\r
-        <Control Id='BottomLine' Type='Line' X='0' Y='234' Width='370' Height='1' />\r
-        <Control Id='Back' Type='PushButton' X='180' Y='243' Width='56' Height='17' Text='&amp;Back'>\r
-          <Publish  Event='NewDialog' Value='LicenseAgreementDlg'>1</Publish>\r
-        </Control>\r
-\r
-        <Control Id='Next' Type='PushButton' X='236' Y='243' Width='56' Height='17' Text='&amp;Next' Default='yes'>\r
-          <Publish Event='SetTargetPath' Value='[WIXUI_INSTALLDIR]'>1</Publish>\r
-          <Publish Event='DoAction' Value='WixUIValidatePath' >\r
-            NOT WIXUI_DONTVALIDATEPATH\r
-          </Publish>\r
-          <Publish Event='SpawnDialog' Value='InvalidDirDlg' >\r
-            NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;"1"\r
-          </Publish>\r
-          <Publish Event='NewDialog' Value='VerifyReadyDlg'>\r
-            WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"\r
-          </Publish>\r
-        </Control>\r
-\r
-        <Control Id='Cancel' Type='PushButton' X='304' Y='243' Width='56' Height='17' Text='&amp;Cancel' Cancel='yes'>\r
-          <Publish  Event='SpawnDialog' Value='CancelDlg'>1</Publish>\r
-        </Control>\r
-      </Dialog>\r
-\r
-      <Publish Dialog='InstallDirDlg' Control='Back' Event='NewDialog' Value='LicenseAgreementDlg'>1</Publish>\r
-\r
-      <Publish Dialog='InstallDirDlg' Control='Next' Event='NewDialog' Value='VerifyReadyDlg' Order='4'>\r
-        WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"\r
-      </Publish>\r
-\r
-      <Publish Dialog='InstallDirDlg' Control='Next' Event='SpawnDialog' Value='InvalidDirDlg' Order='3'>\r
-        NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;"1"\r
-      </Publish>\r
-\r
-      <Publish Dialog='InstallDirDlg' Control='Next' Event='DoAction' Value='WixUIValidatePath' Order='2'>\r
-        NOT WIXUI_DONTVALIDATEPATH\r
-      </Publish>\r
-      <Publish Dialog='InstallDirDlg' Control='Next' Event='SetTargetPath' Value='[WIXUI_INSTALLDIR]' Order='1'>1</Publish>\r
-      <Publish Dialog='InstallDirDlg' Control='ChangeFolder' Event='SpawnDialog' Value='BrowseDlg' Order='2'>1</Publish>\r
-      <Publish Dialog='InstallDirDlg' Control='ChangeFolder' Event='[_BrowseProperty]' Value='[WIXUI_INSTALLDIR]' >1</Publish>\r
-\r
-\r
     </UI>\r
   </Fragment>\r
 </Wix>\r
diff --git a/msi/WiX/ShibbolethSP-install-dlg.wxs b/msi/WiX/ShibbolethSP-install-dlg.wxs
new file mode 100644 (file)
index 0000000..f83a4c0
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding='UTF-8'?>\r
+\r
+<!-- Licensed to the University Corporation for Advanced Internet\r
+     Development, Inc. (UCAID) under one or more contributor license\r
+     agreements.  See the NOTICE file distributed with this work for\r
+     additional information regarding copyright ownership. The UCAID\r
+     licenses this file to You under the Apache License, Version 2.0\r
+     (the 'License'); you may not use this file except in compliance\r
+     with the License.  You may obtain a copy of the License at\r
+     \r
+     http://www.apache.org/licenses/LICENSE-2.0\r
+     \r
+     Unless required by applicable law or agreed to in writing, software\r
+     distributed under the License is distributed on an 'AS IS' BASIS,\r
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
+     implied.  See the License for the specific language governing\r
+     permissions and limitations under the License.  -->\r
+\r
+<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>\r
+  <!-- This file contains the description of the dialog which captures installation\r
+       values for first time installs -->\r
+  <Fragment>\r
+\r
+    <UI>\r
+\r
+      <!-- This Dialog sets up:\r
+           - INSTALLDIR\r
+           - INSTALL_SHIBD_SERVICE\r
+           - INSTALL_32BIT (if a 64bit machine)\r
+           - INSTALL_ISAPI_FILTER (if IIS about)\r
+           - SHIB_FILE_EXTENSION (if IIS about)\r
+        -->\r
+\r
+      <Dialog Id='InstallDirDlgShib' Width='370' Height='270' Title='[ProductName] Setup'>\r
+        <!-- Stuff at the top: picture, some text, a line -->\r
+        <Control Id='TopBitMap' Type='Bitmap' X='0' Y='0' Width='370' Height='44' Text='WixUI_Bmp_Banner' />\r
+        <Control Id='TopInfo' Type='Text' X='15' Y='6' Width='150' Height='12' \r
+                 Text='{\WixUI_Font_Title}Configure Shibboleth' Transparent='yes'/>\r
+        <Control Id='TopDetailed' Type='Text' X='25' Y='24' Width='320' Height='12' \r
+                 Text='Please choose where to install the Shibboleth SP and other installation options' Transparent='yes'/>\r
+        <Control Id='TopLine' Type='Line' X='0' Y='44' Width='370' Height='1' />\r
+\r
+        <!-- Buttons to control Shibboleth Setup -->\r
+        <Control Id='DescriptionLine1' Type='Text' X='25' Y='51' Height='12' Width='320' \r
+                 Text='The files for [ProductName] will be installed in the following folder.'/>\r
+\r
+        <Control Id='DescriptionLine2' Type='Text' X='25' Y='70' Height='12' Width='320' \r
+                 Text='To install into a different folder, click the Browse button, and select another folder.'/>\r
+\r
+        <Control Id='DescriptionLine3' Type='Text' X='25' Y='90' Height='12' Width='320' \r
+                 Text='You can choose not to install [ProductName] by clicking Cancel to exit the installer.' />\r
+\r
+        <!-- Where? -->\r
+        <Control Id='Dest' Type='Edit' X='25' Y='115' Width='228' Height='17' Property='INSTALLDIR' Text='[INSTALLDIR]' />\r
+        <Control Id='ChangeFolder' Type='PushButton' X='265' Y='115' Height='17' Width='56' Text='B&amp;rowse...'>\r
+          <Publish Event='SpawnDialog' Value='BrowseDlg' Order='1'>1</Publish>\r
+          <Publish Event='[_BrowseProperty]' Value='[WIXUI_INSTALLDIR]' Order='1'>1</Publish>\r
+        </Control>\r
+\r
+        <!-- Service? -->\r
+        <Control Id='InstallShibd' Type='CheckBox' X='25' Y='146' Height='17' Width='160' \r
+                 Property='INSTALL_SHIBD_SERVICE' CheckBoxValue='TRUE' \r
+                 Text='Install Shibd daemon' />\r
+\r
+        <!-- 32 Bits? -->\r
+        <Control Id='Install32Bit' Type='CheckBox' X='185' Y='146' Height='17' Width='160'\r
+                 Property='INSTALL_32BIT' CheckBoxValue='TRUE' \r
+                 Text='32bit defaults'>\r
+          <Condition Action='show'>IS64BITINSTALL = "TRUE"</Condition>\r
+          <Condition Action='hide'>IS64BITINSTALL &lt;&gt; "TRUE"</Condition>\r
+        </Control>\r
+\r
+        <!-- ISAPI? -->\r
+        <Control Id='InstallISAPI' Type='CheckBox' X='25' Y='175' Height='17' Width='160'\r
+                 Property='INSTALL_ISAPI_FILTER' CheckBoxValue='TRUE' \r
+                 Text='Install ISAPI filter and configure IIS'>\r
+          <Condition Action='show'>IISMAJORVERSION</Condition>\r
+          <Condition Action='hide'>NOT IISMAJORVERSION</Condition>\r
+        </Control>\r
+        <Control Id='FileExtensionText' Type='Text' X='185' Y='178' Height='17' Width='96'\r
+                 Text='Shibboleth File Extension'>\r
+          <Condition Action='show'>IISMAJORVERSION</Condition>\r
+          <Condition Action='hide'>NOT IISMAJORVERSION</Condition>\r
+        </Control>\r
+        <Control Id='FileExtensionEdit' Type='Edit' X='285' Y='175' Height='17' Width='50'\r
+                 Property='SHIB_FILE_EXTENSION' Text='[SHIB_FILE_EXTENSION]'>\r
+          <Condition Action='show'>IISMAJORVERSION</Condition>\r
+          <Condition Action='hide'>NOT IISMAJORVERSION</Condition>\r
+          <Condition Action='enable'>INSTALL_ISAPI_FILTER = "TRUE"</Condition>\r
+          <Condition Action='disable'>INSTALL_ISAPI_FILTER &lt;&gt; "TRUE"</Condition>\r
+        </Control>\r
+\r
+        <!-- Stuff at the bottom: line, Back,Next, [space] Cancel -->\r
+        <Control Id='BottomLine' Type='Line' X='0' Y='234' Width='370' Height='1' />\r
+        <Control Id='Back' Type='PushButton' X='180' Y='243' Width='56' Height='17' Text='&amp;Back'>\r
+          <Publish  Event='NewDialog' Value='LicenseAgreementDlg'>1</Publish>\r
+        </Control>\r
+\r
+        <Control Id='Next' Type='PushButton' X='236' Y='243' Width='56' Height='17' Text='&amp;Next' Default='yes'>\r
+          <Publish Event='SetTargetPath' Value='[WIXUI_INSTALLDIR]'>1</Publish>\r
+          <Publish Event='DoAction' Value='WixUIValidatePath' >\r
+            NOT WIXUI_DONTVALIDATEPATH\r
+          </Publish>\r
+          <Publish Event='SpawnDialog' Value='InvalidDirDlg' >\r
+            NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;"1"\r
+          </Publish>\r
+          <Publish Event='NewDialog' Value='VerifyReadyDlg'>\r
+            WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"\r
+          </Publish>\r
+        </Control>\r
+\r
+        <Control Id='Cancel' Type='PushButton' X='304' Y='243' Width='56' Height='17' Text='&amp;Cancel' Cancel='yes'>\r
+          <Publish  Event='SpawnDialog' Value='CancelDlg'>1</Publish>\r
+        </Control>\r
+      </Dialog>\r
+\r
+    </UI>\r
+  </Fragment>\r
+</Wix>\r
index ab20e80..08b3f58 100644 (file)
       <ComponentRef Id='shibd64.exe_debug'/>\r
 \r
       <!-- ShibbolethSP-registry-x64 -->\r
-\r
+      <ComponentRef Id='TargetDir64'/>\r
+      <ComponentRef Id='InstallShibd64'/>\r
+      <ComponentRef Id='InstallIsapi64'/>\r
+      <ComponentRef Id='Install32Bit64'/>\r
       <ComponentRef Id='file_extension64'/>\r
       <ComponentRef Id='shib64.ico' />\r
 \r
index f09ff55..d3877c4 100644 (file)
       </Directory><!-- var -->\r
     </DirectoryRef>\r
 \r
+    <!-- Stuff to do the editing and copy of the files -->\r
+\r
     <Binary Id='EditConfigFileSrc' SourceFile='$(var.SPBuildDirectory)\cpp-sp\msi\scripts\shib_edit_config_files.vbs-wix' />\r
 \r
     <CustomAction Id='EditConfigFiles' \r
     <CustomAction Id='KeyGen' BinaryKey='WixCA' DllEntry='CAQuietExec' Execute='deferred' Impersonate='no' />\r
     <CustomAction Id='SetKeyGen' Property='KeyGen' Value='&quot;[INSTALLDIR]etc\shibboleth\keygen.bat&quot;' />\r
 \r
+    <!-- Stuff to configure IIS.  This is a one-shot (first install/last uninstall) -->\r
+\r
     <Binary Id='install_isapi'\r
             SourceFile='$(var.SPBuildDirectory)\cpp-sp\msi\scripts\shib_install_isapi_filter.vbs-wix'/>\r
     <Binary Id='uninstall_isapi' \r
     <CustomAction Id='ServicePath64' BinaryKey='WixCA' DllEntry='CAQuietExec' Execute='deferred' Impersonate='no' />\r
     <CustomAction Id='SetServicePath64' Property='ServicePath64' Value='&quot;[INSTALLDIR]etc\shibboleth\SetService64.bat&quot;' />\r
 \r
+    <!-- Inherit the installation dir if one was set -->\r
+    <CustomAction Id='InheritInstallDir' Property='INSTALLDIR' Value='[OLD_INSTALLDIR]' />\r
+    <CustomAction Id='InheritInstallDir64' Property='INSTALLDIR' Value='[OLD_INSTALLDIR64]' />\r
+\r
+    <!-- Set INSTALL_SHIBD correctly -->\r
+    <CustomAction Id='ClearInstallShibd' Property='INSTALL_SHIBD_SERVICE' Value='FALSE' />\r
+\r
+    <InstallUISequence>\r
+      <!-- All we need to sequence here is setting up inherited INSTALLDIR -->\r
+\r
+      <!-- inherit installationDir if there is something to inherit -->\r
+      <Custom Action='InheritInstallDir' After='AppSearch'>\r
+        OLD_INSTALLDIR\r
+      </Custom>\r
+      <Custom Action='InheritInstallDir64' After='InheritInstallDir'>\r
+        (NOT OLD_INSTALLDIR) AND OLD_INSTALLDIR64\r
+      </Custom>\r
+    </InstallUISequence>\r
 \r
     <InstallExecuteSequence>\r
       <Custom Action='SetEditConfigFiles' Before='CostInitialize'>NOT Installed</Custom>\r
         (NOT Installed) AND (INSTALL_ISAPI_FILTER = "TRUE") AND (NOT ALREADYINSTALLED) AND (NOT INSTALL_32BIT) AND IISMAJORVERSION\r
       </Custom>\r
       <Custom Action='ShibInstallISAPIFilter' After='InstallFiles'>\r
-        (NOT Installed) AND (INSTALL_ISAPI_FILTER = "TRUE") AND (NOT ALREADYINSTALLED)  AND IISMAJORVERSION\r
+        (NOT Installed) AND (INSTALL_ISAPI_FILTER = "TRUE") AND (NOT ALREADYINSTALLED) AND IISMAJORVERSION\r
       </Custom>\r
 \r
       <!-- (try to) Uninstall IIS if\r
               After='CostFinalize'>(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE)</Custom>\r
       <Custom Action='ShibUninstallISAPIFilter' \r
               Before='RemoveFiles'>(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE)</Custom>\r
-      <!-- set service path to 64 bit one if this is an install and if we werre told to -->\r
+\r
+      <!-- set service path to 64 bit one if this is an install and if we were told to -->\r
 \r
       <Custom Action='SetServicePath64' Before='CostInitialize'>\r
         (NOT Installed) AND (INSTALL_SHIBD_SERVICE = "TRUE") AND (NOT ALREADYINSTALLED) AND (NOT INSTALL_32BIT) AND (IS64BITINSTALL = "TRUE")\r
         (NOT Installed) AND (INSTALL_SHIBD_SERVICE = "TRUE") AND (NOT ALREADYINSTALLED) AND (NOT INSTALL_32BIT) AND (IS64BITINSTALL = "TRUE")\r
       </Custom>\r
 \r
+      <!-- Duplicate actions from the UI case -->\r
+      <Custom Action='InheritInstallDir' After='AppSearch'>\r
+        OLD_INSTALLDIR\r
+      </Custom>\r
+      <Custom Action='InheritInstallDir64' After='InheritInstallDir'>\r
+        (NOT OLD_INSTALLDIR) AND OLD_INSTALLDIR64\r
+      </Custom>\r
+\r
+      <!-- Clear out INSTALL_SHIBD_SERVICE (Set it to FALSE) if\r
+           - This is an update\r
+           - We didn't see an appropriate registryEntry\r
+           - TODO - we don't need this here I think\r
+        -->\r
+      <Custom Action='ClearInstallShibd' After='AppSearch'>\r
+        ALREADYINSTALLED AND (NOT OLD_SERVICEINSTALLED)\r
+      </Custom>\r
+\r
       <!-- Do not mess with SCM if this is an upgrade -->\r
 \r
       <InstallServices>(NOT Installed) AND (NOT ALREADYINSTALLED) AND (INSTALL_SHIBD_SERVICE = "TRUE")</InstallServices>\r
index fa91cdc..a77d341 100644 (file)
                       Name='DisplayVersion' Type='raw' Win64='yes' />\r
     </Property>\r
 \r
+    <Property Id='OLD_INSTALLDIR64' Secure='yes'>\r
+      <RegistrySearch Id='OldInstallDir64' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                      Name='InstallDir' Type='directory' Win64='yes'/>\r
+    </Property>\r
+\r
+    <Property Id='OLD_INSTALL_SHIBD_SERVICE64' Secure='yes'>\r
+      <RegistrySearch Id='OldInstallShibd64' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                      Name='InstallShibd' Type='raw' Win64='yes'/>\r
+    </Property>\r
+\r
+    <Property Id='OLD_INSTALL_ISAPI_FILTER64' Secure='yes'>\r
+      <RegistrySearch Id='OldInstallIsapi64' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                      Name='InstallIsapi' Type='raw' Win64='yes'/>\r
+    </Property>\r
+\r
+    <!-- 64 bit only -->\r
+    <Property Id='OLD_INSTALL_32BIT' Secure='yes'>\r
+      <RegistrySearch Id='OldInstall32Bit' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                      Name='Install32Bit' Type='raw' Win64='yes'/>\r
+    </Property>\r
+\r
     <DirectoryRef Id='bin64'>\r
+      <!-- Save the Captured parameters into the registry -->\r
+      <Component Id='TargetDir64' Guid='{E89D3028-5415-4874-9CBC-806A2064C613}' Win64='yes'>\r
+        <RegistryValue Id='TargetDir64'  Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                       Name='InstallDir' Value='[INSTALLDIR]' Type='string' KeyPath='yes' />\r
+      </Component>\r
+\r
+      <Component Id='InstallShibd64' Guid='{7834C30C-DCAB-4C7E-9C75-396EFB759AC9}' Win64='yes'>\r
+        <RegistryValue Id='InstallShibd64'  Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                       Name='InstallShibd' Value='[INSTALL_SHIBD_SERVICE]' Type='string' KeyPath='yes' />\r
+      </Component>\r
+\r
+      <Component Id='Install32Bit64' Guid='{9A0181FE-6252-4C2E-8828-70281DCC3825}' Win64='yes'>\r
+        <RegistryValue Id='Install32Bit64'  Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                       Name='Install32Bit' Value='[INSTALL_32BIT]' Type='string' KeyPath='yes' />\r
+      </Component>\r
+\r
+      <Component Id='InstallIsapi64' Guid='{288F97F5-E2E8-48DB-8291-B8445B77BA45}' Win64='yes'>\r
+        <Condition>IISMAJORVERSION</Condition>\r
+        <RegistryValue Id='InstallIsapi64'  Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                       Name='InstallIsapi' Value='[INSTALL_ISAPI_FILTER]' Type='string' KeyPath='yes' />\r
+      </Component>\r
+\r
       <Component Id='file_extension64' Guid='{F17BED16-5988-4F9E-82E0-1D4DCB69EC26}' Win64='yes'>\r
         <Condition>INSTALL_ISAPI_FILTER = "TRUE"</Condition>\r
         <RegistryValue Id='FileExtension64' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
index ac988a4..ee2f548 100644 (file)
       <RegistrySearch Id='SP2_3_1' Root='HKLM' \r
                       Key='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E4FA3B6C-6347-4B58-A07D-F9E388B3944B}' \r
                       Name='DisplayVersion' Type='raw' />\r
+    </Property>\r
+\r
+    <Property Id='OLD_INSTALLDIR' Secure='yes'>\r
+      <RegistrySearch Id='OldInstallDir' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                      Name='InstallDir' Type='directory' />\r
+    </Property>\r
+\r
+    <Property Id='OLD_INSTALL_SHIBD_SERVICE' Secure='yes'>\r
+      <RegistrySearch Id='OldInstallShibd' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                      Name='InstallShibd' Type='raw' />\r
+    </Property>\r
+\r
+    <Property Id='OLD_INSTALL_ISAPI_FILTER' Secure='yes'>\r
+      <RegistrySearch Id='OldInstallIsapi' Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                      Name='InstallIsapi' Type='raw' />\r
+    </Property>\r
 \r
+    <!-- non virtualized registry setting -->\r
+    <Property Id='OLD_SERVICEINSTALLED' Secure='yes'>\r
+      <RegistrySearch Id='OldServiceInstalled' Root='HKLM' Key='SYSTEM\CurrentControlSet\services\shibd_Default'\r
+                      Name='ImagePath' Type='raw' />\r
     </Property>\r
+\r
     <DirectoryRef Id='bin'>\r
+      <!-- Save the Captured parameters into the registry -->\r
+      <Component Id='TargetDir' Guid='{F02FB6E5-1146-4EC5-9D59-07BA6732C4DD}' >\r
+        <RegistryValue Id='TargetDir'  Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                       Name='InstallDir' Value='[INSTALLDIR]' Type='string' KeyPath='yes' />\r
+      </Component>\r
+\r
+      <Component Id='InstallShibd' Guid='{67ABE9AB-5ACF-44FE-8620-AEA676E88187}' >\r
+        <RegistryValue Id='InstallShibd'  Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                       Name='InstallShibd' Value='[INSTALL_SHIBD_SERVICE]' Type='string' KeyPath='yes' />\r
+      </Component>\r
+\r
+      <Component Id='InstallIsapi' Guid='{4F81E47D-B406-42B6-A702-90ACA666075E}' >\r
+        <Condition>IISMAJORVERSION</Condition>\r
+        <RegistryValue Id='InstallIsapi'  Root='HKLM' Key='SOFTWARE\Shibboleth' \r
+                       Name='InstallIsapi' Value='[INSTALL_ISAPI_FILTER]' Type='string' KeyPath='yes' />\r
+      </Component>\r
+\r
       <Component Id='file_extension' Guid='{88D0BEF3-6E15-4688-8492-9FF23B6221DF}'>\r
         <Condition>INSTALL_ISAPI_FILTER = "TRUE"</Condition>\r
         <RegistryValue Root='HKLM' Key='SOFTWARE\Shibboleth' \r
                        Name='FileExtension' Value='[SHIB_FILE_EXTENSION]' Type='string' KeyPath='yes' />\r
       </Component>\r
 \r
+      <!-- pretty icon for the "install programs" page -->\r
       <Component Id='shib.ico' Guid='{FA0F86A1-0731-4D66-8216-BC74D231B598}'>\r
         <File KeyPath='yes' Source='$(var.SPBuildDirectory)\cpp-sp\msi\shib.ico' />\r
         <RegistryValue Root='HKLM' Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode]' \r
diff --git a/msi/WiX/ShibbolethSP-update-dlg.wxs b/msi/WiX/ShibbolethSP-update-dlg.wxs
new file mode 100644 (file)
index 0000000..6b185c5
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8'?>\r
+\r
+<!-- Licensed to the University Corporation for Advanced Internet\r
+     Development, Inc. (UCAID) under one or more contributor license\r
+     agreements.  See the NOTICE file distributed with this work for\r
+     additional information regarding copyright ownership. The UCAID\r
+     licenses this file to You under the Apache License, Version 2.0\r
+     (the 'License'); you may not use this file except in compliance\r
+     with the License.  You may obtain a copy of the License at\r
+     \r
+     http://www.apache.org/licenses/LICENSE-2.0\r
+     \r
+     Unless required by applicable law or agreed to in writing, software\r
+     distributed under the License is distributed on an 'AS IS' BASIS,\r
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
+     implied.  See the License for the specific language governing\r
+     permissions and limitations under the License.  -->\r
+\r
+<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>\r
+  <!-- The dialog to display if we sense an upgrade -->\r
+  <Fragment>\r
+\r
+    <UI>\r
+      <Dialog Id='UpdateDlgShib' Width='370' Height='270' Title='[ProductName] Update'>\r
+        <!-- Stuff at the top: picture, some text, a line -->\r
+        <Control Id='TopBitMap' Type='Bitmap' X='0' Y='0' Width='370' Height='44' Text='WixUI_Bmp_Banner' />\r
+        <Control Id='TopInfo' Type='Text' X='15' Y='6' Width='150' Height='12' \r
+                 Text='{\WixUI_Font_Title}Update Shibboleth' Transparent='yes'/>\r
+        <Control Id='TopDetailed' Type='Text' X='25' Y='24' Width='320' Height='12' \r
+                 Text='Update to [ProductName]' Transparent='yes'/>\r
+        <Control Id='TopLine' Type='Line' X='0' Y='44' Width='370' Height='1' />\r
+\r
+        <!-- Buttons to control Shibboleth Setup -->\r
+        <Control Id='DescriptionLine1' Type='Text' X='25' Y='51' Height='12' Width='320' \r
+                 Text='The updates files for [ProductName] will be installed to [INSTALLDIR]'/>\r
+\r
+        <!-- Stuff at the bottom: line, Back,Next, [space] Cancel -->\r
+        <Control Id='BottomLine' Type='Line' X='0' Y='234' Width='370' Height='1' />\r
+        <Control Id='Back' Type='PushButton' X='180' Y='243' Width='56' Height='17' Text='&amp;Back'>\r
+          <Publish  Event='NewDialog' Value='WelcomeDlg'>1</Publish>\r
+        </Control>\r
+\r
+        <Control Id='Next' Type='PushButton' X='236' Y='243' Width='56' Height='17' Text='&amp;Next' Default='yes'>\r
+          <Publish Event='NewDialog' Value='VerifyReadyDlg'/>\r
+        </Control>\r
+\r
+        <Control Id='Cancel' Type='PushButton' X='304' Y='243' Width='56' Height='17' Text='&amp;Cancel' Cancel='yes'>\r
+          <Publish  Event='SpawnDialog' Value='CancelDlg'>1</Publish>\r
+        </Control>\r
+      </Dialog>\r
+    </UI>\r
+  </Fragment>\r
+</Wix>\r
diff --git a/msi/WiX/new.bmp b/msi/WiX/new.bmp
deleted file mode 100644 (file)
index 27881df..0000000
Binary files a/msi/WiX/new.bmp and /dev/null differ
diff --git a/msi/WiX/up.bmp b/msi/WiX/up.bmp
deleted file mode 100644 (file)
index 86f6b5a..0000000
Binary files a/msi/WiX/up.bmp and /dev/null differ