From dd046ce981586bae9d4c2e18091c1201b7143020 Mon Sep 17 00:00:00 2001 From: alexandrelussier Date: Thu, 10 Dec 2020 13:49:51 -0500 Subject: [PATCH] add install option to only install client cli, this is usefull for windows container to do Docker-out-of-Docker --- DockerMsftProvider.psm1 | 89 +++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/DockerMsftProvider.psm1 b/DockerMsftProvider.psm1 index dea8b23..9a5bfb1 100644 --- a/DockerMsftProvider.psm1 +++ b/DockerMsftProvider.psm1 @@ -216,6 +216,7 @@ function Install-Package $options = $request.Options $update = $false $force = $false + $cliOnly = $false if($options) { @@ -234,43 +235,51 @@ function Install-Package { $force = $true } - } - if(Test-Path $script:pathDockerD) - { - if($update -or $force) + if($options.ContainsKey("CliOnly")) { - # Uninstall if another installation exists - UninstallHelper + $cliOnly = $true } - elseif(-not $force) - { - $dockerVersion = & "$script:pathDockerClient" --version - $resultArr = $dockerVersion -split "," - $version = ($resultArr[0].Trim() -split " ")[2] + } - Write-Verbose "Docker $version already exists. Skipping install. Use -force to install anyway." - return - } - } - else + if(-not $cliOnly) { - # Install WindowsFeature containers - try + if(Test-Path $script:pathDockerD) { - InstallContainer - } - catch + if($update -or $force) + { + # Uninstall if another installation exists + UninstallHelper + } + elseif(-not $force) + { + $dockerVersion = & "$script:pathDockerClient" --version + $resultArr = $dockerVersion -split "," + $version = ($resultArr[0].Trim() -split " ")[2] + + Write-Verbose "Docker $version already exists. Skipping install. Use -force to install anyway." + return + } + } + else { - $ErrorMessage = $_.Exception.Message - ThrowError -CallerPSCmdlet $PSCmdlet ` - -ExceptionName $_.Exception.GetType().FullName ` - -ExceptionMessage $ErrorMessage ` - -ErrorId FailedToDownload ` - -ErrorCategory InvalidOperation + # Install WindowsFeature containers + try + { + InstallContainer + } + catch + { + $ErrorMessage = $_.Exception.Message + ThrowError -CallerPSCmdlet $PSCmdlet ` + -ExceptionName $_.Exception.GetType().FullName ` + -ExceptionMessage $ErrorMessage ` + -ErrorId FailedToDownload ` + -ErrorCategory InvalidOperation - return - } + return + } + } } $splitterArray = @("$separator") @@ -317,18 +326,21 @@ function Install-Package $null = Rename-Item -Path $script:pathDockerRoot -NewName $env:ProgramFiles\$dummyName $null = Rename-Item -Path $env:ProgramFiles\$dummyName -NewName $script:pathDockerRoot - if(Test-Path $script:pathDockerD) + if(-not $cliOnly) { - Write-Verbose "Trying to enable the docker service..." - $service = get-service -Name Docker -WarningAction SilentlyContinue -ErrorAction SilentlyContinue - if(-not $service) + if(Test-Path $script:pathDockerD) { - & "$script:pathDockerD" --register-service + Write-Verbose "Trying to enable the docker service..." + $service = get-service -Name Docker -WarningAction SilentlyContinue -ErrorAction SilentlyContinue + if(-not $service) + { + & "$script:pathDockerD" --register-service + } + } + else + { + Write-Error "Unable to expand docker to Program Files." } - } - else - { - Write-Error "Unable to expand docker to Program Files." } } catch @@ -1256,6 +1268,7 @@ function Get-DynamicOptions Install { Write-Output -InputObject (New-DynamicOption -Category $category -Name "Update" -ExpectedType Switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name "CliOnly" -ExpectedType Switch -IsRequired $false) } } }