wix-changes-20040621
authorAsanka Herath <asanka@mit.edu>
Tue, 22 Jun 2004 05:00:13 +0000 (05:00 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 22 Jun 2004 05:00:13 +0000 (05:00 +0000)
1.  Fix choice for logon options to include only 'not integrated',
    'integrated' and 'integrated with high security'.

2.  Add configuration page to select whether or not to run afscreds.exe
    when logging in and also choose the command line
    options for afscreds.exe.

3.  Assert that all dependencies are satisfied at install time when
    installing the server component.

4.  If running in full UI mode and installing the server component,
    the user is notified about dependencies and given a
    choice to review selections or just let the installer add the
    required components.

src/WINNT/install/wix/config.wxi
src/WINNT/install/wix/feature.wxi
src/WINNT/install/wix/files.wxi
src/WINNT/install/wix/lang/en_US/ui.wxi
src/WINNT/install/wix/openafs.wxs
src/WINNT/install/wix/property.wxi

index 6187565..9529478 100644 (file)
@@ -16,6 +16,8 @@
        CellName       : Default cell name
        CellDbFile     : Path to default CellServDB file
        
+       RemoveLoopback : Defined if we want to remove the loopback adapter
+       
       
       Directory specs: (all dir. specs end in a '\')
        MediaBinDir    : Installer binaries (instloop.exe etc.)
index 73412d6..aa6918a 100644 (file)
                                        <Condition Level="30">VersionNT = 500 And ServicePackLevel &lt; 3</Condition>
                                </Feature>
                                
+                               <Feature Id="feaCredsStartup" AllowAdvertise="no" FollowParent="yes" Display="hidden" InstallDefault="local" Level="30">
+                                       <ComponentRef Id="cmp_credsStartup" />
+                               </Feature>
+                               
                        <?ifdef Debug?>
                                <Feature Id="feaClientDebug" AllowAdvertise="no" Description="$(loc.StrAFSClientDebugLongDesc)" Display="expand"
                                        FollowParent="yes" InstallDefault="local" Level="30" Title="$(loc.StrAFSClientDebugDesc)">
index fa6a77f..c6c9b4f 100644 (file)
                     </Component>
                     <Component Id="cmf_afscreds_EXE" Guid="A17567CF-866E-49AF-A717-0B4F17CA88D4">
                         <File Id="fileafscreds_EXE" Name="afscreds.exe" LongName="afscreds.exe" KeyPath="yes" DiskId="1">
-                                                       <Shortcut Id="scAfsCreds" Directory="dirShortCut" Name="Auth.lnk" LongName="Authentication.lnk" Description="$(loc.StrAfsCredsDesc)" Arguments="-A -M -N -Q" Icon="ico_afscreds" IconIndex="0" Show="normal" WorkingDirectory="dirCommon" />
-                                                       <Shortcut Id="scAfsCredsStart" Directory="StartupFolder" Name="AFSAuth.lnk" LongName="AFS Credentials.lnk" Description="$(loc.StrAfsCredsDesc)" Arguments="-A -M -N -Q" Icon="ico_afscreds" IconIndex="0" Show="normal" WorkingDirectory="dirCommon" />
+                                                       <Shortcut Id="scAfsCreds" Directory="dirShortCut" Name="Auth.lnk" LongName="Authentication.lnk" Description="$(loc.StrAfsCredsDesc)" Arguments="[CREDSAUTOINIT] [CREDSRENEWDRMAP] [CREDSIPCHDET] [CREDSQUIET] [CREDSSHOW]" Icon="ico_afscreds" IconIndex="0" Show="normal" WorkingDirectory="dirCommon" />
                         </File>
                     </Component>
+                    <Component Id="cmp_credsStartup" Guid="3F40BA8D-16A2-4990-A74F-35AF3012E3F8">
+                                               <Shortcut Id="scAfsCredsStart" Directory="StartupFolder" Name="AFSAuth.lnk" LongName="AFS Credentials.lnk" Description="$(loc.StrAfsCredsDesc)" Arguments="[CREDSAUTOINIT] [CREDSRENEWDRMAP] [CREDSIPCHDET] [CREDSQUIET] [CREDSSHOW]" Icon="ico_afscreds" IconIndex="0" Show="normal" WorkingDirectory="dirCommon" Target="[#fileafscreds_EXE]"/>
+                                               <Registry Root="HKLM" Key="SOFTWARE\OpenAFS\Client" Name="AutoStart" Type="integer" Value="1" Id="reg_CredsAutoStart" KeyPath="yes" />
+                    </Component>
                     <Component Id="cmf_afs_shl_ext_DLL" Guid="E4C51111-F9ED-418D-9DE0-ED8777CED5C9">
                         <File Id="fileafs_shl_ext_DLL" Name="afsshext.dll" LongName="afs_shl_ext.dll" KeyPath="yes" DiskId="1">
                             <Class Id="DC515C27-6CAC-11D1-BAE7-00C04FD140D2" Advertise="no" Context="InprocServer32" Description="$(loc.StrShlExtDesc)" ThreadingModel="apartment">
index c73a1b3..49696b0 100644 (file)
           <Publish Event="NewDialog" Value="SetupTypeDlg">InstallMode = "Custom"</Publish>
         </Control>
         <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]">
-                 <Publish Event="NewDialog" Value="ConfigClientDlg">&amp;feaClient = 3</Publish>
-          <Publish Event="NewDialog" Value="VerifyReadyDlg">&amp;feaClient &lt;&gt; 3</Publish>
+                 <Publish Event="NewDialog" Value="ConfigClientDlg">
+                       <![CDATA[ &feaClient = 3 AND NOT ((&feaServer=3 OR (!feaServer=3 AND &feaServer<1)) AND (&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3) OR &feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3) ))]]>
+                 </Publish>
+          <Publish Event="NewDialog" Value="VerifyReadyDlg">
+            <![CDATA[ &feaClient <> 3 AND NOT ((&feaServer=3 OR (!feaServer=3 AND &feaServer<1)) AND (&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3) OR &feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3) ))]]>
+          </Publish>
+          <Publish Event="NewDialog" Value="AddServerDepsDlg">
+            <![CDATA[ ((&feaServer=3 OR (!feaServer=3 AND &feaServer<1)) AND (&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3) OR &feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3) )) ]]>
+          </Publish>
           <Subscribe Event="SelectionNoItems" Attribute="Enabled" />
         </Control>
         <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="[ButtonText_Cancel]">
           <Text>[DlgTitleFont]Custom Setup</Text>
         </Control>
         <Control Id="Box" Type="GroupBox" X="210" Y="81" Width="140" Height="98" />
-        <Control Id="ItemDescription" Type="Text" X="215" Y="90" Width="131" Height="30">
+        <Control Id="ItemDescription" Type="Text" X="215" Y="90" Width="131" Height="40">
           <Text>Multiline description of the currently selected item.</Text>
           <Subscribe Event="SelectionDescription" Attribute="Text" />
         </Control>
-        <Control Id="ItemSize" Type="Text" X="215" Y="130" Width="131" Height="45">
+        <Control Id="ItemSize" Type="Text" X="215" Y="135" Width="131" Height="40">
           <Text>The size of the currently selected item.</Text>
           <Subscribe Event="SelectionSize" Attribute="Text" />
         </Control>
           <Condition Action="hide">Installed</Condition>
         </Control>
       </Dialog>
+
+      <Dialog Id="AddServerDepsDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes" TrackDiskSpace="yes">
+        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="[ButtonText_Cancel]">
+          <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
+        </Control>
+        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]">
+                 <Publish Event="AddLocal" Value="feaClient"><![CDATA[&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3)]]></Publish>
+                 <Publish Event="AddLocal" Value="feaControlCenter"><![CDATA[&feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3)]]></Publish>
+                 <Publish Event="NewDialog" Value="ConfigClientDlg">
+                       <![CDATA[ &feaClient = 3 ]]>
+                 </Publish>
+          <Publish Event="NewDialog" Value="VerifyReadyDlg">
+            <![CDATA[ &feaClient <> 3 ]]>
+          </Publish>
+          <Subscribe Event="SelectionNoItems" Attribute="Enabled" />
+        </Control>
+        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="374" Height="44" FixedSize="yes" TabSkip="no" Text="[BannerBitmap]" />
+        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="[ButtonText_Back]">
+          <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish>
+        </Control>
+        <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
+          <Text>Dependencies of the OpenAFS Server</Text>
+        </Control>
+        <Control Id="Text" Type="Text" X="25" Y="70" Width="320" Height="30">
+          <Text>The OpenAFS Server component requires the following component(s) which are currently not set to be installed.  Click Next to add these components or click Back to review your selections.</Text>
+        </Control>
+        <Control Id="ClientIcon" Type="Icon" X="25" Y="110" Width="32" Height="32" IconSize="32" Text="[CustomSetupIcon]" Hidden="yes">
+          <Condition Action="show"><![CDATA[&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3)]]></Condition>
+        </Control>
+        <Control Id="ClientText" Type="Text" X="60" Y="117" Width="200" Height="15" Hidden="yes" Transparent="yes" NoPrefix="yes">
+          <Text>OpenAFS Client</Text>
+          <Condition Action="show"><![CDATA[&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3)]]></Condition>
+        </Control>
+        <Control Id="CCIcon" Type="Icon" X="25" Y="150" Width="32" Height="32" IconSize="32" Text="[CustomSetupIcon]" Hidden="yes">
+          <Condition Action="show"><![CDATA[&feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3)]]></Condition>
+        </Control>
+        <Control Id="CCText" Type="Text" X="60" Y="157" Width="200" Height="15" Hidden="yes" Transparent="yes" NoPrefix="yes">
+          <Text>OpenAFS Control Center</Text>
+          <Condition Action="show"><![CDATA[&feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3)]]></Condition>
+        </Control>
+        <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="374" Height="0" />
+        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="374" Height="0" />
+        <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
+          <Text>[DlgTitleFont]Server Dependencies</Text>
+        </Control>
+      </Dialog>
+
       <Dialog Id="DiskCostDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
         <Control Id="OK" Type="PushButton" X="304" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="[ButtonText_OK]">
           <Publish Event="EndDialog" Value="Return">1</Publish>
           <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish>
         </Control>
         <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Text="[ButtonText_Next]">
-          <Publish Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
+          <Publish Event="NewDialog" Value="ConfigCredsDlg">1</Publish>
         </Control>
         <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="[ButtonText_Cancel]">
           <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
         <Control Id="CellLabel" Type="Text" X="45" Y="73" Width="100" Height="15" TabSkip="no" Text="Default &amp;Cell" />
         <Control Id="CellEdit" Type="Edit" X="150" Y="73" Width="115" Height="18" Property="AFSCELLNAME" Text="{120}" />
         <Control Id="LogonOptionsLabel" Type="Text" X="45" Y="93" Width="100" Height="15" Text="Integrated logon options" />
-        <Control Id="LogonOptionSel" Type="RadioButtonGroup" X="45" Y="108" Width="220" Height="80" Property="LOGONOPTIONS" />
-        <Control Id="FreelanceLabel" Type="Text" X="45" Y="188" Width="100" Height="15" Text="Freelance mode" />
-        <Control Id="FreelanceSel" Type="RadioButtonGroup" X="150" Y="188" Width="120" Height="20" Property="FREELANCEMODE" />
-        <Control Id="DNSLabel" Type="Text" X="45" Y="208" Width="100" Height="15" Text="Lookup cells in DNS" />
-        <Control Id="DNSSel" Type="RadioButtonGroup" X="150" Y="208" Width="120" Height="20" Property="USEDNS" />
+        <Control Id="LogonOptionSel" Type="RadioButtonGroup" X="45" Y="108" Width="220" Height="60" Property="LOGONOPTIONS" />
+        <Control Id="FreelanceLabel" Type="Text" X="45" Y="168" Width="100" Height="15" Text="Freelance mode" />
+        <Control Id="FreelanceSel" Type="RadioButtonGroup" X="150" Y="168" Width="120" Height="20" Property="FREELANCEMODE" />
+        <Control Id="DNSLabel" Type="Text" X="45" Y="188" Width="100" Height="15" Text="Lookup cells in DNS" />
+        <Control Id="DNSSel" Type="RadioButtonGroup" X="150" Y="188" Width="120" Height="20" Property="USEDNS" />
       </Dialog>
       <RadioGroup Property="FREELANCEMODE">
                <RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable">0</RadioButton>
       <RadioGroup Property="LOGONOPTIONS">
                <RadioButton X="5" Y="0" Width="215" Height="15" Text="Disable integrated logon">0</RadioButton>
                <RadioButton X="5" Y="20" Width="215" Height="15" Text="Enable integrated logon">1</RadioButton>
-               <RadioButton X="5" Y="40" Width="215" Height="15" Text="Enable high security mode">2</RadioButton>
-               <RadioButton X="5" Y="60" Width="215" Height="15" Text="Enable integrated logon and high security">3</RadioButton>              
+               <RadioButton X="5" Y="40" Width="215" Height="15" Text="Enable integrated logon and high security">3</RadioButton>              
       </RadioGroup>
 
+      <Dialog Id="ConfigCredsDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
+        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="[ButtonText_Back]">
+          <Publish Event="NewDialog" Value="ConfigClientDlg">1</Publish>
+        </Control>
+        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Text="[ButtonText_Next]">
+                       <Publish Event="AddLocal" Value="feaCredsStartup">CREDSSTARTUP = "1"</Publish>
+                       <Publish Event="Remove" Value="feaCredsStartup">CREDSSTARTUP &lt;&gt; "1"</Publish>
+                       <Publish Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
+        </Control>
+        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="[ButtonText_Cancel]">
+          <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
+        </Control>
+        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="374" Height="44" FixedSize="yes" TabSkip="no" Text="[BannerBitmap]" />
+        <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
+          <Text>Choose the configuration options for AFS credentials.</Text>
+        </Control>
+        <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="374" Height="0" />
+        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="374" Height="0" />
+        <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
+          <Text>[DlgTitleFont]Options for AFS Credentials</Text>
+        </Control>
+        <Control Id="CredStartLabel" Type="Text" X="45" Y="53" Width="295" Height="15" TabSkip="yes" Text="Startup options for AFS Credentials" />
+        <Control Id="CredStartup" Type="CheckBox" X="50" Y="73" Width="300" Height="15" Property="CREDSSTARTUP" CheckBoxValue="1" Text="Start AFS Credentials at startup" />
+        <Control Id="CredCommandLabel" Type="Text" X="45" Y="93" Width="295" Height="15" TabSkip="yes" Text="Command line options for AFS Credentials" />
+        <Control Id="CredAutoInit" Type="CheckBox" X="50" Y="113" Width="300" Height="15" Property="CREDSAUTOINIT" CheckBoxValue="-a" Text="Auto initialize AFS Credentials." />
+        <Control Id="CredRenew" Type="CheckBox" X="50" Y="133" Width="300" Height="15" Property="CREDSRENEWDRMAP" CheckBoxValue="-m" Text="Renew drive maps" />
+        <Control Id="CredIPCg" Type="CheckBox" X="50" Y="153" Width="300" Height="15" Property="CREDSIPCHDET" CheckBoxValue="-n" Text="Detect IP address changes" />
+        <Control Id="CredQuiet" Type="CheckBox" X="50" Y="173" Width="300" Height="15" Property="CREDSQUIET" CheckBoxValue="-q" Text="Quiet mode" />
+        <Control Id="CredShow" Type="CheckBox" X="50" Y="193" Width="300" Height="15" Property="CREDSSHOW" CheckBoxValue="-s" Text="Show credentials window on startup" />
+      </Dialog>
+
       <Dialog Id="UserExit" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
         <Control Id="Finish" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="[ButtonText_Finish]">
           <Publish Event="EndDialog" Value="Exit">1</Publish>
         <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="[ButtonText_Back]">
           <Publish Event="NewDialog" Value="AdminInstallPointDlg">InstallMode = "Server Image"</Publish>
           <Publish Event="NewDialog" Value="CustomizeDlg">(InstallMode = "Custom" OR InstallMode = "Change") AND &amp;feaClient &lt;&gt; 3</Publish>
-          <Publish Event="NewDialog" Value="ConfigClientDlg">(InstallMode = "Custom" OR InstallMode = "Change") AND &amp;feaClient = 3</Publish>
+          <Publish Event="NewDialog" Value="ConfigCredsDlg">(InstallMode = "Custom" OR InstallMode = "Change") AND &amp;feaClient = 3</Publish>
           <Publish Event="NewDialog" Value="MaintenanceTypeDlg">InstallMode = "Repair"</Publish>
           <Publish Event="NewDialog" Value="SetupTypeDlg">InstallMode = "Typical" OR InstallMode = "Complete"</Publish>
         </Control>
index d2e48c6..871ba41 100644 (file)
                 DllEntry="UninstallNsisInstallation"
                 Execute="immediate" />
                <CustomAction
-                Id="AbortInstallation"
+                Id="AbortInstallationA"
+                BinaryKey="BIN_afsCustom"
+                DllEntry="AbortMsiImmediate"
+                Execute="immediate" />
+               <CustomAction
+                Id="AbortInstallationB"
                 BinaryKey="BIN_afsCustom"
                 DllEntry="AbortMsiImmediate"
                 Execute="immediate" />
         <AdminExecuteSequence />
         <InstallExecuteSequence>
                        <RemoveExistingProducts After="InstallValidate">IBMAFS_UPGRADE OR OPENAFS_UPGRADE</RemoveExistingProducts>
-                       <Custom Action="RemoveNsisInstallation" Before="AbortInstallation">NSISUNINSTALL &lt;&gt; "" AND UILevel &gt;= 4</Custom>
-                       <Custom Action="AbortInstallation" Before="CostInitialize">NSISUNINSTALL &lt;&gt; "" AND UILevel &lt; 4</Custom>
+                       <Custom Action="RemoveNsisInstallation" Before="AbortInstallationA">NSISUNINSTALL &lt;&gt; "" AND UILevel &gt;= 4</Custom>
+                       <Custom Action="AbortInstallationA" Before="CostInitialize">NSISUNINSTALL &lt;&gt; "" AND UILevel &lt; 4</Custom>
+                       <!-- Assert that if the server is going to be installed locally after this session, control center and client are also local -->
+                       <Custom Action="AbortInstallationB" After="MigrateFeatureStates">
+                               <![CDATA[((&feaServer=3 OR (!feaServer=3 AND &feaServer<1)) AND (&feaClient=2 OR (&feaClient<>3 AND !feaClient<>3) OR &feaControlCenter=2 OR (&feaControlCenter<>3 AND !feaControlCenter<>3) ))]]>
+                       </Custom>
                <?ifdef RemoveLoopback?>
                        <Custom Action="RemoveLoopback" After="SelfRegModules">&amp;feaLoopback=2 OR &amp;feaLoopback=3</Custom>
             <Custom Action="RollbackLoopback" After="RemoveLoopback">&amp;feaLoopback=3</Custom>
index 1938f96..90b25e1 100644 (file)
        <Property Id="RXMAXMTU">$(var.RxMaxMTU)</Property>
        <Property Id="HIDEDOTFILES">$(var.HideDotFiles)</Property>
 
+       <Property Id="CREDSSTARTUP">1</Property>
+       <Property Id="CREDSAUTOINIT">-a</Property>
+       <Property Id="CREDSRENEWDRMAP">-m</Property>
+       <Property Id="CREDSIPCHDET">-n</Property>
+       <Property Id="CREDSQUIET">-q</Property>
+       <!-- empty property 
+       <Property Id="CREDSSHOW"></Property>
+       -->
+
     <!-- Add/remove programs -->
     <Property Id="ARPCOMMENTS">$(var.ProductComments)</Property>
     <Property Id="ARPCONTACT">openafs-info@openafs.org</Property>