Allow specifying a backup action

This commit is contained in:
Manuel Thalmann 2024-08-28 00:29:33 +02:00
parent a620a6d15f
commit 2512fab756

View file

@ -197,6 +197,7 @@ $null = New-Module {
function Start-SoftwareInstaller { function Start-SoftwareInstaller {
param( param(
[string] $Name, [string] $Name,
[scriptblock] $Backup = $null,
[scriptblock] $Installer = $null, [scriptblock] $Installer = $null,
[scriptblock] $Configurator = $null, [scriptblock] $Configurator = $null,
[scriptblock] $UserConfigurator = $null, [scriptblock] $UserConfigurator = $null,
@ -235,32 +236,41 @@ $null = New-Module {
installer = $installHandler; installer = $installHandler;
arguments = $Arguments; arguments = $Arguments;
}; };
if ($action -eq ([InstallerAction]::Install)) {
if ($Installer) {
Write-Host "Installing $Name";
& $Installer @argumentList;
}
& $installHandler @argumentList -Action ([InstallerAction]::Configure); switch ($Action) {
([InstallerAction]::Backup) {
if ($Backup) {
Write-Host "Backing up $Name";
& $Backup @argumentList;
}
}
([InstallerAction]::Install) {
if ($Installer) {
Write-Host "Installing $Name";
& $Installer @argumentList;
}
if ($UserConfigurator -and (-not (Test-SetupUser))) { & $installHandler @argumentList -Action ([InstallerAction]::Configure);
& $installHandler @argumentList -Action ([InstallerAction]::ConfigureUser);
if ($UserConfigurator -and (-not (Test-SetupUser))) {
& $installHandler @argumentList -Action ([InstallerAction]::ConfigureUser);
}
} }
# ToDo: Automatically configure after installation ([InstallerAction]::Configure) {
} elseif ($Action -eq ([InstallerAction]::Configure)) { if ($Configurator) {
if ($Configurator) { Write-Host "Configuring $Name";
Write-Host "Configuring $Name"; & $Configurator @argumentList;
& $Configurator @argumentList; }
} }
} elseif ($Action -eq ([InstallerAction]::ConfigureUser)) { ([InstallerAction]::ConfigureUser) {
if ((-not $Arguments.ContainsKey($userArgument)) -or (-not $Arguments[$userArgument])) { if ((-not $Arguments.ContainsKey($userArgument)) -or (-not $Arguments[$userArgument])) {
$Arguments.Add($userArgument, ($IsWindows ? $env:UserName : $env:USER)); $Arguments.Add($userArgument, ($IsWindows ? $env:UserName : $env:USER));
} }
if ($UserConfigurator) { if ($UserConfigurator) {
Write-Host "Configuring $Name for user ``$($Arguments[$userArgument])``"; Write-Host "Configuring $Name for user ``$($Arguments[$userArgument])``";
& $UserConfigurator @argumentList; & $UserConfigurator @argumentList;
}
} }
} }
}; };