Exemplos de scripts ao instalar em vários computadores
Abaixo, você encontrará uma coleção de scripts que os administradores de TI podem considerar úteis no gerenciamento do aplicativo GoTo. Esses exemplos de scripts facilitam tarefas que não são executadas automaticamente por instaladores, políticas de grupo etc. Os administradores de TI podem integrá-los manualmente em seus scripts se precisarem realizar essas tarefas.
Desinstalar GoTo app instalação por usuário (Windows)
Este script pode ser usado para desinstalar o GoTo app para o usuário atual. Ele funciona somente em instalações por usuário. Ele deve ser executado pelo contexto de usuário para cada perfil de usuário, para o qual o aplicativo precisa ser desinstalado.
<# .SYNOPSIS This script checks if the GoTo app is installed for the current user and, if so, uninstalls it silently. .DESCRIPTION The script checks if the app is running and stops it if so. It then reads the uninstall command line from the "QuietUninstallString" entry under the "Uninstall" key for the GoTo app and executes it. #> $ErrorActionPreference = "Stop" Function Stop-App { Param ( [Parameter(Mandatory)][String]$AppName ) # Close the app, if running. $AppProcesses = Get-Process -Name $AppName -ErrorAction SilentlyContinue if ($AppProcesses) { Write-Host "Stopping $AppName app..." Stop-Process -Name $AppName -Force # Wait a bit Start-Sleep -Seconds 5 } else { Write-Host "$AppName app is not running" } # Check that the app is not still running $AppProcesses = Get-Process -Name $AppName -ErrorAction SilentlyContinue if ($AppProcesses) { Write-Host "$AppName app is still running, aborting" Exit 1 } } # Make sure the GoTo app is not running Stop-App -AppName GoTo # Read the QuietUninstallString try { $UninstStr = Get-ItemPropertyValue -LiteralPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\b5746384-3503-4fbf-824a-0a42d1bd0639" -Name "QuietUninstallString" } catch { $UninstStr = $null } if ($UninstStr) { # Optionally, preserve the user profile # $UninstStr = "$UninstStr --KeepProfile" Write-Host "Found GoTo app installed, uninstalling using command: $UninstStr" # Uninstall app $Process = Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/c $UninstStr" -PassThru $Process.WaitForExit() Write-Host "Done" } else { Write-Host "GoTo app is not installed" }
Limpar perfis de usuário (Windows e Mac)
Este script pode ser usado para limpar o perfil de usuário usado pelo GoTo app após desinstalar o aplicativo. Os itens do perfil de usuário para limpar são os mesmos, independentemente de se GoTo app foi instalado por máquina ou por usuário, mas normalmente este script é útil para limpar após desinstalação por máquina. Isso ocorre porque a desinstalação do MSI para instalação por máquina não limpa os perfis de usuário, enquanto a desinstalação por usuário limpa o perfil do usuário como parte da desinstalação.
O script deve ser executado pelo contexto de usuário para cada usuário, para o qual o perfil precisa ser limpo.
Windows
REM Delete the app registry key REG DELETE HKEY_CURRENT_USER\Software\LogMeInInc\GoTo /f REM Delete the auto-start setting REG DELETE HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v GoTo /f REM Delete the app data folder RMDIR /S /Q "%APPDATA%\GoTo"
Mac
# Delete the plist rm -f ~/Library/Preferences/com.logmein.goto.plist # Delete the app data folder rm -rf ~/Library/Application\ Support/GoTo
Definir ou remover a configuração do registro de início automático (Windows )
Esses scripts podem ser usados para definir ou remover a configuração do registro de início automático usada para iniciar o GoTo app quando o usuário efetua login. O script funciona tanto para instalações de aplicativos por máquina quanto por usuário, mas a configuração do registro de início automático está no registro do usuário (HKCU).
O script deve ser executado pelo contexto de usuário para cada perfil de usuário, para o qual a configuração de início automático precisa ser configurada ou removida.
Para definir a configuração do registro de inicialização:
<# .SYNOPSIS This script sets the auto-start registry setting used to automatically start the GoTo app when the user logs in. .DESCRIPTION The script checks the installation folder of the app, in both HKLM and HKCU (it works for both per-machine and per-user app installations). It then sets a "GoTo" entry under the "Run" key for the current user. #> $ErrorActionPreference = "Stop" # Read the InstallLocation. Try both HKLM and HKCU try { $instLoc = Get-ItemPropertyValue -LiteralPath "HKLM:\Software\LogMeInInc\GoTo\ElectronInstallDetails" -Name "InstallLocation" } catch { try { $instLoc = Get-ItemPropertyValue -LiteralPath "HKCU:\Software\LogMeInInc\GoTo\ElectronInstallDetails" -Name "InstallLocation" } catch { $instLoc = $null } } if ($instLoc -ne $null) { Write-Host "Found GoTo app installed at: $instLoc" # Set the auto-start registry setting $regValue = Join-Path -Path $instLoc -ChildPath "GoTo.exe" -Resolve Write-Host "Setting auto-start registry setting to value: $regValue" Set-ItemProperty -LiteralPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "GoTo" -Value $regValue -Type String Write-Host "Done" } else { Write-Host "GoTo app is not installed" }
Para remover a configuração do registro de inicialização:
REM Delete the auto-start setting REG DELETE HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v GoTo /f
Desinstalar GoTo MSI versões 3.17 e abaixo (Windows)
Este script pode ser usado para desinstalar o GoTo MSI versões 3.17 e abaixo, que estão obsoletas.
Ele encontra e desinstala os MSIs da máquina e do usuário, mas há requisitos diferentes para o contexto de execução deste script para os dois tipos de MSI. Leia a descrição do script para obter mais detalhes.
<# .SYNOPSIS This script uninstalls all MSI versions of the GoTo/GoToConnect app versions 3.17 and below. .DESCRIPTION The script checks if the app is running and stops it if so. It then checks for MSI packages with the UpgradeCode used by MSI versions 3.17 and below and uninstalls them. The Machine MSI requires admin privileges to be uninstalled, so run this script from an admin account in order to uninstall the Machine MSI. Since the User MSI is installed on the user level, this script should be run in the user context that has the User MSI installed. #> $ErrorActionPreference = "Stop" # This is the UpgradeCode for: # - MSI versions 3.17 and below, both the User and Machine MSI installers # - MSI versions 3.18 and above, only the MSI for per-machine installation $UpgradeCode = "{147165DC-20D5-5870-9653-1A02A52D396F}" # MSI versions below this one will be uninstalled $UninstallVersionsBelow = [System.Version]::Parse("3.18") Function Stop-App { Param ( [Parameter(Mandatory)][String]$AppName ) # Close the app, if running. $AppProcesses = Get-Process -Name $AppName -ErrorAction SilentlyContinue if ($AppProcesses) { Write-Host "Stopping $AppName app..." Stop-Process -Name $AppName -Force # Wait a bit Start-Sleep -Seconds 5 } else { Write-Host "$AppName app is not running" } # Check that the app is not still running $AppProcesses = Get-Process -Name $AppName -ErrorAction SilentlyContinue if ($AppProcesses) { Write-Host "$AppName app is still running, aborting" Exit 1 } } # The app was called GoToConnect in older versions. Make sure both the GoTo and GoToConnect apps are not running Stop-App -AppName GoTo Stop-App -AppName GoToConnect $AllProps = Get-CimInstance -Class Win32_Property # Get an array of product codes with the matching upgrade code $ProductCodes = @(($AllProps | Where-Object {$_.Property -eq "UpgradeCode" -and $_.Value -eq $UpgradeCode}).ProductCode) if (!$ProductCodes) { Write-Host "No installed MSIs found with the specified UpgradeCode $UpgradeCode" } else { Write-Host "Found $($ProductCodes.Length) MSI(s) installed with the specified UpgradeCode $UpgradeCode`n" foreach ($ProductCode in $ProductCodes) { # Obtain the ProductName and ProductVersion of the current ProductCode $ProductName = ($AllProps | Where-Object {$_.Property -eq "ProductName" -and $_.ProductCode -eq $ProductCode}).Value $ProductVersion = ($AllProps | Where-Object {$_.Property -eq "ProductVersion" -and $_.ProductCode -eq $ProductCode}).Value Write-Host "ProductName: $ProductName ProductVersion: $ProductVersion ProductCode: $ProductCode" try { $ProductVersionParsed = [System.Version]::Parse($ProductVersion) if ($ProductVersionParsed -lt $UninstallVersionsBelow) { Write-Host "`tProductVersion below threshold, uninstalling..." # Start msiexec.exe to uninstall the current ProductCode $MSIArguments = @( "/x" $ProductCode "/qn" "/norestart" ) $Process = Start-Process "msiexec.exe" -ArgumentList $MSIArguments -Wait -NoNewWindow -PassThru # Check exit code from msiexec.exe if ($Process.ExitCode -eq 0) { Write-Host "`tCompleted." } else { Write-Host "`tFailed to uninstall - msiexec.exe exit code $($Process.ExitCode)." } } else { Write-Host "`tProductVersion too high, not uninstalling" } } catch { Write-Host "`tUnable to parse ProductVersion '$ProductVersion'" } } }