When you would launch a Citrix application by clicking an application icon, the logon script runs, profile loads with app Group policies applied and will take more time to see the application on screen. Now we have managed to reduce application launch time by using a combination of the latest Windows Receiver 3.0 and a new feature called Session Pre-Launch.
Prerequisites for Session Pre-launch
Citrix Receiver 3.0 for Windows.
Online Plugin 13.0.
XenApp Services Site.
So lets see what makes this faster? So as a session is already loaded onto the XenApp farm and all the logon procedures like the profiles loading, logon scripts running and the commitment of policies has already taken place, when the user clicks on their application it launches without any delay!
Even though the user session isn’t running an application, this will take a XenApp license and a RDS CAL. The Pre-Launch Session will take up a very small amount of memory and CPU by running the pre-launch application (.exe). When the user actually launches an application, the Pre-Launch exe is killed and the ‘real’ applications take over and run on a very less amount of resource consumption.
How the Pre-launch Session works?
When the Receiver starts up and passes through the user credentials to the XenApp server, a Pre-Launch session is created on a XenApp server. The exact server it goes to is defined by load balancing in the usual way. Nothing is displayed to the end user. This is a silent, invisible connection. In the management console the session’s application state is “Pre-launch”.
On the client device, check the below setting of the following registry key (Default Installation Values):
32-bit systems: HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA Client\Prelaunch
64-bit systems: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\Prelaunch
Once we launch an application the XenApp server can use the same session and will start up straight away as it is already Authenticated, Logged in, ran the Logon Scripts and loaded the Profile when started up. When the user starts an application we use the invisible session created by the Pre-Launch Session on the XenApp server. After the application has appeared on the user’s desktop, the Pre-Launch Session on the XenApp server is gone. The session that was called Pre-launch is now used by the user’s application. Now the session ID is the same and the state is now “Active”. Subsequent launches of other applications will also start straight away as it uses a good old session sharing.
When a user closes down the first application before firing up another one, it doesn’t go into a disconnected state. The session now goes into what is called a “Lingering state”. So the session on the XA server that we have just closed is now running in the background, waiting for the start up or for another application. This performs the same function as the first Pre-Launch Session. It is a session that’s already been logged into, but it is waiting to be connected to again and its job now is to maintain a connection to the Receiver so that when the end user does want to run another application it will launch immediately using that existing session.
Session Pre-Launch Policies
The Pre-Launch Session is started by the Receiver and can be set to stay alive for a period of time if an application isn’t started up.
If we have launched an application and then closed, the session will go into a Lingering State. As mentioned before, this is session that can be quickly used by any new application launch too. In the above shown picture the policy (HDX Policy) has been set up to disconnect the Lingering session after 60 minutes and terminate it after another 30 minutes.
How to create Pre-Launch application?
A Pre-Launch Session is based on an existing published application in the XenApp Farm. To create a pre-launch application, do the following steps.
- Select the application and right click on it in the AppCenter console.
- Go to ‘Other Tasks’ and select ‘Create Session Pre-Launch Application’.
This is not the ordinary published application we already have and will not be accessed by the users. We actually created a Pre-Launcher that has taken the configuration from the published application like configured servers, users and advanced features like the color depth and encryption. Notice that the actual .exe this application uses is now CtxPreLaunch.exe. We can create a folder and move these applications to have difference.