Inside the Sequencer - Part 1

Introduction

This is the second in the series of “Inside The…” books for SoftGrid, “Inside The Sequencer”. The purpose of this text is to define the process of the SoftGrid Sequencer. As a precursor, the text entitled “Inside the Grid” should have been read prior to this document.

As a review from “Inside the Grid”, the Sequencer component is a critical part of the SoftGrid technology. After all, it is the Sequencer that is responsible for taking a typical application and turning it into a SoftGrid enabled, virtualized application. The ultimate end result of running the Sequencer is to create the necessary files that comprise a SoftGrid package; the .ICO, .OSD, .SFT and .SPRJ files. Once these files are created they can then be deployed to test and production environments via the SoftGrid Virtual Application Server (VAS).

The Sequencer Workstation

The creation of the proper workstation on which one Sequences is of utmost importance. I will issue the usual and necessary disclaimer here that every environment is unique and as such my notes here will work best across a generic case example.

The proper workstation on which you Sequence is just that, a workstation. Now this can be a physical workstation or a virtual machine. The most important characteristics are as follows:

· Generic – the Sequencer workstation should not have anything installed on it that could impact or impede a full installation of an application. This is essential so that any application that is being Sequenced will lay down the greatest number of files that it requires. If there were an application on the physical workstation, then an application being monitored by the Sequencer may not add files it would deem necessary. This is only a problem if that package is streamed to a client that does not have the same application installed locally. The application running in its virtual environment may assume it can fall through and find that file locally because it was on the Sequencing workstation. However, if that file is not also on the client workstation then the application could cause an error.
The only time an application should be installed on the image of the Sequencing workstation is if you are sure that same application will be installed on every client to which the package will stream.

· Revert – It also is important that at the end of every successful Sequence the workstation can be reverted back to its clean state. This is directly related to the statement from above. To Sequence on a dirty workstation is to run the risk that a package would be missing critical files, registry settings, etc. simply because the application being monitored by the Sequencer did not find it necessary to affect them in some way.
This is why products such as Microsoft’s Virtual PC or Virtual Server are so effective. You can simply shut the VPC down and discard the changes, bringing you back to your “clean state”.

· Partitions – The Sequencing workstation needs to have at least two physical partitions. One for the host operating system’s C:\ partition, but the second one is to match the virtual drive of the SoftGrid client, typically Q:\. You see, when you sequence an application you actually install it during one of the phases called “Monitoring”. It is during this phase, when the application prompts you for a destination into which to install, and it typically wants to install to something like C:\Program Files\... you change it to Q:\packroot.
Why should I install to Q:\? This is not a SoftGrid “thing”. Instead, think about what the application is doing when it gets to client. It loads itself into the cache file, SFTFS.FSD, which is mounted on the SoftGrid client system as the virtual drive letter, typically Q:, and “runs” from there. Now, inside of the SoftGrid .SFT file all references to the applications drive point it to a variable called %SFT_MNT%. This would normally allow an application to be installed during Sequencing to the Q:\ drive and streamed to a client whose virtual drive is B:\. Now, if the actual application in question has an INI file or Registry entry that points to the physical drive on which it was originally installed by its hard letter, then when it streams to a client with a different virtual drive it will throw an error.

Author’s Note: I did some experimenting back in the lab. One of the experiments I did was to Sequence an application and allow it to install to Q:\ during the “Monitoring” Phase. I then streamed it to a client whose virtual drive letter was B:\. To my dismay it failed when it started to launch at the client. This was because the application had an INI file of its own that it used to refer to its original installation by hard letter. So when it started to run, it went looking to the Q:\ drive for files when it should have been looking to B:\. Simply put; to avoid this possible error always make the real second partition of the Sequencer match the drive letter used by your SoftGrid clients as their virtual drive.

· Performance – Sequencing is a single threaded process and as such investing money into dual processors will not derive as much benefit as turning that money into a faster disk array. Sequencing happens to be a very disk I/O intensive process, so a SCSI, ultra wide SCSI, or fiber channel is a better use of those budgetary dollars.

· Connectivity? – Notice the question mark here. I say this because should you be connected to the corporate LAN or not is a question only the person performing the Sequencing can answer. It is not necessary to be on the LAN if the application being Sequenced is a standalone application with no LAN dependencies. However, and maybe obvious, if the application requires LAN connectivity when installing or running then because these are necessary during the Sequencing process a LAN connection is required. I, however, like to do my Sequencings in the comforts of a remote location and then burn the package files to DVD and send them to the SoftGrid Administrator for publication. I say this as I write this text, sitting pool side at my Hotel in Singapore. Remote capability is my obvious preference.

· O/S – The most common question I have received over the years is “What Operating System should I use on my Sequencer Workstation?” The answer can be simple, or it can be less simple. What is your SoftGrid Client’s operating system? That should match the O/S of the Sequencing workstation with the proper level of patching.
Now, what do I do if I am in a hybrid environment? That answer is slightly less easy, but easy none the less. As a rule of thumb, always go with the “lowest common denominator”. If in an environment where your SoftGrid client could either be Windows 2000 Pro, Windows XP Pro, or Windows 2003 Terminal Services, you should always select the older, or Windows 200 Pro, as the O/S of the Sequencer workstation.
Why?
I am so glad you asked. Because there is a greater chance that the application being Sequenced will lay down the greatest number of files, registry entries, COM, etc. on the older O/S than the newer. As such, when it streams and runs in its SystemGuard it will have more of its own assets bundled with it and be more self sufficient and able to remain isolated.
Now, the next common question is: “Can I sequence on Windows XP Pro and stream to SoftGrid client running on a Windows 2003 Terminal Server? The answer is “Most Likely’. In fact, we have seen success where an application that would not even install on a T/S box was Sequenced on Windows 2000 Pro and streamed to and run successfully on a SoftGrid for Terminal Server client.

· Minimum Requirements – I will not insult you with some simple rhetoric on archaic system requirements to run the SoftGrid Sequencer. Suffice it to say that if the O/S and the application being Sequenced can run it then the Sequencer component can as well. The one thing I will state is regarding Hard Disk Drive space. In general, you should allow for 3X the application being Sequenced. One for the application’s installation files, one for the resultant package’s file, most notably the . SFT file, and one for any temp files generated during the Sequence.

The Sequencer Component

Now, once you have the Sequencing workstation, or VPC, created it is time to install the actual Sequencer. I will say that this installation is not the most breath taking. In fact it is very conceivable that one could do it without any direction at all. Besides the usual licensing agreements you are only prompted with one screen during installation, the destination path. It is perfectly acceptable to accept the default path of C:\Program Files\Softricity\SoftGrid Sequencer. It is only the application being Sequenced that needs to be installed to Q:\packroot.

One of the most common questions I get at this point is: “Can I install the Sequencer and then create my image of the Sequencing workstation so that I do not have to reinstall it every time I start a new Sequence?”. In short, yes. The only time I ever saw an issue with this was with a man from Georgia who installed the Sequencer component, opened it and minimized it, then created his “snap shot” of the Sequencer. Later he would “revert” to a fresh Sequencer and then maximize the Sequencer component to start a Sequence. He did this about 10 times and then tested his SoftGrid Packages; none of them would run. It wasn’t until after extensive trouble shooting that he revealed his process. You see, when the Sequencer starts it creates a new GUID for the package. Because he had snapped his image after having started the Sequencer every package had the same exact GUID as each other.

Once you launch the Sequencer from Start, Programs, Softricity, SoftGrid Sequencer, you will see a splash screen. There are two things to take of note of here, one is the version of the Sequencer you are using, right down to the build number. This information should be entered into the “Comments” field of the Package Configuration Phase of the Sequencer. The second is the mystery man whose picture adorns the splash screen. I do not know who he is, but as far as I can tell he was never in the employ of Softricity.

Starting a new Sequence

Before you start a new Sequence let us first look at the Sequencer and understand what settings you can and should configure as your standard preliminary.

Tools – Options

Before you start your Sequence it is important to set up the Sequencer. What does this mean? Every time you install the Sequencer the default set of, well, settings are restored. These include the types of events that will be monitored as well as items (VFS and VREG) that will NOT be monitored. Changing some of these items can be very beneficial before you start a new Sequence.

To change the options of the Sequencer you select Tools to Options, easy enough. Here you will find 4 tabs, of which 2 are very useful.

General

The first tab on the Tools – Options is the General tab, and as the name implies you can set some of the “general” behavior. The list below defines in detail all of the options available here:

The Paths tab will allow you to modify various Sequencer paths and disable SystemGuard functionality. It’s recommended if two physical disks have been deployed on the sequencer to relocate the Scratch Directory to the second physical disk. Do not modify any of the values below the paths options, without explicit Microsoft Technical Support’s assistance.

Scratch Directory: Specifies the path where the SoftGrid Sequencer temporarily stores files generated during an application’s sequencing (default is C:\Program Files\Softricity\SoftGrid Sequencer\Scratch).

Log Directory: Specifies the path where the SoftGrid Sequencer logs activity it monitors during an application’s sequencing (default is C:\Program Files\Softricity\SoftGrid Sequencer\Logs\).

Allow Use of MSI Installer checkbox: Specifies, when checked, the MSI Server service in the Windows operating system has been enabled to permit correct interaction of the SoftGrid Sequencer and the application installer (default is checked).

Allow Virtualization of Events checkbox: Specifies, when checked, that certain low-level operating system activities of the application, such as the ever popular semaphores, will be virtualized when the application is run on SoftGrid Clients (default is checked – do not deselect without consulting Microsoft Technical Support).

Allow Virtualization of Services: Specifies, when checked, that any embedded services that an application uses will be virtualized. (default is checked).

Rebase DLLs: When you select this checkbox, all DLLs are automatically rebased. By rebasing DLLs, you can save memory and improve launching performance on some SoftGrid Systems. During a rebasing operation the Sequencer displays a message in the progress bar. (System DLLs, signed DLLs and 16-bit DLLs are not rebased.)

Go Deep: To “Rebase” a DLL means supported DLLs are remapped to a contiguous address space in RAM to increase efficiency. Some applications may not support this feature and therefore rebasing is disabled by default.

Append Package Version to Filename: When selected the upgraded version indicator will automatically be appended to the name of the .SFT file during a save operation. This option applies to a Package Upgrade and is useful in the Active Upgrade scenarios.

Parse Items

The Parse Items tab is generally for your visual pleasure only. So, what is a parse item?

A parse item, simply put, is the VFS equivalency of a “real” directory in the file system. For example; if an application lays down a .DLL file in C:\Windows\System32 then that file will be placed into the CSIDL_System directory inside the package’s VFS.

Here’s how it works:

When an application is installing during the monitoring phase of the Sequencer it may lay a file called Keltec.dll down in the C:\Windows\System32 directory. The Sequencer will catch that and place that file in the package’s folder on the Mount Point (typically Q:\) under the directory called VFS and under a subdirectory called VFS.

So, when the application is running it thinks it is calling the C:\Windows\System32\Keltec.dll file as always. However, SystemGuard intercepts the call and says “Where do you think you’re going?

The applications says, “Well, I’m going to call on my Keltec.dll in the C:\Windows\System32 directory”.

“Oh, no you’re not” says SystemGuard. “Get back in your bubble and you will find your DLL in the Q:\Packroot.v1\VFS\CSIDL_SYSTEM directory which, unbeknownst to you, is the VFS equivalent of the local System32 directory.

So the application looks into its VFS and finds the Keltec.dll file in its CSIDL_SYSTEM and all is happy in the world of VFS.

Exclusion Items

During the monitoring phase of Sequencing the Sequencer monitors everything that is laid down by the application being monitored. But, what if there is something that you know, in your heart of hearts, should not be captured by the “Monitoring” Phase?  You “Exclude” it of course. By doing so the Sequencer will not capture any changes and will not place those changes in the Virtual Environment.

Here, you can add items that you want to exclude. However, the SoftGrid Sequencer will build a list of VREG and VFS items to be excluded by default. For example, the Sequencer will not capture changes made to the %CSIDL_COOKIES%, this is like you saying “There is nothing to see here, just move along”.

It also will not capture changes made if you happen to surf the net while Sequencing. It does not monitor your %CSIDL_HISTORY% or your %CSIDL_INTERNET_CACHE%.

Disclaimer! Do not, I repeat do not surf the net, check e-mail or do anything other than install, test and configure your applications being Sequenced while Sequencing. EVER!

Some items you might want to consider excluding are the following:

%CSIDL_PROFILE%\ntuser.dat - who wants their profile data captured?

Note: Back in my day, you would have had to re-create these exclusion items from memory and from scratch. Ouch!!

Wizard Settings

If you do not like to feel “Welcomed” you could come to this tab and deselect the check boxes. For, if you do, the Sequencer will not prompt you with the dialogue boxes of “Welcome to the Package Configuration Phase of The Sequencer”, etc.

OK. Next, we Sequence!

- Sean Donahue