Service Installation Updates
The service can automatically be updated by running the Update-Service.ps1
script. It will check a remote location (configurable via a config file) and do
the following tasks:
- check for new service binaries and update the local ones if applicable
- check for a new configuration file for this host and update the local one
- try to restart the service if one of the previous tasks was done
Config File Options
An example config file for the update script is provided as
UpdaterConfig-Example.inc.ps1
. The values should be mostly self-explaining, so
just a few comments here:
-
$InstallationPath
refers to the local directory where the service executables have been installed, e.g.C:\Tools\AutoTx
-
$UpdateSourcePath
points to the base directory on a storage location (most likely some UNC path) where the service update files are provided. See the next section for details on the structure therein.
Folder Structure
The $UpdateSourcePath
folder structure is expected to be like this:
├─── Configs
│ ├─── _COMMON_
│ │ └─── common_config.xml
│ └─── <HOSTNAME>
│ └─── configuration.xml
└─── Service
├─── Binaries
│ ├─── build_2018-01-21_17-18-19
│ │ └─── AutoTx
│ └─── build_2018-01-23_11-22-33
│ └─── AutoTx
└─── UpdateMarkers
└─── <HOSTNAME>
Automatic Updates
To automate the above, a scheduled task has to be created. This can easily be
done by using the following PowerShell commands (or by running the provided
Install-UpdaterTask.ps1
script):
# create a repetition interval
$TimeSpan = New-TimeSpan -Minutes 10
# configure a JobTrigger for the task using the repetition interval from above,
# repeating forever
$JobTrigger = New-JobTrigger `
-Once `
-At (Get-Date).Date `
-RepetitionInterval $TimeSpan `
-RepeatIndefinitely
# configure the JobOptions for the task (battery options should not be required
# on a fixed system, but doesn't hurt either)
$JobOptions = New-ScheduledJobOption `
-RunElevated `
-StartIfOnBattery `
-ContinueIfGoingOnBattery
# set credentials for running the task (requires permission to start/stop the
# service and overwriting the configuration and binaries)
$Cred = Get-Credential
# register the job for execution
Register-ScheduledJob `
-Name "Update-AutoTxService" `
-FilePath C:\Tools\AutoTx-Updater\Update-Service.ps1 `
-ArgumentList C:\Tools\AutoTx-Updater\UpdaterConfig.inc.ps1 `
-ScheduledJobOption $JobOptions `
-Trigger $JobTrigger `
-Credential $Cred `
-Verbose