Actual Quick Fixes for Teams 2.0 VDI - Pain Points

Our favorite product, Microsoft Teams 2.0 for VDI, is currently generating a lot of pain points, which is why I have compiled a small list of issues. I intend to keep adding to this list regularly.

Actual Quick Fixes for Teams 2.0 VDI - Pain Points

The Teams icon is missing from the Start Menu

Teams AppX Package is not registered systemwide

Many of the Windows inbox applications have been converted to AppX packages. AppX packages have a dependency on the AppReadiness service, which works on behalf of the user to register these types of applications during the sign-in process. Since a VDI user’s sign in is technically a new sign in each time, the AppReadiness service doesn’t have all the necessary information to properly set up the inbox applications, especially when those applications are upgraded between image or feature updates.

Use PowerShell to register AppX applications

Systemwide

Execute the following code during your sealing process on your master image.

				
					$AllUserInboxAppsKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\InboxApplications"
$AllUserApps = Get-ChildItem -Path $AllUserInboxAppsKey
ForEach($Key in $AllUserApps) {
    Add-AppxPackage -DisableDevelopmentMode -Register (Get-ItemProperty -Path $Key.PsPath).Path
}
$AllUserAppsKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications"
$AllUserApps = Get-ChildItem -Path $AllUserAppsKey
ForEach($Key in $AllUserApps) {
    Add-AppxPackage -DisableDevelopmentMode -Register (Get-ItemProperty -Path $Key.PsPath).Path
}
				
			
Usercontext

Sometimes, even when registering the AppX Packages, the application is not present for the user. However, this should be fixed in Teams vs. 24215.1007.3082.1590.

The following has to be executed in the user’s context:

				
					$AllUserInboxAppsKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\InboxApplications"
$AllUserApps = Get-ChildItem -Path $AllUserInboxAppsKey
$TeamsApp = $AllUserApps | Where-Object { $_.Name -like "*MSTeams*" }
ForEach($Key in $TeamsApp) {
    Add-AppxPackage -DisableDevelopmentMode -Register (Get-ItemProperty -Path $Key.PsPath).Path
}
$AllUserAppsKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications"
$AllUserApps = Get-ChildItem -Path $AllUserAppsKey
$TeamsApp = $AllUserApps | Where-Object { $_.Name -like "*MSTeams*" }
ForEach($Key in $TeamsApp) {
    Add-AppxPackage -DisableDevelopmentMode -Register (Get-ItemProperty -Path $Key.PsPath).Path
}
				
			

Possible methods to deploy this script to your users:

  • Logon script via GPO
  • WEM External Task
  • RunKey
  • RunOnceKey

Teams Icon is missing when migrating from Teams Classic to Teams New

Bug in FSLogix 2210 HF4

Users reported seeing issues when migrating to Microsoft Teams from Classic Teams. The Teams icon is missing from the Start Menu, which can occur due to a stale cache in %LocalAppData%\Packages\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\TempState.

Workaround when using FSLogix 2210 HF4:

Create or update the redirections.xml to exclude the TempState folder.

				
					<Exclude Copy="0">AppData\Packages\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\TempState</Exclude>
				
			

Exaggerated Redirections.xml

This can also happen, if you’re exaggerating your exclusions. FSLogix is not a disk saving effective solution and the redirections.xml should be used only in a minimalistic way! Below you’ll find the redirections.xml, which I’m using in 90% of my deployments.

				
					<?xml version="1.0" encoding="UTF-8"?>
<!--Generated 2024-10-04 from https://raw.githubusercontent.com/aaronparker/FSLogix/main/Redirections/Redirections.csv-->
<FrxProfileFolderRedirection ExcludeCommonFolders="0">
  <Excludes>
    <!--!Warning - Office add-ins and other apps. May impact performance if excluded-->
    <Exclude Copy="0">AppData\Local\Apps</Exclude>
    <!--!Warning - May break per-user installed apps-->
    <Exclude Copy="0">AppData\Local\Downloaded Installations</Exclude>
    <!--!Warning - May impact performance of .NET apps-->
    <Exclude Copy="0">AppData\Local\Assembly</Exclude>
    <!--Remove if you need to keep crash dumps for troubleshooting-->
    <Exclude Copy="0">AppData\Local\CrashDumps</Exclude>
    <!--Remove if not using Remote Desktop Connection client inside a remote desktop-->
    <Exclude Copy="0">AppData\Local\Microsoft\Terminal Server Client</Exclude>
    <!--Google Chrome browser cache for the primary profile - size can also be managed via policy-->
    <Exclude Copy="0">AppData\Local\Google\Chrome\User Data\Default\Cache</Exclude>
    <!--Microsoft Edge (Chromium) cache for the primary profile - size can also be managed via policy-->
    <Exclude Copy="0">AppData\Local\Microsoft\Edge SxS\User Data\Default\Cache</Exclude>
    <!--Details: https://docs.microsoft.com/en-us/microsoftteams/teams-for-vdi#teams-cached-content-exclusion-list-for-non-persistent-setup-->
    <Exclude Copy="0">AppData\Roaming\Microsoft\Teams\media-stack</Exclude>
    <!--Details: https://techcommunity.microsoft.com/t5/fslogix-blog/teams-setup-rapidly-grows-my-profile-disk/ba-p/1539064-->
    <Exclude Copy="0">AppData\Roaming\Microsoft\Teams\Service Worker</Exclude>
    <!--Details: https://docs.microsoft.com/en-us/microsoftteams/teams-for-vdi#non-persistent-setup-->
    <Exclude Copy="0">AppData\Roaming\Microsoft\Teams\meeting-addin\Cache</Exclude>
    <!--Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#recommended-for-exclusion-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\Logs</Exclude>
    <!--Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#recommended-for-exclusion-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\PerfLogs</Exclude>
    <!--Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#recommended-for-exclusion-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\WV2Profile_tfw\WebStorage</Exclude>
    <!--Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#recommended-for-exclusion-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\WV2Profile_tfw\GPUCache</Exclude>
    <!--!Warning - Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#review-tradeoff-considerations-requiring-evaluation-and-testing-for-these-environments-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\WV2Profile_tfw\Service Worker\CacheStorage</Exclude>
    <!--!Warning - Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#review-tradeoff-considerations-requiring-evaluation-and-testing-for-these-environments-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\WV2Profile_tfw\Code Cache</Exclude>
    <!--!Warning - Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#review-tradeoff-considerations-requiring-evaluation-and-testing-for-these-environments-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\WV2Profile_tfw\IndexedDB</Exclude>
    <!--!Warning - Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy#review-tradeoff-considerations-requiring-evaluation-and-testing-for-these-environments-->
    <Exclude Copy="0">AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\EBWebView\WV2Profile_tfw\Cache</Exclude>
    <!--!Warning - Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy-->
    <Exclude Copy="0">AppData\Local\Packages\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\TempState</Exclude>
    <!--!Warning - Details: https://learn.microsoft.com/en-us/microsoftteams/new-teams-vdi-requirements-deploy-->
    <Exclude Copy="0">AppData\Local\Packages\Microsoft.Windows.ShellExperienceHost_cw5n1h2txyewy\TempState</Exclude>
  </Excludes>
  <Includes />
</FrxProfileFolderRedirection>
				
			

Search doesn't work for teams in the start menu

Exclude Windows Search from your FSLogix Redirection XML. This solution has been mentioned by Markus Zehnle in the Slack channel “World of EUC”

				
					 <Exclude Copy="0">AppData\Local\Packages\Microsoft.Windows.Search_cw5n1h2txyewy\TempState</Exclude>
				
			

Open with dialog starts after switching from Teams Classic to Teams New

This popup can be disabled in the following way:

Preferred way

Disable NewAppAlerts for every app, not just Teams. This setting prevents the same popup from appearing when updating Edge, which tries to set itself as the default PDF handler.

Do not show the ‘new application installed’ notification (admx.help)

Registry HiveHKEY_LOCAL_MACHINE
Registry PathSoftware\Policies\Microsoft\Windows\Explorer
Value NameNoNewAppAlert
Value TypeREG_DWORD
Enabled Value1

 

Registry HiveHKEY_CURRENT_USER
Registry PathSoftware\Policies\Microsoft\Windows\Explorer
Value NameNoNewAppAlert
Value TypeREG_DWORD
Enabled Value1

Other possibility

Set the following keys for the user via login script, WEM External task or run key.

				
					$registryPath = "HKCU:\Software\Classes\msteams\shell\open\command"
$valueName = "(default)"
$valueData = '"ms-teams.exe" "%1"'
# Set the registry value
Set-ItemProperty -Path $registryPath -Name $valueName -Value $valueData

				
			

Teams Outlook Plugin not visible

Several things can cause this.

  1. Bug in Teams 24215.1007.3082.1590 which has been fixed in 24231.512.3106.6573 
  2. Plugin not installed correctly
  3. Stale entries from Teams classic
				
					Write-Host "Install $Product Add-In for Outlook"
# Install the Microsoft Teams Meeting Add-in
$installerPath = Get-ChildItem -Path 'C:\Program Files\WindowsApps' -Filter 'MSTeams*' | Select-Object -First 1
Start-Process -FilePath “msiexec.exe” -ArgumentList “/i `”$($installerPath.FullName)\MicrosoftTeamsMeetingAddinInstaller.msi`” Reboot=ReallySuppress ALLUSERS=1 TARGETDIR=`”C:\Windows\Microsoft\TeamsMeetingAddin`” /qn” -Wait
Write-Host -ForegroundColor Green "Install $Product Add-In for Outlook finished!"
Write-Host "Register $Product Add-In for Outlook"
# Get DLL paths
$appX64DLL = (Get-ChildItem -Path "C:\Windows\Microsoft\TeamsMeetingAddin\x64" -Include "Microsoft.Teams.AddinLoader.dll" -Recurse).FullName
$appX86DLL = (Get-ChildItem -Path "C:\Windows\Microsoft\TeamsMeetingAddin\x86" -Include "Microsoft.Teams.AddinLoader.dll" -Recurse).FullName
# Register the DLLs
Start-Process -FilePath "$env:WinDir\SysWOW64\regsvr32.exe" -ArgumentList "/s /n /i:user `"$appX64DLL`"" -ErrorAction SilentlyContinue
Start-Process -FilePath "$env:WinDir\SysWOW64\regsvr32.exe" -ArgumentList "/s /n /i:user `"$appX86DLL`"" -ErrorAction SilentlyContinue
# Add Registry Keys for loading the Add-in
$registryPath = 'HKLM:\Software\Microsoft\Office\Outlook\Addins\TeamsAddin.FastConnect'
If (-not (Test-Path 'HKLM:\Software\Microsoft\Office\Outlook\Addins\')) {
    New-Item -Path "HKLM:\Software\Microsoft\Office\Outlook\Addins\" | Out-Null
}
New-Item -Path "HKLM:\Software\Microsoft\Office\Outlook\Addins" -Name "TeamsAddin.FastConnect" -Force -ErrorAction Ignore | Out-Null
New-ItemProperty -Path $registryPath -Type "DWord" -Name "LoadBehavior" -Value 3 -Force | Out-Null
New-ItemProperty -Path $registryPath -Type "String" -Name "Description" -Value "Microsoft Teams Meeting Add-in for Microsoft Office" -Force | Out-Null
New-ItemProperty -Path $registryPath -Type "String" -Name "FriendlyName" -Value "Microsoft Teams Meeting Add-in for Microsoft Office" -Force | Out-Null

				
			

Cleanupscript for stale teams entries

				
					
$registryPaths = @(
    "HKCU:\Software\Classes\Wow6432Node\CLSID\{19A6E644-14E6-4A60-B8D7-DD20610A871D}",
    "HKCU:\Software\Classes\Wow6432Node\TypeLib\{C0529B10-073A-4754-9BB0-72325D80D122}",
    "HKCU:\Software\Classes\CLSID\{19A6E644-14E6-4A60-B8D7-DD20610A871D}",
    "HKCU:\Software\Classes\TypeLib\{C0529B10-073A-4754-9BB0-72325D80D122}",
    "HKCU:\Software\Wow6432Node\Microsoft\office\Outlook\Addins\TeamsAddin.FastConnect",
    "HKCU:\Software\Microsoft\office\Outlook\Addins\TeamsAddin.FastConnect"
)
# Loop for removing each entry
foreach ($path in $registryPaths) {
    if (Test-Path $path) {
        Remove-Item -Path $path -Recurse -Force
        Write-Host "Deleted: $path"
    } else {
        Write-Host "Path not found: $path"
    }
}

				
			

Further sources

2 Responses

  1. Patrick Wagner

    The Real Person!

    Author Patrick Wagner acts as a real person and verified as not a bot.
    Passed all tests against spam bots. Anti-Spam by CleanTalk.

    The Real Person!

    Author Patrick Wagner acts as a real person and verified as not a bot.
    Passed all tests against spam bots. Anti-Spam by CleanTalk.
    says:

    Great work! However, I discovered a potential issue. When installing Teams via NeverRed, the Outlook add-in is not installed or registered.

    I wanted to install it afterwards and used the code block from your site. However, the installation and registration failed. The issue is with lines 4 and 5. I suspected that the installation runs in the background and the registration cannot find the paths yet.

    I rewrote it. Presumably, the quotes are not being transferred correctly:

    Start-Process -FilePath “msiexec.exe” -ArgumentList “/i `”$($installerPath.FullName)\MicrosoftTeamsMeetingAddinInstaller.msi`” Reboot=ReallySuppress ALLUSERS=1 TARGETDIR=`”C:\Windows\Microsoft\TeamsMeetingAddin`” /qn” -Wait

    I start the installation via Start-Process so I can wait until the installation is complete.
    After I made the change, the script runs without errors and the registration works.

Leave a Reply

Your email address will not be published. Required fields are marked *

2 Responses

  1. Great work! However, I discovered a potential issue. When installing Teams via NeverRed, the Outlook add-in is not installed or registered.

    I wanted to install it afterwards and used the code block from your site. However, the installation and registration failed. The issue is with lines 4 and 5. I suspected that the installation runs in the background and the registration cannot find the paths yet.

    I rewrote it. Presumably, the quotes are not being transferred correctly:

    Start-Process -FilePath “msiexec.exe” -ArgumentList “/i `”$($installerPath.FullName)\MicrosoftTeamsMeetingAddinInstaller.msi`” Reboot=ReallySuppress ALLUSERS=1 TARGETDIR=`”C:\Windows\Microsoft\TeamsMeetingAddin`” /qn” -Wait

    I start the installation via Start-Process so I can wait until the installation is complete.
    After I made the change, the script runs without errors and the registration works.

Leave a Reply

Your email address will not be published. Required fields are marked *