Highlighted
Enthusiast
Enthusiast

Microsoft Teams on Non-Persistent - UEM + App Vols

Has anyone installed Teams MSI or EXE on a non-persistent environment?

As I see it there are 4 potential options,

1. Install on Master image

2. Install as app stack

3. User install on Writable UIA Vol

4. Thin App

I have tried the first three and every time i log off and log back in Teams is gone and I haven't had success yet on an App stack or on the Master image. I wanted to start up a discussion on this so we could get this as stable as possible. I also am running windows 7 and need to install Workplace Joined to get the VM's in Azure AD as Hybrid Azure AD joined.

Thanks

58 Replies
Highlighted
User Moderator
User Moderator

0 Kudos
Highlighted
Enthusiast
Enthusiast

Thanks, so look's like other's are having trouble as well, but Thinapps + App stack it can be successfully deployed.

Thanks

0 Kudos
Highlighted
Contributor
Contributor

I've tried option 1, 2 and 3 without any luck.

An alternative method is this: https://docs.microsoft.com/en-us/MicrosoftTeams/msi-deployment

https://docs.microsoft.com/en-us/MicrosoftTeams/msi-deployment

If you use UEM, just run the msi as a logon task, or having no UEM: just run this as a computer gpo software installation task.

This works almost perfect, the only thing is that Teams credentials won't roam, so you have to fill in your credentials every time you log in.

Since it is using modern authentication, which we have switched off in Windows 10 icm with Office 365 due to activation issues.

So if anyone has a solution to roam modern authentication with UEM, please let me know...

What is MS thinking of making such a great app as Teams making it so hard to implement in VDI enviroments, sigh....

0 Kudos
Highlighted
Contributor
Contributor

Here's my silent install script (PowerShell). This should be run per user as the user:

$downloadx86url = "https://teams.microsoft.com/desktopclient/installer/windows/x86"

$downloadx64url = "https://teams.microsoft.com/desktopclient/installer/windows/x64"

$downloadpath = "$env:TEMP\teamstemp.exe"

$online = Test-Connection teams.microsoft.com -Count 1 -Quiet

while (!$online) {

    Start-Sleep -Seconds 5

    $online = Test-Connection teams.microsoft.com -Count 1 -Quiet

}

if ([System.Environment]::Is64BitOperatingSystem) {

    $downloadurl = $downloadx64url

} else {

    $downloadurl = $downloadx86url

}

$wc = New-Object System.Net.WebClient

$downloadurl = $wc.DownloadString($downloadurl)

$wc.DownloadFile($downloadurl,$downloadpath)

if (Test-Path $downloadpath) {

    Start-Process "$downloadpath" -ArgumentList "-s" -Wait -NoNewWindow

    Remove-Item $downloadpath -Force

}

I then capture the following:

HKCU\Software\Microsoft\Office\Teams

%appdata%\Teams

%appdata%\Microsoft\Teams

%localappdata%\Microsoft\Teams

%localappdata%\Microsoft\TeamsMeetingAddin

And exclude:

%appdata%\Teams\logs

%appdata%\Microsoft\Teams\Application Cache

%appdata%\Microsoft\Teams\Cache

%appdata%\Microsoft\Teams\tmp

%appdata%\Microsoft\Teams\logs.txt

%appdata%\Microsoft\Teams\lockfile

0 Kudos
Highlighted
Enthusiast
Enthusiast

We have it working on our instant clones (using UEM and AppVol, but not for teams) built into our golden image. I used the MSI installer to install for the full system with the command: msiexec /i Teams_windows_x64.msi OPTIONS="noAutoStart=true"

Important thing to check, check your AutoRuns (Run registry key), mine was pointing to the wrong location (Program Files instead of (x86)) and was failing to run on login. The shortcut shows up on the desktop for users in about 30 seconds after sign in.

0 Kudos
Highlighted
Contributor
Contributor

Hi Dgrinnell, We are successfully running Teams anf Onedrive using Writable UIA + Profile templace. Understanding that UIA only template capture applications under c:\program files\ and nothing under c:\users\ so this is why you must use UIA + Profile template.

Also, about Azure AD join instant clone computers:

1- Golden image must never been join to domain (workgroup)

2- We run followng commands at VM startup in the pool:

     a- In horizon pool, under "guest personalisation" add disabling script  "dsregcmd /debug /leave" this will clean azure AD multiple machine with same names (instant clones)

     b- add a startup script to your VM (gpo) with the following  lines (it clean current cumpouter in azure AD et re-register itself)

               dsregcmd /debug /leave

               schtasks /run /TN "\Microsoft\Windows\Workplace Join\Automatic-Device-Join"

     c- add a shutdown script to clean azure AD before the instant clone machine gets delete at refresh

               dsregcmd /debug /leave

This work successfully in our environment.

Fabrice

0 Kudos
Highlighted
Enthusiast
Enthusiast

We've been using a UIA-only writable volume with a modified snapvol.cfg that eliminates all virtualization, essentially making it a persistent disk for our instant clones. That, combined with a UEM logon script that creates junction paths from the default path where Teams is installed (local appdata) to the writable volume (mounted to a drive letter), plus another logon script that installs the per-user Teams application if it is missing from the writable volume, is all that's needed for us to have the per-user version of Teams installed in a persistent way for Instant Clone users. We do the same thing with Slack and a few other per-user applications; the magic is in the hard links/junctions to fool the applications into living on the writable volume.

0 Kudos
Highlighted
Hot Shot
Hot Shot

Can you expand on how your are installing Teams and creating the junctions/links to the writable volume?

VDI Engineer VCP-DCV, VCP7-DTM, VCAP7-DTM Design
0 Kudos
Highlighted
Enthusiast
Enthusiast

I'm sure its not the perfect way to do it but we did it with UEM only

Installed Teams on a runone GPO at the login.

once installed Saved the setting and the files to UEM with the following config.

Import / export

[IncludeFolderTrees]

<AppData>\Teams

<AppData>\Microsoft\Teams

<AppData>\Microsoft Teams

<LocalAppData>\Microsoft\Microsoft\TeamsMeetingAddin

<LocalAppData>\Microsoft\Microsoft\TeamsPresenceAddin

<LocalAppData>\Microsoft\Microsoft\Teams

and using DirectFlex

%LOCALAPPDATA%\microsoft\teams\current\teams.exe

%LOCALAPPDATA%\microsoft\teams\update.exe

Finaly

I have another UEM import /export for startup items

[IncludeRegistryTrees]

HKCU\Software\Microsoft\Windows\CurrentVersion\Run

(that will save the auto start)

(there is some customization with GPO like Using Current User/password for auto-login)

Hope that help ya.

0 Kudos
Highlighted
Enthusiast
Enthusiast

At this point, I'd recommend you stay away from custom methods like scripted junctions since we have a better option now. FSLogix Office containers accomplish the same thing, but better. In our environment, we will be phasing out App Volumes completely in favor of FSLogix Office containers and application masking.

0 Kudos
Highlighted
Enthusiast
Enthusiast

NxN_Slite What version of teams are you using? And I'm assuming its remembering user credentials?

0 Kudos
Highlighted
Enthusiast
Enthusiast

Latest version cause it's installing the user base setup and it always update First then launch

DEM keep these files and the startup (no need to reinstall)

And yes it keeps the login for the users.

We use Azure Connect and have a 365 account for all users.

(I think you don't need that part -- only for One Drive if I recall)

0 Kudos
Highlighted
Enthusiast
Enthusiast

Are you using password hash sync or SSO?

0 Kudos
Highlighted
Enthusiast
Enthusiast

For anyone stumbling across this thread there's now a proper way to install the full Teams client for the machine context rather than user profile. It will install into Program Files if you download the setup MSI and use a command line switch provided my MS for non persistent VDI environments.

Teams for Virtualized Desktop Infrastructure - Microsoft Teams | Microsoft Docs

0 Kudos
Highlighted
Contributor
Contributor

Has anyone followed this article yet?  I have and so far it does install to that location but gives no process on how to actually get teams into the end users account once they login.

Thoughts?

0 Kudos
Highlighted
VMware Employee
VMware Employee

Please check below blog about setting Teams on VDIs:

kvm's Blog

0 Kudos
Highlighted
Enthusiast
Enthusiast

Hello,

I have looked at kvm's blog and followed everything outlined in it.  Unfortuantely, I am still having issue with getting Teams working in our Horizon 7.8 environment.

Currently
I installed Teams on our test image using this command "msiexec /I <path_to_msi> /l*v <install_logfile_name> ALLUSER=1 ALLUSERS=1".  Created a snapshot and republished the pool. Additionally, I added the directories below to UEM to ensure they are cached:

  • C:\Users\username\AppData\Local\Microsoft\IdentityCache (%localAppdata%\Microsoft\IdentityCache)
  • C:\Users\username\AppData\Roaming\Microsoft\Teams(%appdata%\Microsoft\Teams)

Upon logging into a desktop the first time, Teams attempts to start/run but a white box just appears on a screen and nothing happens. If I logout of the desktop and grab a new one, Teams seems to launch fine and work ok...for a while.  When I logout of the desktop and then grab another one either later that day or the next day, Teams may or may not start. 

However,  if it does I will have the message at the top "We weren't able to connect. Sign in and try again." Also, the icons for the people (either names of initials) do not exist and the status of the user is not available.  However messages do seem to come through.

We need to get this working as quickly as possible so any help is greatly appreciated.

Thank you.

Shreyskar

0 Kudos
Highlighted
Enthusiast
Enthusiast

Hi! A few weeks ago, I deployed a non persistent enviorment with Instant Clones, App Volumen Manager, Office 365 and Teams. With writiable volumes (use tempalte profile only) you can saved users credentials. Yo need to install Teams and Office 365 on the Master Image.

0 Kudos
Highlighted
Enthusiast
Enthusiast

I have Teams installed on the image and I am using UEM for the settings and caching the credentials.  What else do I need to do

0 Kudos