In App Streaming Version 5.2 Codename Yellowtail, whenever application is launched, Registry was being populated entry by entry into the Machine during Application Streaming. This was a very tedious process, where we used to hang out for good amount of time populating Registry entries one by one. Now with App Streaming V5.2 we store the Registry in Hive Format, and during Application Streaming All we do now is to Mount the Hive. That’s what we called it as simple Algebra!
Since we moved to Hive Format in Version 5.2, it does not mean that we do not support the older profiles. As there is a old saying, A Fox may change its Color but Not it’s Tricks, We have changed the Format and But the Trick remains the Same.
In App Streaming 5.2 Fox only changed the Color, but still use the same trick. App Streaming 5.2 also still support Tab Format for Backward compatibility. We can still use Profiles that are created by Profiler Version below 5.0 with Client Version 5.2, we had to figure out a way to differentiate between Newer Profiles that are created using 5.2 and Older Profile that were created with 5.0, without much overhead of processing required, and we decided to Use the File Formats to Differintiate the Registry Format. First We try to load the Registry using Hive if InstallRoot.Dat Exists, if it fails we try to load Registry using InstallRoot.tab File. And in 6.0 someone thought Carrying both the Formats is waste of Space, since Loading Hive Format is a small Activity and Doesnot Fails, we Decided to Remove the Tab Format all to gether. Thus the Profiles Created from Profiler V6.0 you will not find InstallRoot.tab present in the profiles.
But that being said, it does not stop from upgrading the Profiles created below 5.2 if you are looking application Launch Performance. If we open profiles in Profiler in latest version 6.0 Profiler and Edit the Profile, The Profiler automatically converts the Older Registry Format to New Registry Format and sets a Flag in Profiler Saying that this Profile supports Hive Format.
Now Let me talk a bit about Layers, There is already blog, written by Joe that explains the
In App Streaming, we have three layers
1. User Layer
2. Install Layer
3. Physical Layer
User Layer is specific to User, so Every User will have his own User Cache, where user specific information can be stored.
Install Layer is the Layer, where the Virtualized Application Exists, It is the isolated space of Virtualized Application.
Physical Layer is the Operating System Registry with Some Locally Installed Application.
During Sandboxing, The Isolation System sets the Environment Variables that will contain all the location of layers such as File System User Layer, Registry User Layer, File System Install Layer and Registry Install Layer.
I have used Process Monitor Tool to show the Environment Variable, but can be verified using simple SET command inside any isolated command prompt.
Any application that runs in isolation, Even the Prelaunch/Post Launch Script scheduled to Run Inside /Outside Isolation will also have these Environment Variable set for the process.
Here is a small tool, that does nothing but reads the Data from Enviromnet Variable, which gives out information about isolation environment. This tool when run inside isolation will give all the information about the Sandbox, This can also be used during Profiling Time to know the Information about Isolation Environment.
This simple tool is also capable of detecting wether it is run inside Profiler or Client and of course Local Machine.
This is a feature provided by App Streaming that can be used in many ways.
You can schedule Scripts that run as Pre Launch Script and Post Launch Script to Use this Environment Variable to Get the Path of Physical Location where the Isolated Application Data is stored.
The other important use of this environment variable is that this can be used to create Rules.
There are situations where you would want to create Rules that are Dynamic. That means, consider a Scenario. I have a Legacy Application, that Leaves some Unwanted Files on Desktop, now You have to Create a Redirect Rule that redirect the File Created in c:\user\<UserName>\Desktop\<JunkFile> to c:\user\<username>\temp.
In order to solve this kind of problem, The App Streaming Provides Environment Variable that can be used to Create Generic Rule.
If you are using Environment variable provided by AIE the new rule will be.
Redirect %AIE_USERDESKTOP% to %AIE_TEMP%.
This will do the redirection for the entire user, and the Rules can be made Generic.
More Information on The List of Environment Variables and Path can be found here
That being said for now. In my next post I will be talking about how different kind of Rules, How Different Hive Plays a Role on Particular Registry Rule.