I uses Appdeploy Toolkit to install Google Chrome.
You download the enterprise msi-files from the following address.
Scroll down on the page and you will find the msi-files…
Hints:
- Row 72-73 – Add the productcode from the msi-files here. You can download the application Orca from Microsoft to extract the productcode.
- Or you can use powershell…. Extract productcode from MSI
- Row 126-153 – Uninstall Google Chrome and remove folders under program files
- Row 169-183 – Install Google Chrome depending if you have 32-bit or 64-bit OS.
- Row 193-196 – Set registry value to prevent Google Chrome to check after new version, you control version update.
- Row 199 – Set registry value to inventory if application are installed by SCCM
- Row 203 – Run Hardware Inventory to SCCM
- Row 205-206 – Pin Google Chrome icon to startmenu and taskbar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 |
<# .SYNOPSIS This script performs the installation or uninstallation of an application(s). .DESCRIPTION The script is provided as a template to perform an install or uninstall of an application(s). The script either performs an "Install" deployment type or an "Uninstall" deployment type. The install deployment type is broken down into 3 main sections/phases: Pre-Install, Install, and Post-Install. The script dot-sources the AppDeployToolkitMain.ps1 script which contains the logic and functions required to install or uninstall an application. .PARAMETER DeploymentType The type of deployment to perform. Default is: Install. .PARAMETER DeployMode Specifies whether the installation should be run in Interactive, Silent, or NonInteractive mode. Default is: Interactive. Options: Interactive = Shows dialogs, Silent = No dialogs, NonInteractive = Very silent, i.e. no blocking apps. NonInteractive mode is automatically set if it is detected that the process is not user interactive. .PARAMETER AllowRebootPassThru Allows the 3010 return code (requires restart) to be passed back to the parent process (e.g. SCCM) if detected from an installation. If 3010 is passed back to SCCM, a reboot prompt will be triggered. .PARAMETER TerminalServerMode Changes to "user install mode" and back to "user execute mode" for installing/uninstalling applications for Remote Destkop Session Hosts/Citrix servers. .PARAMETER DisableLogging Disables logging to file for the script. Default is: $false. .EXAMPLE powershell.exe -Command "& { & '.\Deploy-Application.ps1' -DeployMode 'Silent'; Exit $LastExitCode }" .EXAMPLE powershell.exe -Command "& { & '.\Deploy-Application.ps1' -AllowRebootPassThru; Exit $LastExitCode }" .EXAMPLE powershell.exe -Command "& { & '.\Deploy-Application.ps1' -DeploymentType 'Uninstall'; Exit $LastExitCode }" .EXAMPLE Deploy-Application.exe -DeploymentType "Install" -DeployMode "Silent" .NOTES Toolkit Exit Code Ranges: 60000 - 68999: Reserved for built-in exit codes in Deploy-Application.ps1, Deploy-Application.exe, and AppDeployToolkitMain.ps1 69000 - 69999: Recommended for user customized exit codes in Deploy-Application.ps1 70000 - 79999: Recommended for user customized exit codes in AppDeployToolkitExtensions.ps1 .LINK http://psappdeploytoolkit.com #> [CmdletBinding()] Param ( [Parameter(Mandatory=$false)] [ValidateSet('Install','Uninstall')] [string]$DeploymentType = 'Install', [Parameter(Mandatory=$false)] [ValidateSet('Interactive','Silent','NonInteractive')] [string]$DeployMode = 'Silent', [Parameter(Mandatory=$false)] [switch]$AllowRebootPassThru = $false, [Parameter(Mandatory=$false)] [switch]$TerminalServerMode = $false, [Parameter(Mandatory=$false)] [switch]$DisableLogging = $false ) Try { ## Set the script execution policy for this process Try { Set-ExecutionPolicy -ExecutionPolicy 'ByPass' -Scope 'Process' -Force -ErrorAction 'Stop' } Catch {} ##*=============================================== ##* VARIABLE DECLARATION ##*=============================================== ## Variables: Application [string]$appVendor = 'Google' [string]$appName = 'Chrome' [string]$appVersion = '69.0.3497.81' [string]$appArch = '' [string]$appLang = 'EN' [string]$appRevision = '01' [string]$appScriptVersion = '1.0.0' [string]$appScriptDate = '11/9/2018' [string]$appScriptAuthor = 'Christian Damberg, Cygate AB' ##*=============================================== ## Variables: Install Titles (Only set here to override defaults set by the toolkit) [string]$installName = '' [string]$installTitle = '' [string]$guid32bit = '{4E5C6BC5-6AFD-3921-937E-D23AE71D8729}' [string]$guid64bit = '{9A0CF2BF-1F53-3338-B711-53C165017D1A}' ##* Do not modify section below #region DoNotModify ## Variables: Exit Code [int32]$mainExitCode = 0 ## Variables: Script [string]$deployAppScriptFriendlyName = 'Deploy Application' [version]$deployAppScriptVersion = [version]'3.6.9' [string]$deployAppScriptDate = '02/12/2017' [hashtable]$deployAppScriptParameters = $psBoundParameters ## Variables: Environment If (Test-Path -LiteralPath 'variable:HostInvocation') { $InvocationInfo = $HostInvocation } Else { $InvocationInfo = $MyInvocation } [string]$scriptDirectory = Split-Path -Path $InvocationInfo.MyCommand.Definition -Parent ## Dot source the required App Deploy Toolkit Functions Try { [string]$moduleAppDeployToolkitMain = "$scriptDirectory\AppDeployToolkit\AppDeployToolkitMain.ps1" If (-not (Test-Path -LiteralPath $moduleAppDeployToolkitMain -PathType 'Leaf')) { Throw "Module does not exist at the specified location [$moduleAppDeployToolkitMain]." } If ($DisableLogging) { . $moduleAppDeployToolkitMain -DisableLogging } Else { . $moduleAppDeployToolkitMain } } Catch { If ($mainExitCode -eq 0){ [int32]$mainExitCode = 60008 } Write-Error -Message "Module [$moduleAppDeployToolkitMain] failed to load: `n$($_.Exception.Message)`n `n$($_.InvocationInfo.PositionMessage)" -ErrorAction 'Continue' ## Exit the script, returning the exit code to SCCM If (Test-Path -LiteralPath 'variable:HostInvocation') { $script:ExitCode = $mainExitCode; Exit } Else { Exit $mainExitCode } } #endregion ##* Do not modify section above ##*=============================================== ##* END VARIABLE DECLARATION ##*=============================================== If ($deploymentType -ine 'Uninstall') { ##*=============================================== ##* PRE-INSTALLATION ##*=============================================== [string]$installPhase = 'Pre-Installation' stop-process -Name googleupdate -force ## Show Welcome Message, close Internet Explorer if required, allow up to 3 deferrals, verify there is enough disk space to complete the install, and persist the prompt # Show-InstallationWelcome -CloseApps 'chrome' -AllowDefer -DeferTimes 3 -CheckDiskSpace -PersistPrompt Show-InstallationWelcome -CloseApps 'chrome' -PersistPrompt -AllowDefer -DeferTimes 3 -CloseAppsCountdown 6800 ## Show Progress Message (with the default message) Show-InstallationProgress ## <Perform Pre-Installation tasks here> Remove-MSIApplications 'Google Chrome' Remove-MSIApplications 'Google Update Helper' stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force if (test-path -Path $envProgramFiles'\google\chrome') { remove-folder -path $envProgramFiles'google\chrome' } if (test-path -Path $envProgramFilesx86'\google\chrome') { remove-folder -path $envProgramFilesx86'google\chrome' } if (test-path -Path $envProgramFiles'\google\update') { remove-folder -path $envProgramFiles'google\update' } if (test-path -Path $envProgramFilesx86'\google\update') { remove-folder -path $envProgramFilesx86'google\update' } ##*=============================================== ##* INSTALLATION ##*=============================================== [string]$installPhase = 'Installation' ## Handle Zero-Config MSI Installations If ($useDefaultMsi) { [hashtable]$ExecuteDefaultMSISplat = @{ Action = 'Install'; Path = $defaultMsiFile }; If ($defaultMstFile) { $ExecuteDefaultMSISplat.Add('Transform', $defaultMstFile) } Execute-MSI @ExecuteDefaultMSISplat; If ($defaultMspFiles) { $defaultMspFiles | ForEach-Object { Execute-MSI -Action 'Patch' -Path $_ } } } #32bit version if ($is64bit -eq $false) { execute-msi -action install -path "$dirfiles\32\googlechromestandaloneenterprise.msi" Copy-File -Path "$dirSupportFiles\master_preferences" -Destination "$envProgramFilesx86\Google\chrome\application" -ContinueOnError $true } #64bit version if ($is64bit -eq $true) { execute-msi -action install -path "$dirfiles\64\googlechromestandaloneenterprise64.msi" Copy-File -Path "$dirSupportFiles\master_preferences" -Destination "$envProgramFiles\Google\chrome\application" -ContinueOnError $true Copy-File -Path "$dirSupportFiles\master_preferences" -Destination "$envProgramFilesx86\Google\chrome\application" -ContinueOnError $true } ##*=============================================== ##* POST-INSTALLATION ##*=============================================== [string]$installPhase = 'Post-Installation' #stop autoupdate set-registrykey -key 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\update' -name 'updatedefault' -value '0' -type DWORD #set updatecycle to zero set-registrykey -key 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\update' -name 'AutoUpdateCheckPeriodMinutes' -value '0' -type DWORD #sodracontrol set-registrykey -key 'HKEY_LOCAL_MACHINE\SOFTWARE\CompanyName\Chrome' -name 'ChromeVersionDeployed' -value $appVersion -type String # Copy-File -Path "$dirSupportFiles\master_preferences" -Destination "$envProgramFilesx86\Google\chrome\application" -ContinueOnError $true Invoke-SCCMTask 'HardwareInventory' Set-PinnedApplication -Action 'PintoStartMenu' -FilePath "$envProgramFilesX86\Google\Chrome\Application\chrome.exe" Set-PinnedApplication -Action 'PintoTaskbar' -FilePath "$envProgramFilesX86\Google\Chrome\Application\chrome.exe" ## Display a message at the end of the install If (-not $useDefaultMsi) { Show-InstallationPrompt -Message 'Senaste versionen av Google Chrome är installerad/Latest version of Google Chrome is installed' -ButtonRightText 'OK' -Icon Information -NoWait } } ElseIf ($deploymentType -ieq 'Uninstall') { ##*=============================================== ##* PRE-UNINSTALLATION ##*=============================================== [string]$installPhase = 'Pre-Uninstallation' ## Show Welcome Message, close Internet Explorer with a 60 second countdown before automatically closing Show-InstallationWelcome -CloseApps 'chrome' -CloseAppsCountdown 60 ## Show Progress Message (with the default message) Show-InstallationProgress ##*=============================================== ##* UNINSTALLATION ##*=============================================== [string]$installPhase = 'Uninstallation' ## Handle Zero-Config MSI Uninstallations If ($useDefaultMsi) { [hashtable]$ExecuteDefaultMSISplat = @{ Action = 'Uninstall'; Path = $defaultMsiFile }; If ($defaultMstFile) { $ExecuteDefaultMSISplat.Add('Transform', $defaultMstFile) } Execute-MSI @ExecuteDefaultMSISplat } # <Perform Uninstallation tasks here> Execute-MSI -Action Uninstall -Path $guid32bit -ContinueOnError $true Execute-MSI -Action Uninstall -Path $guid64bit -ContinueOnError $true Remove-MSIApplications 'Google Chrome' -ContinueOnError $true Remove-MSIApplications 'Google Update Helper' -ContinueOnError $true stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force stop-process -Name googleupdate -force if (test-path -Path $envProgramFiles'\google\chrome') { remove-folder -path $envProgramFiles'google\chrome' } if (test-path -Path $envProgramFilesx86'\google\chrome') { remove-folder -path $envProgramFilesx86'google\chrome' } if (test-path -Path $envProgramFiles'\google\update') { remove-folder -path $envProgramFiles'google\update' } if (test-path -Path $envProgramFilesx86'\google\update') { remove-folder -path $envProgramFilesx86'google\update' } Remove-RegistryKey -key 'HKEY_LOCAL_MACHINE\SOFTWARE\CompanyName\Chrome' ##*=============================================== ##* POST-UNINSTALLATION ##*=============================================== [string]$installPhase = 'Post-Uninstallation' ## <Perform Post-Uninstallation tasks here> } ##*=============================================== ##* END SCRIPT BODY ##*=============================================== ## Call the Exit-Script function to perform final cleanup operations Exit-Script -ExitCode $mainExitCode } Catch { [int32]$mainExitCode = 60001 [string]$mainErrorMessage = "$(Resolve-Error)" Write-Log -Message $mainErrorMessage -Severity 3 -Source $deployAppScriptFriendlyName Show-DialogBox -Text $mainErrorMessage -Icon 'Stop' Exit-Script -ExitCode $mainExitCode } |