Product Version: 6.7.5+
Updated: May 18, 2018
When an Amazon WorkSpaces Desktop wakes up from hibernation, the FlexApps appears to be there. However, once you try to launch the app, Windows states that the file does not exist and the shortcuts for the app are removed. The Flexapps do not return until the desktop is rebooted.
The issue is caused by Windows not maintaining the VHD connection in hibernation. When the system goes into hibernation, the VHD connection is lost, and the symbolic links created by FlexApps to the actual directories and files on VHDs become invalid, and the shortcuts remove themselves when the user tries to launch it. Because the FlexApps are not properly unloaded, we cannot properly load the FlexApps back. Although a reboot will address this problem, it is best if we can prevent it in the first place. The solution to this problem is properly logging off the user before hibernation kicks in.
Since most users do not log off their desktop, we need to install an utility to log the user session off after idling for a specified time. Here are the steps:
- Download "idle logoff setup.zip" from this KB, which contains the utility installer "Lithnet.IdleLogoff.exe" and a folder "PolicyDefinitions" for the GPO Administrative Template for the application settings.
- Extract the content, and put "lithnet.idlelogoff.setup.msi" in a share where everybody can access, e.g. \\%USERDOMAIN%\netlogon\ProfileUnity.
- Go to \\%USERDOMAIN%\sysvol\%USERDNSDOMAIN%\Policies and copy the whole "PolicyDefinitions" folder to there. If PolicyDefinitions folder already exists in that path, just copy the ADMX and ADML files from our new "PolicyDefinitions" folders to the respective locations in the share.
- Edit your ProfileUnity GPO to configure IdleLogoff settings.
Under Computer Configuration/Policies/Administrative Templates/Lithnet/IdleLogoff, enable "Log off inactive users" and set idle timeout to 50 minutes (or any time of your choosing as long as it is a 10 minutes less than the hibernation timeout to accommodate any possible delay in execution and time required to complete the logoff process). Check "Ignore sleep prevention requests from applications such as media playback" and set Action to "Log off".
Repeat the process under User Configuration to set IdleLogoff properties for the user as well.
- Open ProfileUnity UI, go to Filter Management, and create a filter called "If IdleLogoff does not exist" with filter rule "File Is Not C:\Program Files (x86)\Lithnet\IdleLogoff\Lithnet.IdleLogoff.exe" like the screenshot below.
No quotation marks needed around the path as ProfileUnity automatically appends the quotes around the file path.
- Go to Configuration Management and edit your configuration. Go to Application Launcher module, and add a new setting with the following:
Filter: If IdleLogoff does not exist (the filter created in step 4)
Arguments: /i \\%USERDOMAIN%\netlogon\ProfileUnity\lithnet.idlelogoff.setup.msi /qn
Timing: After Configuration Execution
It will look like the following screenshot:
*NOTE: if you put lithnet.idlelogoff.setup.msi in a different location, please change the file path in the argument to reflect the correct installer path.
- Follow this KB and add the rules to stop Liquidware Labs Container Service at logoff and start it at logon for persistent VMs: https://liquidwarelabs.zendesk.com/hc/en-us/articles/360002378451-FlexApp-DIA-Apps-Do-Not-Appear-or-Take-A-Long-Time-To-Appear-On-Second-User-Login
- Update then push out the new config. IdleLogoff should be installed on the next logon. You may want to reboot the WorkSpaces desktop to ensure that the current user session is disconnected and the GPO gets updated so that IdleLogoff will run properly on the next user logon.