/build/static/layout/Breadcrumb_cap_w.png

7-Zip Deployment Script

<# 
setup.ps1
 
Uninstalls 7-zip and installs current version
 
http://msdn.microsoft.com/en-us/library/aa394373%28v=VS.85%29.aspx
Win32_Processor.AddressWidth provides the Operating System's word-width
Win32_Processor.DataWidth provides the Processor's word-width
 
Place x86 and x64 installers in .\setup subdirectory.
 
OS: XP, W7, W8
Arch: x86, x64
 
Adam Sailer
2013.08.05
#>
 
 
## Globals
$invoke = split-path -path $myinvocation.mycommand.path -parent
$os = gwmi Win32_OperatingSystem
$proc = gwmi Win32_Processor
$debug = $false
 
 
Function KillApps
{
    write-host "`n`n@@ Called KillApps" -fore Magenta
    get-process -name *7z* | stop-process -force
}
 
 
Function Uninstall
{
    Param([string]$inp)
 
    write-host "`n`n@@ Called Uninstall" -fore Magenta
        
    if (!$inp) { Return }
 
    $paths = @(
        'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
        'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
        ) | where-object { test-path $_ }
 
    $items = @(dir $paths | % { gp $_.PsPath } | ? { $_.DisplayName -imatch $inp })
     
    foreach ($item in $items)
    {
        if ($debug) { write $item }
        $uString = $item.UninstallString
                         
        if ($uString)
        {
            $app = $uString
            $options = '/S'
             
            if ($uString -imatch 'msiexec')
            {
                $array = $uString.Split(' {}')
                $app = $array[0]
                $options = "/qn /x {$($array[2])}"
            }                                             
             
            write "Uninstalling : $($item.DisplayName)"
            if (!$debug)
            {
                $process = (Start-Process -FilePath $app -ArgumentList $options -Wait -Passthru)
                if ($process.ExitCode) { write $process.ExitCode; exit $process.ExitCode }
            }
        }
    }
}
 
 
Function Setup
{
    write-host "`n`n@@ Called Setup" -fore Magenta
         
    $identifier = 'x86'
    if (($proc.AddressWidth -eq 64) -and ($proc.DataWidth -eq 64))
    { $identifier = 'x64' }
     
    $apps = @(dir -recurse $invoke\setup -include *$identifier.msi)
 
    foreach ($app in $apps)
    {
        write "Installing : $($app.Name)"
        $options = "/qn /i `"$app`""
        
        if (!$debug)
        {             
            $process = (Start-Process -FilePath msiexec.exe -ArgumentList $options -Wait -Passthru)
            if ($process.ExitCode) { write $process.ExitCode; exit $process.ExitCode }
        }
    }
}
 
 
#
#
 
 
Clear
KillApps
Uninstall 7-Zip
Setup

Comments

This post is locked
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ