diff --git a/Updater/README.md b/Updater/README.md index d3fc10e0c88d8eb591c2fc7714b379361acd546d..b36e29eb36c994b80caa4282a6209ed83d127e6a 100644 --- a/Updater/README.md +++ b/Updater/README.md @@ -29,6 +29,8 @@ The `$UpdateSourcePath` folder structure is expected to be like this: ``` ├─── Configs +│ ├─── _COMMON_ +│ │ └─── common_config.xml │ └─── <HOSTNAME> │ └─── configuration.xml └─── Service diff --git a/Updater/Update-Service.ps1 b/Updater/Update-Service.ps1 index cf835c2629183dd951ed1fa5b0e797cfc4bf6939..4cf7d0a8303cdd2a3cb76d57484d040d3e708704 100644 --- a/Updater/Update-Service.ps1 +++ b/Updater/Update-Service.ps1 @@ -233,14 +233,21 @@ function Update-File { function Update-Configuration { - $NewConfig = "$($UpdateConfigPath)\configuration.xml" - if (Test-Path -PathType Leaf $NewConfig) { - $ret = Update-File $NewConfig $ConfigPath - } else { - $ret = $False - Log-Debug "No configuration file found at '$($NewConfig)'." - } - Return $ret + $RetOr = $False + # common config files first: + ForEach ($NewConfig in Get-ChildItem $UpdPathConfigCommon) { + $ret = Update-File $NewConfig.FullName $ConfigPath + $RetOr = $RetOr -Or $ret + } + # then host specific config files: + ForEach ($NewConfig in Get-ChildItem $UpdPathConfig) { + $ret = Update-File $NewConfig.FullName $ConfigPath + $RetOr = $RetOr -Or $ret + } + if (-Not ($RetOr)) { + Log-Debug "No (new) configuration file(s) found." + } + Return $RetOr } @@ -408,6 +415,7 @@ Log-Debug "$($Me) started..." Ensure-ServiceRunning $ServiceName $UpdPathConfig = "$($UpdateSourcePath)\Configs\$($env:COMPUTERNAME)" +$UpdPathConfigCommon = "$($UpdateSourcePath)\Configs\_COMMON_" $UpdPathMarkerFiles = "$($UpdateSourcePath)\Service\UpdateMarkers" $UpdPathBinaries = "$($UpdateSourcePath)\Service\Binaries" $UploadPathLogs = "$($UpdateSourcePath)\Logs\$($env:COMPUTERNAME)" @@ -417,6 +425,7 @@ Exit-IfDirMissing $LogPath "log files" Exit-IfDirMissing $ConfigPath "configuration files" Exit-IfDirMissing $UpdateSourcePath "update source" Exit-IfDirMissing $UpdPathConfig "configuration update" +Exit-IfDirMissing $UpdPathConfigCommon "common configuration update" Exit-IfDirMissing $UpdPathMarkerFiles "update marker" Exit-IfDirMissing $UpdPathBinaries "service binaries update" Exit-IfDirMissing $UploadPathLogs "log file target"