For everyone who uses application virtualization through the XenApp Offline Plugin, the concept of offline applications is not new.

For the uninitiated, here is a brief background:

The Offline Plugin allows users to enjoy using their streamed applications even when they are disconnected from the network. For this the application should be published as “Offline Streamed” on the Citrix Presentation Server. Depending on the offline configuration mode, the whole of the streamed application profile is downloaded to the local machine on logging into XenApp Online Plugin (previously PNAgent) or on launching that particular application. To be more specific, the application profile gets downloaded in the “Deploy” folder under the Citrix directory. After this happens, even if the user is disconnected from the network, she is able to launch the apps since all the needed data has already been downloaded to the client machine. This mechanism of bringing the application to the local machine for “offline” access is known as “Deployment” in streaming jargon.

With this background, I shall go on to say that Differential Sync is a specialized case of Deployment. To understand and appreciate DiffSync, consider the following scenario.

An application is profiled using the profiler so that it generates say version 1 (v1) of the profile. Now when this application is published as offline, the profile version v1 gets downloaded to the “Deploy” folder. This is equivalent to plain copying of the whole profile data from the AppHub to the local Deploy folder.

Now say the profile on the AppHub is edited through the profiler and an update is made to the profile. An update can manifest in various forms, ranging from applying a patch to the application to adding new custom files to the profile. This would generate the second version (v2) on the AppHub. At this point of time the version present in the local Deploy folder (v1) and that on the AppHub (v2) are different.

After this when the application is launched on the client machine or the user logs into XenApp Online Plugin, the new version v2 is supposed to come in the Deploy folder depending on if the app is configured as offline during launch time or configured to be pre-deployed at login time respectively.

There can be two ways of bringing down the new version v2 to the Deploy folder.

1. Delete version v1 on the client machine, and download the version v2.

2. Mostly the difference between version v1 and v2 is not huge and the delta is generally a few new, modified or deleted files. Hence it makes sense to just bring down this “Delta or Differential” through the network instead of deleting the previous version.

The streaming client uses the second method above and this mechanism of bringing down the “Differential” is known as DiffSync in streaming parlance.The newer and modified files are brought down to the client machine and the files absent in v2 but present in v1 are deleted. At the end of DiffSync, the version v1 is converted to v2 on the client machine.

Effect of Profile Data format on DiffSync (CAB or DIR)

The previous releases of streaming client used the CAB files to store data but the latest one (6.0) uses the DIR format.

Doing DiffSync using the CAB format involved decompressing the CAB file, bringing the delta of the newer version and repacking the data into the CAB file. The act of decompressing and compressing the CAB file again after incorporating the delta was significantly time consuming.

But with the new DIR format, the overhead of compressing and decompressing is waived off and hence DiffSync is faster for the DIR format compared to the older CAB format. Reason to be happy!

With this we come to the end of this post and I hope this leaves you with a better understanding of Differential Sync.

Aman Sethi
I isolate therefore I am.