Install-MSIFile.ps1
function Install-MSIFile { Param( [parameter(mandatory=$true,ValueFromPipeline=$true,ValueFromPipelinebyPropertyName=$true)] [ValidateNotNullorEmpty()] [string]$msiFile, [parameter(mandatory=$true)] [ValidateNotNullorEmpty()] [string]$targetDir ) if (!(Test-Path -Path $msiFile)){ throw ('Path to the MSI File {0} is invalid. Please supply a valid MSI file' -f ($msiFile)) } $arguments = @( '/i' ("`"{0}`"" -f $msiFile) '/qn' '/norestart' ) if ($targetDir){ if (!(Test-Path -Path $targetDir)){ throw ('Path to the Installation Directory {0} is invalid. Please supply a valid installation directory' -f ($targetDir)) } $arguments += ("INSTALLDIR=`"{0}`"" -f $targetDir) } Write-Verbose -Message ('Installing {0}.....' -f $msiFile) $process = Start-Process -FilePath msiexec.exe -ArgumentList $arguments -Wait -PassThru if ($process.ExitCode -eq 0){ Write-Verbose -Message ('{0} has been successfully installed' -f $msiFile) } else { if ($process.ExitCode -eq 1603) { Write-Verbose -Message ('installer exit code {0} for file {1}' -f $process.ExitCode, ($msifile)) Write-Verbose -Message 'Most likely the app is already installed.' } else { Write-Verbose -Message ('installer exit code {0} for file {1}' -f $process.ExitCode, ($msifile)) } } } # SIG # Begin signature block # MIINIQYJKoZIhvcNAQcCoIINEjCCDQ4CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUzczDNPlO3U1HJuQ95VPHOuzN # GVugggpWMIIE9TCCA92gAwIBAgIQDds7KUp1C2lNg1S+Cw9FaDANBgkqhkiG9w0B # AQsFADB/MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRp # b24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5 # bWFudGVjIENsYXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQTAeFw0xNTEyMDIw # MDAwMDBaFw0xODAxMzAyMzU5NTlaMIGHMQswCQYDVQQGEwJVUzETMBEGA1UECBMK # Q2FsaWZvcm5pYTESMBAGA1UEBxMJUml2ZXJzaWRlMRcwFQYDVQQKFA5DaHJvbnRl # Y2ggSW5jLjEdMBsGA1UECxQUU29mdHdhcmUgRGV2ZWxvcG1lbnQxFzAVBgNVBAMU # DkNocm9udGVjaCBJbmMuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA # pukh0glcvSNZ3FVOdbx60qhY1kNa89fdPNEBhQ/BOvYQN+FcwEoWoDp4HmclDUtT # pncKvsXZySbPMtZQOUGpI2D1lRnCQQCTWqJQ2UWBDJKfhk3O/46AI8SjwC0H60DJ # SA7I1K9oVpyGp595iQ66hsnaLUmNq4/CtLrUeyhBALtlbwrWJJgnTizJT9+N8FWR # r3aqTW1rjpN6ydDI5WopzrcJQDY3OX7Gkn5bud1QbY5mERoQ6t5JHun1u2MbkXBu # R5G24JMcXkdJrTQoKHolWXknU8yjnglqtZ+WcdVnUmoOs301dASJ2Ij384HoZe7P # E6CoPoWKxs93w7NEFP8PzQIDAQABo4IBYjCCAV4wCQYDVR0TBAIwADAOBgNVHQ8B # Af8EBAMCB4AwKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3N2LnN5bWNiLmNvbS9z # di5jcmwwZgYDVR0gBF8wXTBbBgtghkgBhvhFAQcXAzBMMCMGCCsGAQUFBwIBFhdo # dHRwczovL2Quc3ltY2IuY29tL2NwczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Qu # c3ltY2IuY29tL3JwYTATBgNVHSUEDDAKBggrBgEFBQcDAzBXBggrBgEFBQcBAQRL # MEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zdi5zeW1jZC5jb20wJgYIKwYBBQUHMAKG # Gmh0dHA6Ly9zdi5zeW1jYi5jb20vc3YuY3J0MB8GA1UdIwQYMBaAFJY7U/B5M5ev # fYPvLivMyreGHnJmMB0GA1UdDgQWBBQjUbqnPTPQ1a1EWJmpTZfzT/yEETANBgkq # hkiG9w0BAQsFAAOCAQEAjY6yJ1LtbzLiESH9MAQC/7EtLpayedozPxvy80psOmo8 # IVl3CC1L0AQH0Fa7qSNL313kTBzC9i/488XZz6cg4x1Ek94D82E9UL2e/Ur0CHeO # c9znbS9oKK6FoYjy/JFmr3UUI6LmVwJ1IK95MlRtHhf3e19rVdQDlA33z6Nk33hy # CU6kgrgxSmNKwsjY/YW1WPZpBXELK8aIxRyTepVYTQetCoLyDhTd8MuZYUzFIDCg # FTInQKHPf8JNMND/iItFadGbkUelmM1j1Q/x1n3it1245A/J3K4UzfE2Xslv41JU # l3dg6leOodoKUfwWzYm+H+Sx/rezb6IdgN7LpM0tBDCCBVkwggRBoAMCAQICED14 # 1/l2SWCyYX308B7KhiowDQYJKoZIhvcNAQELBQAwgcoxCzAJBgNVBAYTAlVTMRcw # FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3Qg # TmV0d29yazE6MDgGA1UECxMxKGMpIDIwMDYgVmVyaVNpZ24sIEluYy4gLSBGb3Ig # YXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMyBQ # dWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc1MB4XDTEz # MTIxMDAwMDAwMFoXDTIzMTIwOTIzNTk1OVowfzELMAkGA1UEBhMCVVMxHTAbBgNV # BAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVz # dCBOZXR3b3JrMTAwLgYDVQQDEydTeW1hbnRlYyBDbGFzcyAzIFNIQTI1NiBDb2Rl # IFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCXgx4A # Fq8ssdIIxNdok1FgHnH24ke021hNI2JqtL9aG1H3ow0Yd2i72DarLyFQ2p7z518n # TgvCl8gJcJOp2lwNTqQNkaC07BTOkXJULs6j20TpUhs/QTzKSuSqwOg5q1PMIdDM # z3+b5sLMWGqCFe49Ns8cxZcHJI7xe74xLT1u3LWZQp9LYZVfHHDuF33bi+VhiXjH # aBuvEXgamK7EVUdT2bMy1qEORkDFl5KK0VOnmVuFNVfT6pNiYSAKxzB3JBFNYoO2 # untogjHuZcrf+dWNsjXcjCtvanJcYISc8gyUXsBWUgBIzNP4pX3eL9cT5DiohNVG # uBOGwhud6lo43ZvbAgMBAAGjggGDMIIBfzAvBggrBgEFBQcBAQQjMCEwHwYIKwYB # BQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADBs # BgNVHSAEZTBjMGEGC2CGSAGG+EUBBxcDMFIwJgYIKwYBBQUHAgEWGmh0dHA6Ly93 # d3cuc3ltYXV0aC5jb20vY3BzMCgGCCsGAQUFBwICMBwaGmh0dHA6Ly93d3cuc3lt # YXV0aC5jb20vcnBhMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9zMS5zeW1jYi5j # b20vcGNhMy1nNS5jcmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMDMA4G # A1UdDwEB/wQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRU3ltYW50ZWNQ # S0ktMS01NjcwHQYDVR0OBBYEFJY7U/B5M5evfYPvLivMyreGHnJmMB8GA1UdIwQY # MBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEBCwUAA4IBAQAThRoe # aak396C9pK9+HWFT/p2MXgymdR54FyPd/ewaA1U5+3GVx2Vap44w0kRaYdtwb9oh # BcIuc7pJ8dGT/l3JzV4D4ImeP3Qe1/c4i6nWz7s1LzNYqJJW0chNO4LmeYQW/Ciw # sUfzHaI+7ofZpn+kVqU/rYQuKd58vKiqoz0EAeq6k6IOUCIpF0yH5DoRX9akJYmb # BWsvtMkBTCd7C6wZBSKgYBU/2sn7TUyP+3Jnd/0nlMe6NQ6ISf6N/SivShK9DbOX # Bd5EDBX6NisD3MFQAfGhEV0U5eK9J0tUviuEXg+mw3QFCu+Xw4kisR93873NQ9Tx # TKk/tYuEr2Ty0BQhMYICNTCCAjECAQEwgZMwfzELMAkGA1UEBhMCVVMxHTAbBgNV # BAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVz # dCBOZXR3b3JrMTAwLgYDVQQDEydTeW1hbnRlYyBDbGFzcyAzIFNIQTI1NiBDb2Rl # IFNpZ25pbmcgQ0ECEA3bOylKdQtpTYNUvgsPRWgwCQYFKw4DAhoFAKB4MBgGCisG # AQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw # HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFN7a # i/vHaCjma+tbw2By0tkTJUpAMA0GCSqGSIb3DQEBAQUABIIBAH04y3ktPD0d2GrS # c8EYDYcMmcEou7FREJtpV6mZKs5X7AJirlBRSLYbesHH7/Dr2C5MAwgz38fFD7rv # FjREa1/KKuE2OiPJiu2vJkJU9AuHaliXsvzRYohkfT+0sUlr9woipuPlJV537NeS # 36oZI4BatlGf2Xrt7RU10R6SvCDsMXb71YO8fm786bb1AYSoAb5ITkNq67NxQb2x # Oe1rDQYOOiO5kL3aVSSdz/kp75OFrzkY+s0VMywTmM5cofe3/88EKQS0KYE2U7Ma # HT8f5cn6pUgHUbMZXKc/7/7zMlmIRWE6jHWcjwT7Pd+z6udYkBcV3HDUGifQ/Yvu # y+iZCps= # SIG # End signature block |