diff options
author | Matt Wrock <matt@mattwrock.com> | 2016-12-09 07:02:45 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-09 07:02:45 -0800 |
commit | 4991b93e5e93626cfada71f26a425ff040de690d (patch) | |
tree | 95e1f91c552bee95126ee8353872a8c392a9789b | |
parent | ef18311bdfe53eb87460c3638f7571131b10d96d (diff) | |
parent | fe0cfdccd38aedcb303915165fc73c1a7070b48a (diff) | |
download | chef-4991b93e5e93626cfada71f26a425ff040de690d.tar.gz |
Merge pull request #5540 from MsysTechnologiesllc/ali/sch_task_support_for_chef_client
Added support in WIX to install chef-client as a scheduled task.
-rw-r--r-- | omnibus/resources/chef/msi/localization-en-us.wxl.erb | 12 | ||||
-rw-r--r-- | omnibus/resources/chef/msi/source.wxs.erb | 145 |
2 files changed, 154 insertions, 3 deletions
diff --git a/omnibus/resources/chef/msi/localization-en-us.wxl.erb b/omnibus/resources/chef/msi/localization-en-us.wxl.erb index 62c27b99f6..c5e8e5ddab 100644 --- a/omnibus/resources/chef/msi/localization-en-us.wxl.erb +++ b/omnibus/resources/chef/msi/localization-en-us.wxl.erb @@ -16,15 +16,27 @@ <String Id="VerifyReadyDlgInstallTitle">{\WixUI_Font_Title_White}Ready to install [ProductName]</String> + <!-- Scheduled Task --> + <String Id="SchTaskDisplayName"><%= friendly_name %> Scheduled Task</String> + <String Id="SchTaskDescription">Schedule <%= friendly_name %> to run at a pre-defined time intervals.</String> <!-- Service --> <!-- Keep these in sync with the name and description in chef-service-manager --> <String Id="ServiceDisplayName"><%= friendly_name %> Service</String> <String Id="ServiceDescription">Runs <%= friendly_name %> on regular, configurable intervals.</String> <String Id="FeatureMainName"><%= friendly_name %></String> + <String Id="FeatureSchTaskName"><%= friendly_name %> Scheduled Task</String> <String Id="FeatureServiceName"><%= friendly_name %> Service</String> <String Id="FeaturePSModuleName"><%= friendly_name %> PowerShell wrappers</String> <String Id="MinimumOSVersionMessage">This package requires minimum OS version: Windows 7/Windows Server 2008 R2 or greater.</String> <String Id="DowngradeErrorMessage">A newer version of [ProductName] is already installed.</String> <String Id="FileExtractionProgress">Extracting files, please wait...</String> + + <String Id="CustomizeDlgTextMsg">Select an option to change between the Chef's unattended execution options.</String> + <String Id="CustomizeDlgTextTitle">Chef Unattended Execution Options</String> + <String Id="CustomizeDlgFirstRadioButtonText">Chef Client Scheduled Task</String> + <String Id="CustomizeDlgSecondRadioButtonText">Chef Client Service</String> + <String Id="CustomizeDlgThirdRadioButtonText">None</String> + + <String Id="CustomizeDlgOptionsMsg">The installer can configure the Chef Client to run periodically as either a scheduled task or a service. Using a scheduled task is recommended. For more information, see https://docs.chef.io/windows.html.</String> </WixLocalization> diff --git a/omnibus/resources/chef/msi/source.wxs.erb b/omnibus/resources/chef/msi/source.wxs.erb index bdde02687e..8f293f996e 100644 --- a/omnibus/resources/chef/msi/source.wxs.erb +++ b/omnibus/resources/chef/msi/source.wxs.erb @@ -28,6 +28,8 @@ <Media Id="1" Cabinet="ChefClient.cab" EmbedCab="yes" CompressionLevel="high" /> + <Property Id="CHEF_SERVICE_OPTIONS_RADIO_BUTTON_GROUP" Value="None" /> + <!-- Uncomment launch condition below to check for minimum OS 601 = Windows 7/Server 2008R2. @@ -67,9 +69,42 @@ Impersonate="no" Return="ignore" /> + <CustomAction Id="CreateChefClientScheduledTask" + Directory="TARGETDIR" + ExeCommand=""[SystemFolder]SCHTASKS.EXE" /CREATE /TN "ChefClientSchTask" /SC "MINUTE" /MO "30" /F /TR "cmd /c \"[EMBEDDEDBIN]ruby.exe [PROJECTLOCATIONBIN]chef-client -L [CONFIGLOCATION]chef-client.log -c [CONFIGLOCATION]client.rb\"" /RU "NT Authority\System" /RP /RL "HIGHEST"" + Execute="deferred" + Impersonate="no" + Return="check" /> + + <CustomAction Id="RemoveChefClientScheduledTask" + Directory="TARGETDIR" + ExeCommand=""[SystemFolder]SCHTASKS.EXE" /DELETE /TN "ChefClientSchTask" /F" + Execute="deferred" + Impersonate="no" + Return="ignore" /> + + <CustomAction Id="RemoveChefClientService" + Directory="TARGETDIR" + ExeCommand=""[SystemFolder]SC.EXE" DELETE "chef-client"" + Execute="deferred" + Impersonate="no" + Return="ignore" /> + <InstallExecuteSequence> <Custom Action="FastUnzip" After="InstallFiles">NOT Installed</Custom> <Custom Action="Cleanup" After="RemoveFiles">REMOVE~="ALL"</Custom> + + <Custom Action="CreateChefClientScheduledTask" After="InstallFiles"> + <![CDATA[&ChefSchTaskFeature=3]]> + </Custom> + + <Custom Action="RemoveChefClientScheduledTask" Before="RemoveFiles"> + <![CDATA[(Installed AND (&NoneFeature=3 OR &ChefServiceFeature=3)) OR (REMOVE="ALL")]]> + </Custom> + + <Custom Action="RemoveChefClientService" Before="RemoveFiles"> + <![CDATA[Installed AND (&NoneFeature=3 OR &ChefSchTaskFeature=3) OR (REMOVE="ALL")]]> + </Custom> </InstallExecuteSequence> <UI> @@ -135,6 +170,16 @@ </Directory> </Directory> </Directory> + <Directory Id="ChefSchTaskFeatureTempDir"> + <Component Id="ChefSchTask" Guid="{7f9f917a-952c-41d8-baa1-037269eecb50}"> + <CreateFolder /> + </Component> + </Directory> + <Directory Id="NoneFeatureTempDir"> + <Component Id="None" Guid="{d8f3eba5-cecb-436c-a4ef-540dba3c5ccf}"> + <CreateFolder /> + </Component> + </Directory> </Directory> </Directory> @@ -151,8 +196,24 @@ <ComponentRef Id="ChefPSModulePath" /> </Feature> - <Feature Id="ChefServiceFeature" Title="!(loc.FeatureServiceName)" Level="1000" AllowAdvertise="no"> - <ComponentRef Id="ChefClientService" /> + <Feature Id="ChefUnattendedExecutionOptions" Title="Chef Unattended Execution Options" Level="1000" AllowAdvertise="no"> + <Feature Id="ChefSchTaskFeature" Title="!(loc.FeatureSchTaskName)" Level="1000" AllowAdvertise="no" Display="hidden"> + <!-- Here, CustomAction will get executed and scheduled task for chef-client will get created --> + + <!-- This is an empty component to keep track of the feature --> + <ComponentRef Id="ChefSchTask" /> + </Feature> + + <Feature Id="ChefServiceFeature" Title="!(loc.FeatureServiceName)" Level="1000" AllowAdvertise="no" Display="hidden"> + <ComponentRef Id="ChefClientService" /> + </Feature> + + <Feature Id="NoneFeature" Title="None" Level="1000" AllowAdvertise="no" Display="hidden"> + <!-- Do Nothing --> + + <!-- This is an empty component to keep track of the feature --> + <ComponentRef Id="None" /> + </Feature> </Feature> <!-- @@ -173,12 +234,90 @@ <UIRef Id="ChefClientUI_InstallDir"/> <UI Id="ChefClientUI_InstallDir"> - <UIRef Id="WixUI_FeatureTree"/> + <!-- WixUI_FeatureTree module's code embedded and modified here as per the requirement --> <TextStyle Id="WixUI_Font_Normal_White" FaceName="Tahoma" Size="8" Red="255" Green="255" Blue="255" /> <TextStyle Id="WixUI_Font_Bigger_White" FaceName="Tahoma" Size="12" Red="255" Green="255" Blue="255" /> <TextStyle Id="WixUI_Font_Title_White" FaceName="Tahoma" Size="9" Bold="yes" Red="255" Green="255" Blue="255" /> + <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> + <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" /> + <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> + <TextStyle Id="WixUI_Font_Msg" FaceName="Tahoma" Size="9" /> + + <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> + <Property Id="WixUI_Mode" Value="FeatureTree" /> + + <DialogRef Id="ErrorDlg" /> + <DialogRef Id="FatalError" /> + <DialogRef Id="FilesInUse" /> + <DialogRef Id="MsiRMFilesInUse" /> + <DialogRef Id="PrepareDlg" /> + <DialogRef Id="ProgressDlg" /> + <DialogRef Id="ResumeDlg" /> + <DialogRef Id="UserExit" /> + + <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> + + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed</Publish> + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish> + + <Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish> + <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">LicenseAccepted = "1"</Publish> + + <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">Installed</Publish> + <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" Order="2">NOT Installed</Publish> + + <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg"><![CDATA[((NOT &ChefUnattendedExecutionOptions=3) AND NOT ((?ChefSchTask=3) OR (?ChefClientService=3) OR (?None=3)))]]></Publish> + + <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="ChefUnattendedExecutionOptionsSelectionDlg"><![CDATA[((&ChefUnattendedExecutionOptions=3) OR (?ChefSchTask=3 OR ?ChefClientService=3 OR ?None=3))]]></Publish> + + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1"><![CDATA[NOT &ChefUnattendedExecutionOptions=3]]> AND (NOT Installed OR WixUI_InstallMode = "Change")</Publish> + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="ChefUnattendedExecutionOptionsSelectionDlg" Order="1"><![CDATA[&ChefUnattendedExecutionOptions=3]]> AND (NOT Installed OR WixUI_InstallMode = "Change")</Publish> + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish> + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">Installed AND PATCH</Publish> + + <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish> + + <Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish> + <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish> + + <Dialog Id ="ChefUnattendedExecutionOptionsSelectionDlg" Width ="370" Height ="270" Title ="!(loc.ProductName) v$(var.DisplayVersionNumber)" NoMinimize ="no"> + <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.CustomizeDlgBannerBitmap)" /> + <Control Id="Title" Type="Text" X="15" Y="6" Width="210" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.CustomizeDlgTitle)" /> + <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.CustomizeDlgDescription)" /> + <Control Id="TextMsg" Type="Text" X="25" Y="55" Width="320" Height="20" Text="!(loc.CustomizeDlgTextMsg)" /> + + <Control Id="LeftBox" Type="GroupBox" X="25" Y="81" Width="175" Height="118" /> + <Control Id="TextTitle" Type="Text" X="30" Y="100" Width="169" Height="20" Text="{\WixUI_Font_Title}!(loc.CustomizeDlgTextTitle)" /> + <Control Id="OptionsRadioGroup" Type="RadioButtonGroup" Property="CHEF_SERVICE_OPTIONS_RADIO_BUTTON_GROUP" Height="80" Width="140" X="35" Y="110"> + <RadioButtonGroup Property="CHEF_SERVICE_OPTIONS_RADIO_BUTTON_GROUP"> + <RadioButton Value="SchTask" Text="!(loc.CustomizeDlgFirstRadioButtonText)" Height="17" Width="140" X="0" Y="10" /> + <RadioButton Value="Service" Text="!(loc.CustomizeDlgSecondRadioButtonText)" Height="17" Width="140" X="0" Y="35" /> + <RadioButton Value="None" Text="!(loc.CustomizeDlgThirdRadioButtonText)" Height="17" Width="140" X="0" Y="60" /> + </RadioButtonGroup> + </Control> + + <Control Id="RightBox" Type="GroupBox" X="210" Y="81" Width="150" Height="118" /> + <Control Id="OptionsMsg" Type="Text" X="214" Y="100" Width="146" Height="80" Text="{\WixUI_Font_Msg}!(loc.CustomizeDlgOptionsMsg)" /> + + <Control Id="Back" Type="PushButton" X="120" Y="230" Width="70" Height="17" Default="no" Text="Back"> + <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish> + </Control> + <Control Id="Next" Type="PushButton" X="190" Y="230" Width="70" Height="17" Default="yes" Text="Next"> + <Publish Event="AddLocal" Value="ChefSchTaskFeature">CHEF_SERVICE_OPTIONS_RADIO_BUTTON_GROUP = "SchTask"</Publish> + <Publish Event="AddLocal" Value="ChefServiceFeature">CHEF_SERVICE_OPTIONS_RADIO_BUTTON_GROUP = "Service"</Publish> + <Publish Event="AddLocal" Value="NoneFeature">CHEF_SERVICE_OPTIONS_RADIO_BUTTON_GROUP = "None"</Publish> + <Publish Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + </Control> + <Control Id="Cancel" Type="PushButton" X="275" Y="230" Width="70" Height="17" Default="no" Text="Cancel" Cancel="yes"> + <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> + </Control> + </Dialog> </UI> + <UIRef Id="WixUI_Common" /> + <WixVariable Id="WixUILicenseRtf" Value="Resources\assets\LICENSE.rtf" /> <WixVariable Id="WixUIDialogBmp" Value="Resources\assets\dialog_background.bmp" /> <WixVariable Id="WixUIBannerBmp" Value="Resources\assets\banner_background.bmp" /> |