mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
parent
7eac2121a5
commit
f0dcc36e6d
2 changed files with 9 additions and 74 deletions
|
@ -45,15 +45,7 @@ options:
|
||||||
description:
|
description:
|
||||||
- Path to a file created by installing the MSI to prevent from
|
- Path to a file created by installing the MSI to prevent from
|
||||||
attempting to reinstall the package on every run
|
attempting to reinstall the package on every run
|
||||||
msiname:
|
author: Matt Martz
|
||||||
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
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
EXAMPLES = '''
|
EXAMPLES = '''
|
||||||
|
@ -62,7 +54,5 @@ EXAMPLES = '''
|
||||||
|
|
||||||
# Uninstall an MSI file
|
# Uninstall an MSI file
|
||||||
- win_msi: path=C:\\\\7z920-x64.msi state=absent
|
- win_msi: path=C:\\\\7z920-x64.msi state=absent
|
||||||
|
|
||||||
- win_msi: path=C:\\\\7z920-x64.msi msiname="myproduct" msiversionstring="3.2.0"
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
|
@ -24,88 +24,33 @@ $params = Parse-Args $args;
|
||||||
$result = New-Object psobject;
|
$result = New-Object psobject;
|
||||||
Set-Attr $result "changed" $false;
|
Set-Attr $result "changed" $false;
|
||||||
|
|
||||||
If (!($params.path))
|
If (-not $params.path.GetType)
|
||||||
{
|
{
|
||||||
Fail-Json $result "missing required arguments: path"
|
Fail-Json $result "missing required arguments: path"
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(test-path $params.path))
|
$extra_args = ""
|
||||||
{
|
If ($params.extra_args.GetType)
|
||||||
Fail-Json $result "couldn't find a file at $($params.path)"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
If ($params.extra_args)
|
|
||||||
{
|
{
|
||||||
$extra_args = $params.extra_args;
|
$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 (Test-File $creates)
|
||||||
}
|
|
||||||
|
|
||||||
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))
|
|
||||||
{
|
{
|
||||||
Exit-Json $result;
|
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;
|
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
|
Else
|
||||||
{
|
{
|
||||||
#Do nothing
|
msiexec.exe /i $params.path /qb /l $logfile $extra_args;
|
||||||
Exit-Json $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Set-Attr $result "changed" $true;
|
Set-Attr $result "changed" $true;
|
||||||
|
|
Loading…
Reference in a new issue