Application Streaming stores stuff isolation layers. The main one that holds the executable content is stored in the “RadeCache” directory below the Citrix Streaming Client installation directory. The sub-directory name is a GUID that uniquely identifies the execution image. There is a corresponding user layer that is sandwiched on top and the application at runtime views the machine through the 3 layers of isolation.
Here’s a picture of the layers.
The majority of the applications installation image is in the middle layer. This layer is “actually” stored below the RadeCache directory, below the installed to directory for the Streaming Client.
It can be big – Customers commonly want to “move it”.
Setting the location of this directory is easy; run the ClientCache.exe utility that is included with the streaming client; done. It’s even documented in KB article: http://support.citrix.com/article/CTX115137
The ClientCache utility does a few jobs
- Sets a registry string to tell the Streaming Service where the Cache is located
- Creates the directory
- Adds a DACL to the directory to give the Streaming Service privilege to write stuff to the cache.
- Note that the streaming client service actually runs on a dumbed down account and without this DACL, even though it’s a service, it lacks privilege to write to anything important.
Consider offline “streaming”. How do you “Stream” when disconnected from the company network?
Answer: Everything that would normally be on a central store to support the streamed execution of the app, is actually copied onto the execution machine. At runtime, execution content is “streamed” from this local copy into the execution cache, as it is needed – just like the online case.
The directory, \Program Files\Citrix\Deploy holds all the profiles copied to the execution machine to support offline execution. Neatly, the streaming client core doesn’t distinguish between online and offline. It just knows where the execution cache is located (Installation/Execution image) and runtime populates stuff into the cache. The source for the runtime populate when offline is actually a CAB file local to the execution machine; a nit. It keeps the architecture simple when the client doesn’t have to worry about online vs. offline.
Changing the location of the deploy folder
We already covered changing the location of the RadeCache, this is easy. Use the ClientCache.exe utility, done.
Imagine my surprise when someone asked me about setting the location of the Pre-Deploy folder; there’s no ClientDeploy.exe utility! Hum.
Can it be done? Sure. There’s no utility to do it for you, so it becomes a manual process – documented below.
Configuring the location of the directories
- The RadeCache location defaults to \Program Files\Citrix\RadeCache.
- The PreDeploy location defaults to \Program Files\Citrix\Deploy.
The Streaming Service (RadeSvc.exe) queries the location of each of these key directories by reading strings from the registry as part of its startup logic.
Here are the registry keys that set the location of the RadeCache and PreDeploy folders. These are both stored below HKLM\Software\Citrix\Rade.
Changing the location of the Deploy folder can also be done, but it is a manual process.
How to change the location of the Deploy directory:
1) Create a directory
2) Fix the registry string to point to the new location
3) Give the Streaming Service Full rights to the created directory
4) Terminate all presently streamed applications
5) Unload and Reload the streaming service
Example steps from a command prompt:
- net stop radesvc
- Mkdir C:\NewLocation
- cacls c:\NewLocation /E /G Ctx_StreamingSvc:F
Alternate to above is to MOVE the existing folder, and its contents.
- reg add hklm\software\citrix\rade /v PreDeployDir /t REG_SZ /d C:\NewLocation
- echo y| reg delete hkcu\Software\Citrix\Rade\Offline
- net start radesvc
Finally, PNAgent - Right Mouse Button, refresh applications – and the new location will be used for the Deploy folder. Depending on how the administrator has published the application, it may be necessary to actually run an application before the “bring it to deploy folder” logic kicks off.
The above will work with Streaming Client 1.0 (Presentation Server 4.5) and with Streaming Client 1.1 (Presentation Server 4.5 HRP1). There will be some changes in this logic going forward and when we get there, I can update this post with the particulars.
Product Architect – Application Streaming. Citrix Systems, Fort Lauderdale, FL