Random fix: Resolving issues with Chrome pinned icons associated to 32-bit chrome where 64-bit is now installed

Season’s greetings!

Here’s an interesting fix I found to an odd issue from last week at a client

It should be noted this issue could probably be fixed with Avanti, or WEM, but that wasn’t an option for my client, so I just used PowerShell instead

For this client, we had been pushing a managed start menu that included pinned icons in the TILE area as well as a set of pinned task bar area icons. One of those pinned icons was Chrome

As many of you are aware, Chrome has been 64-bit for years, but in their wizDOOM, the Chrome dev folks install to c:\Program Files (x86). This was reported as a bug to Google six years back, they finally “fixed” it this year (2020). Damn, son

Google Chrome is soon going to be installed in a different directory on Windows – gHacks Tech News

So! Versions from June 2020 onwards will install to c:\Program Files , instead of c:\Program Files (x86)

In my testing on a Win 10 VDI golden image, I immediately noted the pinned icon for Chrome had turned into a white icon, indicating the path was broken. Now, the tricky thing, these pinned icons are PER-USER, and located here:

%AppData%\Roamin\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar

The Win 10 Citrix VDI deployment I’m working on started late last year, so we’ve got 1000’s of users with potentially bad cached pinned start menu icons affected as soon as the golden image is updated, and the Chrome install path flips from c:\Program Files (x86) to c:\Program Files

The fix was to use the following Powershell code to check if the user was logging into Win 10 Citrix VDI that had been updated with Chrome installed to c:\Program Files, and check against their pinned shortcuts , and take action as required to reset their pinned icons from local system defaults

 

$WScript = New-Object -ComObject WScript.Shell

if (test-path "C:\Program Files\Google\Chrome\Application\chrome.exe") {

    $PinnedLNK = Get-Childitem "$Env:Appdata\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" | Where {$_.Name -like "*Chrome*"}
            
    ForEach ($i in $PinnedLNK) {    

        $Fullname = $i.FullName
        $Shortname = $i.Name
        $LNK = $WScript.CreateShortcut($i.FullName)

        write-host "Checking shortcut paths for 32-bit Chrome" -ForegroundColor Cyan
    
            If (($LNK.WorkingDirectory -eq "C:\Program Files (x86)\Google\Chrome\Application")) {        
                    
                Write-Warning "32-bit chrome pinned LNK detected where 64-bit Chrome is installed, starting pinned icon reset process"

                remove-item $Fullname

                copy-item -Path "C:\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar\Google Chrome.lnk" -Destination "$Env:AppData\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar\" -Force

                Remove-Item 'HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*$start.tilegrid$windows.data.curatedtilecollection.tilecollection' -force -recurse -ErrorAction SilentlyContinue
            
                get-process shellexperiencehost -ErrorAction SilentlyContinue | stop-process -force -ErrorAction SilentlyContinue
    
                write-host "Pausing for for 3 seconds..."
                start-sleep -s 3
    
                remove-item -Path "$env:LOCALAPPDATA\Packages\Microsoft.Windows.ShellExperienceHost_cw5n1h2txyewy\TempState\StartUnifiedTileModelCache.dat" -Force -ErrorAction SilentlyContinue
                remove-item -Path "$env:LOCALAPPDATA\Packages\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\TempState\StartUnifiedTileModelCache.dat" -Force -ErrorAction SilentlyContinue
                remove-item -Path "HKCU:\\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" -Force -Recurse -ErrorAction SilentlyContinue

                Get-Process Explorer | Stop-Process -force -ErrorAction SilentlyContinue
        
            }

            Else {

                Write-host "No action required" -ForegroundColor Cyan

            }    
     } #ForEach LNK

} # If test-path on "C:\Program Files\Google\Chrome\Application\chrome.exe"

Else {

    write-host "Only 32-bit chrome is installed on this system" -ForegroundColor Cyan

} 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website at WordPress.com
Get started
%d bloggers like this: