Install-EXEFile.ps1

function Install-EXEFile 
{
   Param(
    [parameter(mandatory=$true,ValueFromPipeline=$true,ValueFromPipelinebyPropertyName=$true)]
    [ValidateNotNullorEmpty()]
    [string]$exeFile,
    [ValidateNotNullorEmpty()]
    [parameter(mandatory=$true)]
    [string]$targetDir
  )
  if (!(Test-Path -Path $exeFile)){
    throw ('Path to the EXE File {0} is invalid. Please supply a valid EXE file' -f ($exeFile))
  }
  $arguments = @(
    '/silent'
    '/verysilent'
    '/sp-'
    '/suppressmsgboxes'
  )
  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=`"$targetDir`""
  }
  Write-Verbose -Message ('Installing {0}.....' -f $exeFile)
  $process = Start-Process -FilePath $exeFile -ArgumentList $arguments -Wait -PassThru
  if ($process.ExitCode -eq 0){
    Write-Verbose -Message ('{0} has been successfully installed' -f $exeFile)
  }
  else 
  {
    if ($process.ExitCode -eq 1603)
    {
      Write-Verbose -Message ('installer exit code {0} for file {1}' -f $process.ExitCode, ($exeFile))
      Write-Verbose -Message 'Most likely the app is already installed.'
    }
    else
    {
      Write-Verbose -Message ('installer exit code {0} for file {1}' -f $process.ExitCode, ($exeFile))
    }
  }
}
# SIG # Begin signature block
# MIINIQYJKoZIhvcNAQcCoIINEjCCDQ4CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUu35XEhXpkzsU6jifmxC9J6p6
# 17+gggpWMIIE9TCCA92gAwIBAgIQDds7KUp1C2lNg1S+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
# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFBbt
# r8DBAO+LBYyTSeMs1UEObWs/MA0GCSqGSIb3DQEBAQUABIIBAAYKxfiifgr0ClRS
# bnULKidtWfvlm7VFmm5sM/WAeJDdLKTM66FkZ6DUaYztf6jtFBXjMNH8ySSkxoWb
# qHBuEPqS1WNb6MwvQS8b2F4/ejkZyx9g7LXdTL4O5UxvYGRNXrJsUkNV58bfAhT8
# u1TNpx+SfWgGbxCSSmgHmbJ/LQz2cwAEVN8HNaceaFzI7qu6R8XmLTa3ayqXjrhK
# ZQ7yR46Ts4fasch6R+6PACtgK6IBGhGkkfSAi62q6CkI5v098S3dVQaFrVO+vDnI
# oYhy81yTXSxTf78oywwRHrp/XuIdiQK5rt/MQi05fsP2L8vOQ55THIzm+8vGYecV
# 10DEWbI=
# SIG # End signature block