win_unzip: Use absolute path for src and dest

win_unzip fails to extract files when either src or dest contains
complex paths such as "..\..\" or "C:\\Program Files" (double slashes).
Fix this by fetching absolute path of both before invoking CopyHere
method.
This commit is contained in:
Andrea Scarpino 2016-03-20 12:29:26 +01:00 committed by Matt Clay
parent d2fe2287f9
commit 45a32137ad

View file

@ -59,8 +59,8 @@ $rm = ConvertTo-Bool (Get-AnsibleParam -obj $params -name "rm" -default "false")
If ($ext -eq ".zip" -And $recurse -eq $false) { If ($ext -eq ".zip" -And $recurse -eq $false) {
Try { Try {
$shell = New-Object -ComObject Shell.Application $shell = New-Object -ComObject Shell.Application
$zipPkg = $shell.NameSpace($src) $zipPkg = $shell.NameSpace([IO.Path]::GetFullPath($src))
$destPath = $shell.NameSpace($dest) $destPath = $shell.NameSpace([IO.Path]::GetFullPath($dest))
# 20 means do not display any dialog (4) and overwrite any file (16) # 20 means do not display any dialog (4) and overwrite any file (16)
$destPath.CopyHere($zipPkg.Items(), 20) $destPath.CopyHere($zipPkg.Items(), 20)
$result.changed = $true $result.changed = $true