mirror of https://github.com/microsoft/WSL
54 lines
1.5 KiB
PowerShell
54 lines
1.5 KiB
PowerShell
[cmdletbinding(PositionalBinding = $false)]
|
|
param (
|
|
[string]$VmName,
|
|
[string]$Username,
|
|
[string]$Password,
|
|
[ValidateSet("X64", "arm64")][string]$Platform = "X64",
|
|
[ValidateSet("Debug", "Release")][string]$BuildType = "Debug",
|
|
[string]$RemoteTempFolder = "C:\\",
|
|
[string]$BuildOutputPath = [string](Get-Location),
|
|
[parameter(ValueFromRemainingArguments = $true)]
|
|
[string[]]$ExtraMsiArgs
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
if ([string]::IsNullOrEmpty($Password)) {
|
|
$SecurePassword = New-Object System.Security.SecureString
|
|
}
|
|
else {
|
|
$SecurePassword = ConvertTo-SecureString "$Password" -AsPlainText -Force
|
|
}
|
|
|
|
$Credential = New-Object System.Management.Automation.PSCredential("$Username", $SecurePassword)
|
|
$Session = New-PSSession -VMName $VmName -Credential $Credential
|
|
|
|
$Package = $BuildOutputPath + "/bin/$Platform/$BuildType/wsl.msi"
|
|
Copy-Item -ToSession $Session -Path $Package -Destination "$RemoteTempFolder" -Force
|
|
|
|
|
|
Invoke-Command -Session $Session -ScriptBlock {
|
|
|
|
$MSIArguments = @(
|
|
"/i"
|
|
"$using:RemoteTempFolder\wsl.msi"
|
|
"/qn"
|
|
"/norestart"
|
|
)
|
|
|
|
if ($using:ExtraMsiArgs)
|
|
{
|
|
$MSIArguments += $using:ExtraMsiArgs
|
|
}
|
|
|
|
$exitCode = (Start-Process -Wait "msiexec.exe" -ArgumentList $MSIArguments -NoNewWindow -PassThru).ExitCode
|
|
if ($exitCode -Ne 0)
|
|
{
|
|
Write-Host "Failed to install package: $exitCode"
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "Package $using:Package successfully deployed on $using:VmName"
|
|
}
|
|
|
|
Remove-PSSession -Session $Session |