diff --git a/windows/win_msi b/windows/win_msi index 12da6e1422c..9eb6f1bafa5 100644 --- a/windows/win_msi +++ b/windows/win_msi @@ -45,15 +45,7 @@ options: description: - Path to a file created by installing the MSI to prevent from attempting to reinstall the package on every run - msiname: - description: - - alternative way to check for the existence of an msi (can be used for both states (absent and present). - The msiname can be found by looking at name property of the the win32_product object for the item. - msiversionstring - description: - - used in conjunction with msiname - you cannot specify msiversionstring only. - The msiversionstring can be found by looking at version property of the the win32_product object for the item. -author: Matt Martz / Trond Hindenes +author: Matt Martz ''' EXAMPLES = ''' @@ -62,7 +54,5 @@ EXAMPLES = ''' # Uninstall an MSI file - win_msi: path=C:\\\\7z920-x64.msi state=absent - -- win_msi: path=C:\\\\7z920-x64.msi msiname="myproduct" msiversionstring="3.2.0" ''' diff --git a/windows/win_msi.ps1 b/windows/win_msi.ps1 index 6f27e0eea34..1c2bc8a3019 100644 --- a/windows/win_msi.ps1 +++ b/windows/win_msi.ps1 @@ -24,88 +24,33 @@ $params = Parse-Args $args; $result = New-Object psobject; Set-Attr $result "changed" $false; -If (!($params.path)) +If (-not $params.path.GetType) { Fail-Json $result "missing required arguments: path" } -if (!(test-path $params.path)) -{ - Fail-Json $result "couldn't find a file at $($params.path)" -} - - -If ($params.extra_args) +$extra_args = "" +If ($params.extra_args.GetType) { $extra_args = $params.extra_args; } -Else -{ - $extra_args = "" -} -if ($params.MsiVersionString) +If ($params.creates.GetType -and $params.state.GetType -and $params.state -ne "absent") { - $MsiVersionString = $params.MsiVersionString -} - -if ($params.MsiName) -{ - $MsiName = $params.MsiName -} - -if (($MsiVersionString) -and (!($MsiName))) -{ - #If msiversionstring is specified, we need msiname as well - Fail-Json $result "missing required arguments: MsiName" -} - - -If (($params.creates) -and ($params.state -ne "absent")) -{ - If (Test-Path ($params.creates)) + If (Test-File $creates) { Exit-Json $result; } } -if ($MsiName) +$logfile = [IO.Path]::GetTempFileName(); +if ($params.state.GetType -and $params.state -eq "absent") { - $AlreadyInstalledMsi = Get-WmiObject -Query "Select * from win32_product" | where {$_.Name -eq $MsiName} -} -ElseIf (($MsiName) -and ($MsiVersionString)) -{ - $AlreadyInstalledMsi = Get-WmiObject -Query "Select * from win32_product" | where {($_.Name -eq $MsiName) -and ($_.version -eq $MsiVersionString)} -} -Else -{ - if ($params.state -eq "absent") - { - #existing msi check not specify, assume msi does exist - $AlreadyInstalledMsi = $true - } - if ($params.state -eq "present") - { - #existing msi check not specify, assume msi does exist - $AlreadyInstalledMsi = $false - } -} - -if (($AlreadyInstalledMsi) -and ($params.state -eq "absent")) -{ - #Already installed, perform uninstall msiexec.exe /x $params.path /qb /l $logfile $extra_args; } -Elseif((!$AlreadyInstalledMsi) -and ($params.state -eq "present")) -{ - #Not already installed, perform the install - $logfile = [IO.Path]::GetTempFileName(); - msiexec.exe /i $params.path /qb /l $logfile $extra_args; -} Else { - #Do nothing - Exit-Json $result; + msiexec.exe /i $params.path /qb /l $logfile $extra_args; } Set-Attr $result "changed" $true;