These posts were from the Microsoft Tech Net Softgrid blog. Extremely interesting stuff…
In talking to my friend J.C. Hornbeck, who is the Blog Master of the SoftGrid Team blog, he suggested that I start a series of posts about the mistakes that new SoftGrid Admins make. In my 3 years with Softricity I was in charge of Training and Certification. I had the distinct privilege of teaching the SoftGrid class to almost every customer we had in the United States as well as people around the world. In that time I saw many people from differing backgrounds and skill sets make the same mistakes over and over again. No matter how much we emphasized it in class, the missteps still occurred.
The best part of my experiences in the past is that a lot of the missteps that people used to make “back in the day” were incorporated into later releases of SoftGrid. Progress is always being made to make it a better user experience.
I have broken these common missteps into 3 basic categories: The Client, The Server (including the management console), and lastly the Sequencer.
The SoftGrid Client
One of the most common missteps with the SoftGrid client that I have seen over the years is something that is actually merely overlooked. During the installation of the SoftGrid client, the installer program actually asks the user to configure their Desktop Configuration Server. The default behavior of this screen is to be deselected and therefore grayed out. Often, first timers will miss this step and then will not remember or know that they should go into the Client Management Console and add at least one server later.
Later on when they logon to the system, after having Sequenced applications and installed and configured the Server, they expect to see shortcuts for their SoftGrid applications on their desktop. Imagine the disappointment when they see nothing change. The first instinct is to start troubleshooting from the Server Management Console or even dive into the Sequence itself.
How to avoid it:
What I recommend people do when they do not see their applications appear at the anticipated shortcut locations is to reduce the areas of concern. What I mean by that is first see from the client whether they can go to “Start -> Run” and then enter the UNC of the SGVAS and successfully connect to the Content share. This tells me if they can even get to the share. If not they need to correct that issue. If this is the problem then begin by investigating IP addresses, names and typos, routing issues and of course DNS entries.
Next, within the Content share, navigate to the .OSD of the SoftGrid Package in question. Double click on that .OSD file. If the application launches by doing this then chances are we have a publishing problem and we would start troubleshooting at the SoftGrid Management Console.
Another popular mistake with these same results is that the .OSD file does not include the client’s operating system in the <OS VALUE> tags. This will prevent it from appearing as a shortcut BUT will still allow it to launch when manually double clicking the OSD file.
Now, another common cause of this issue with the same results actually is found in the SoftGrid Management Console. We will look at that soon.
Back in my day: Back in my day, when SoftGrid was version 3.2 and before, the SoftGrid client install didn’t even prompt you to configure the Desktop Configuration Server. You had to know that after the install you had to go into the control panel applet and manually enter it every time. Proof of progress is that it now prompts you for that information during install. More proof of listening to the customer is the fact that you can remotely enter that for a client in the Client Management Console (MMC) or even have it added with an unattended installation.
Another common “forget me not” is to reboot the client machine after installation. Because the SoftGrid installer did not prompt for a reboot after it completed I would estimate that 40% of people did not reboot the machine. What is more interesting is that 60% of the people would reboot even without a prompt. The Q:\ drive does not actually get set until this reboot occurs.
The SoftGrid Server
Most of the configuration or administration missteps occur within the SoftGrid Management Console. In classes we often planted mistakes inside of the .OSD files to intentionally make the students troubleshoot SoftGrid from day 1. A good majority of the students however seemed to find themselves in trouble by their own hand.
Paths in Publishing:
Without a doubt, I think the most common mistake happens when the person is publishing the application records. In the wizard, the “Import Application” record prompts the user for the location of two critical files, the .OSD and the .ICO. Many people will inadvertently walk the directory structure of the server to locate these two files. That would not be an issue if they walked via Network Neighborhood. Instead, they walk the local C:\ drive down to Program Files\Softricity\SoftGrid Server\Content. By doing it this way they have set the path to the .ICO and .OSD as a local directory relative to C:\. It is important to know here that when the client communicates with the server the client is requesting the location of the .ICO and .OSD files so that the client can then go an retrieve them to their local. If these paths are set to look in the C:\ drive, even though at the server that will resolve correctly, the client will actually look in their local C:\Program Files\Softricity\SoftGrid Server\Content. This does not exist on the client, ergo no shortcuts.
How to avoid it:
In order to avoid this behavior you should always use the network when browsing to the .ICO and .OSD files. This way they will come into the application record as a UNC path instead. It is also a good idea to set the “Default Content Path” on the root’s properties in the SGMC. It is true that the paths could be set to a HTTP path instead. The point is, they should not be set to a local path but instead, UNC or HTTP only.
Cannot launch Management Console:
Another common mistake I see people do occurs when they try to launch the management console. When you launch the management console and make a connection to a SoftGrid system it prompts you to connect to the management web server. People will often mistake this as a prompt for the SoftGrid VAS instead. What is happening here is that the MMC is actually connecting to the SoftGrid Management Web Service. This is the piece that was installed on a box running IIS 5.0 or greater. It is this management web service that is actually making the connection to the SQL Data Store. People see a prompt asking for a name and automatically assume it is the SoftGrid VAS. This will work if the VAS is installed on the same box as the Management Web Service. But if the pieces are distributed in the production environment an error will be returned.
How to avoid it:
I am afraid the only way to avoid this is to keep the names of your servers straight. I know this sounds glib but truly this mistake is purely naming. The other issue that is related to this step is the logon name. People will often be logged onto the system as an account, let’s say Admin. When they try to access the MMC it will use the current credentials by default. If the Admin account in this case is not part of the SoftGrid Administrators group then the connection will fail. People will often have an account named “SGAdmin” which is the member of the SoftGrid Administrators group. Again, the way to avoid it is with keeping the names straight.
Shares well with others:
One more common misstep is to install the SoftGrid Server and then NOT immediately share the \Content directory. Sorry, “folder” for all those who don’t remember Windows 3.1. What generally happens here is that they will do the install perfectly. It will ask them for the path to their \Content directory and they will accept the default location of C:\Program Files\Softricity\SoftGrid Server\Content. They then continue the install without any issues. Then they will move onto the Sequencer, sequence an application or two and move the packages over to the SGVAS’ C:\Program Files\Softricity\SoftGrid Server\Content directory. Then they will setup the SoftGrid Client and point it to the SoftGrid VAS as their DCC. Then all of their hopes and dreams are dashed when nothing appears on the client.
The bigger problem for this person is that so much time has passed and so many other things have been done since the VAS’ install that they simply have forgotten about the \Content directory actually needing to be shared. Now, the first sign that there is a problem is when the client tries to hit the UNC of the \Content share with “Start -> Run” and it fails.
How to avoid it:
Another glib answer I’m afraid, but it is probably obvious to you that the directory needs to be shared. This should be done as soon as the VAS install is completed. If during sequencing you actually map a drive to the VAS \Content share to move your package’s folder to, it would have been obvious even sooner.
Suites not enabled:
Aha, I knew there was one more common misstep I wanted to point out in the MMC. When you import a suite of applications, the default behavior in the MMC is the check box that reads “Enabled” is not selected. This box appears on the first screen of the Import Wizard and is subtle in its location as it appears on the right side about half way up the dialog box. It is very easy to miss and can be one of the more frustrating misses you can make.
Take it from me. I was demonstrating SoftGrid during a presentation at a large event. I was in a movie theatre, the bright lights were shining on me, blinding me to the hundreds of people sitting in the amphitheater style seating staring at my every move. My microphone was amplifying my already booming voice such that my every breath was being heard by the enraptured audience. I confidently imported Office 2003 by browsing to the .SPRJ file, it in turn read the names of the .OSD file and started the creation of the application records for all the applications in Office 2003. I moved with ease through the steps of the wizard explaining in detail each step along the way to my impending failure. I switched over to my client and told them to watch in amazement for the sudden appearance of icons. And then, nothing happened. No icons. No apps. Nothing!
And to make matters worse one of the audience participants moved to a microphone stand setup in the aisle of the theatre and pointed out to everyone that I had not selected the “Enabled” check box. I turned bright red and of course told everyone I had done it on purpose to show this often made rookie mistake.
How to avoid it:
This behavior only happens when you import a suite of two or more applications in the MMC. If the SoftGrid package only includes one application then the default behavior is to have the “Enabled” check box selected by default. Also, when you import a suite of applications, the .ICO and .OSD paths will be grayed out or unavailable. This is because the value for each application in the suite is different, therefore the boxes will appear gray.
In short, if the path boxes are gray you should immediately look at the “Enabled” box and it will be clear. In this case it needs to become a reflexive action like seeing a yellow light and speeding up.
Back in my day:
Now of course I need to point out how far we have come in this case from the earlier days. Back in the days of SoftGrid 3.2 and before, when you wanted to import a suite of applications, say Office 2003, you had to do it manually. I know, it is my most dreaded word also, “manual”. What we used to have to do is import the Word .OSD file and take all the steps in that wizard. Then when that was finished, we had to repeat those same steps for the Excel, Access, PowerPoint, etc. .OSD files. Each one individually. You kids today have it easy by importing a single .SPRJ file and being done with it.
Next up, the Sequencer’s missteps.
- Sean Donahue
Posted: Wednesday, August 29, 2007 1:57 PM by jchornbe |
Filed under: SoftGrid, Softricity
This isn't necessarily SoftGrid specific and some of you may already be aware of this, but you can now request a hotfix via our hotfix request web submission form:
https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&WS=hotfix
The form on the site has field entries for the following information:
Country/Region (Pulldown menu)
KB article number (Text entry)
Platform (Pulldown menu)
Product Language (Pulldown menu)
E-mail address (Text entry)
Just fill out the appropriate fields and the hotfix will automatically be emailed to you at the address you specify. Now you no longer have to open a support case (even if it was free) simply to request a hotfix. How great is that?
- J.C. Hornbeck
Posted: Tuesday, August 28, 2007 2:57 PM by jchornbe |
Filed under: hotfix
This may be old news to some of you but if you haven't seen the SoftGrid Documentation Set that we published you'll want to check it out. It's published as Knowledge Base article 940163 and includes the following documents:
• SoftGrid Client Installation Guide (Client_Installation_Guide.pdf)
• SoftGrid Platform Administration Guide (Platform_Admin_Guide.pdf)
• SoftGrid Quick Start Guide (Quick_Start_Guide.pdf )
• SoftGrid Sequencer Installation Guide (Sequencer_Install_Guide.pdf)
• SoftGrid Sequencer Manual (Sequencer_Manual.pdf)
• SoftGrid Server Installation Guide (Server_Install_Guide.pdf)
To obtain these documents, download the SoftGrid_v4.x_Documentation.exe file. Then, double-click the file to extract the documents to a folder on your computer. You can find the actual KB article here.
- J.C. Hornbeck
Posted: Tuesday, August 28, 2007 1:10 PM by jchornbe |
Filed under: manual, guide, best practices
Here's a list of the new Knowledge Base articles we published recently. Hope these help!
http://support.microsoft.com/?kbid=939327: Error message when a user uses the Refresh Server command on a SoftGrid client computer: "Error Code: 410038-16908204-00000917"
http://support.microsoft.com/?kbid=939329: Error message when a user tries to use the Refresh Server command on a SoftGrid client computer: "Error 0A-01100005"
http://support.microsoft.com/?kbid=940729: Description of the support policy for Microsoft programs that are running in a Microsoft SoftGrid Application Virtualization environment
http://support.microsoft.com/?kbid=938625: How to troubleshoot problems with SoftGrid Client refresh operations
http://support.microsoft.com/?kbid=940730: The support policy for third-party applications that run in a SoftGrid Application Virtualization environment
- J.C. Hornbeck
Posted: Monday, August 27, 2007 3:03 PM by jchornbe |
A common question we get is "How do policies work with regards to a virtual application?" Well, the answer is that it depends on the policy. Policies applied via a Group Policy Object (GPO) are not applied to the Virtual Environment; meaning, policies set through Windows Settings in the Group Policy Editor are not applied to the Virtual Environment.
Policies applied via an Administrative Template-based policy settings .ADM and .POL file are applied to the Virtual Environment; meaning, policies set through Administrative Templates in the Group Policy Editor are applied to the Virtual Environment.
During every application launch, we process the local policy files on the system:
Machine Policy -
%systemroot%\system32\grouppolicy\machine\registry.pol
Shared Policy -
%allusersprofile%\ntuser.pol
User Policy -
%userprofile%\ntuser.pol
Currently there is no way to disable/prevent GPO’s from being process during application launch.
When applying policies, SoftGrid does not distinguish between HKEY_LOCAL_MACHINE or
HKEY_CURRENT_USER. If a policy is configured for HKEY_LOCAL_MACHINE, it will be applied to HKEY_CURRENT_USER. When a SoftGrid application is launched, HKCU\software\polices\ is populated with additional policy keys from the workstation policy cache.
- J.C. Hornbeck
Posted: Monday, August 27, 2007 1:25 PM by jchornbe |
Sequencing
Sequencing is a 34 step process or thereabouts. I usually say that it is a 3 phase process, and although that is true, there are three major phases of the Sequencer, each phase has multiple steps. We will go through each phase and every step along the way
Phase I – The Package Configuration Phase of the Sequencer
Package Information
This phase is responsible for the creation of the lines in the .OSD files that are common to all applications in the suite. These lines include:
· The Suite Name – Clients prior to 4.0 used to save their user configuration settings in a file called “Settings.cp”. I know, it is an uncanny name isn’t it. Well this file was stored in the user’s profile directory (by default) but under a suite specific subdirectory that took its name from this <SuiteName>tag. This is not the case anymore of course (as described in “Inside the Grid” it is saved in a different directory and file name).
The <SuiteName> is still used internally by the SystemGuard and is still a required element. The recommended naming convention is::
Example:
Vendor_Application_Version_MNT e.g. Microsoft_Office_2003_MNT
* Note: The “MNT” portion indicates that when the application was installed during the monitoring phase of Sequencing, it was installed to the drive letter used as the client’s mount point, typically Q:\. As opposed to using the three character set “VFS”, which indicates that during this same phase the application was actually allowed to install to the C:\. This type of Sequence, known as a VFS of the Install will be covered in a future document on “Advanced Sequencing”.
· Title – This line has no real effective purpose in the .OSD files and as such my ego insists that I always put my name in this field.
· Comments – This line will go into the .OSD file as the <Abstract> field. We used this field to include every detail about the package and sequence possible. You should put in here the name of the application(s) being Sequenced, the block size used for streaming, did you compress the SFT or not, what operating system you Sequenced on, Service packs, and what media was used to install the application. To the degree that I should be able to look at the .OSD <Abstract> and know exactly what was happening at the time you Sequenced it. Consider this your mini autobiography.
· Server URL – This line is actually building the <CODEBASE HREF> line in the .OSD file. It contains the following elements:
· Protocol – Either RTSP (default) or RTSPS (128 bit encrypted secure). Now before you jump to the conclusion that 128 bit encryption is best for everything, please keep in mind what you are actually streaming. Application binaries only, not user data files.
· HostName- This is where you can enter the hostname, FQDN, virtual name or IP of a load balancer or the actual VAS that will be responsible for the streaming of that package to the client
* NOTE: The variable %SFT_SOFTGRIDSERVER% can be used IF you resolve that variable on the client using either a User or System environment variable.
· Port - It specifies what port my user sessions will use. The default is 554 for RTSP and 332 for RTSPS.
· Path - This field is used to specify the name of the sub directory under the Content share that you will save your package’s files into. This will build the relative path from \Content to the .SFT file to be streamed.
The recommended naming convention of this directory from the days when the product was under Softricity was:
Vendor_Application_Version_MNT e.g. Microsoft_Office_2003_MNT
Yes, this is the same exact name as the previous value of SuiteName. By using the same name, you can be thinking of SuiteName and actually be referring to Path and not mess it up. I would recommend you copy and paste it from SuiteName to Path. This will become very useful later when you are saving the package.
Example of completed line in .OSD
<CODEBASE HREF=“rtsp://%SFT_SOFTGRIDSERVER%:554/path/suitename.sft</CODEBASE>
Operating System
This next step in the Package Configuration Phase of the Sequencer creates the <OS VALUE> tags. This is a selection list. Move the Operating Systems you want to allow the application shortcuts to display on over to the right. Only those selected <OS VALUES> will even have the .ICO display as a shortcut. Others will not.
* NOTE: Most people will modify the .OSD file post Sequencing and remove all of the <OS VALUE> tags so that the package’s shortcuts will display on all supported operating systems. This was key prior to Vista being an available OSVALUE.
Phase 2 - Installation Phase
Your primary objectives at this phase of the Sequencer are to install, test and configure your applications. I recommend you run the applications here 3 times. I have yet to see an application that prompts for registration or activation or any of that “necessary stuff” after a 3rd launch. This is also the phase in which the Sequencer hides in the background and “Monitors” everything that the application’s installation is doing.
Everything you do at this phase is, for lack of a better term, “captured” by the sequencer and packaged in the SystemGuard bubble. That means that everything the typical application’s installation touches will be captured, but if you manually add files, etc. they too will be captured and placed into the virtual environment.
Sequencing Parameters
The first real screen you will experience during the Installation Phase is Parameters. Here you get to choose you Compression and Block Size Parameters.
Compression Algorithm: Allows the Sequence Engineer to compress or not compress the SFT file. If you chose to compress the SFT file it will be smaller and stream faster over the network, but will take longer for the application’s initial launch on the SoftGrid Client. This is because the decompression algorithm is CPU intensive. The default setting is “No Compression” and should be left unless the target LAN for streaming is excessively slow.
Block Size: Allows you to specify how much data is transmitted in out-of-sequence packets that are required when the user accesses part of the program that was not part of the initial launch data. Large values will cause larger amounts of the package to be sent per request from the SoftGrid Virtual Application Server, and will affect your network bandwidth. However large blocks may minimize the number of requested blocks, because more features are sent within each block. Using smaller blocks will increase your network performance but will cause slower delivery of out-of-sequence packets. 32KB is the recommended and default setting for the block size.
The Monitoring Phase
Once you click “Start Monitoring” that is exactly what the Sequencer will do. It will shrink into the background and watch everything that goes on around it. It will, conceptually, say “I see you putting files in C:\Windows\Sysetm32.” Or, “I see that you added some registry keys and values to the HKCU hive. I’ve got my eyes on you.” Lest we never forget that the Sequencer will later capture and place into the virtual environment everything that the application “touches” during its installation phase. It does not necessarily take a before snapshot as some packagers do, but it does a differential check of what was laid down while the application installed.
It is important during the initial “Monitoring Phase” that you do as much as possible as far as installing applications into the suite, adding service packs, making your configuration changes, etc. Also, what is essential is that when you kick off the installer for the application, and the application asks you “Where shall I install to?” you need to direct it to the Q:\ drive (or equivalent client mount point) and into a package root directory that follows the 8.3 convention.
Now, I know the questions that may arise here for some of you, so let me head them off at the pass.
Q: “Why do I need to install it to Q:\?”
A: You should install it to Q:\ because when the application streams to the client it may, and I say may, look to that drive letter again so that it can run. Now, even though inside of the .SFT file SoftGrid refers to the variable %SFT_MNT% so that it could conceivably run on any client with any virtual drive mount point defined. It is the application itself that hard codes the drive letter inside of its registry or a .ini file. When that happens the application will stream to the client, explode into the virtual environment and look to Q:\, yet the Mount Point of the client is actually B:\.
Essentially the application is looking for what it was always told to look for, yet when it gets there its ideal does not exist.
Q: “Why do I need to install it to an 8.3?”
A: Most, if not all, applications will generate a backwards compatible 8.3 directory name even when they install into a long folder name. If you do not even remember the days when we were limited by our directory and file names to an 8.3 convention please, do me a favor, and just skip ahead. You’re too young. Now an application such as Microsoft Office 2000 will install into a long folder of “Microsoft Office”. When it auto generates the 8.3 it would follow the algorithm of first 6 characters, a “~” and a number (1). So Office 2000 would be Microso~1.
Following proper sequencing practices you would revert the Sequencer back to its “clean state” at the end of every successful Sequence and start over fresh. If you were then to Sequence Office 2003, it would install to a long folder of “Microsoft Office”, again. And again, because the Sequencer is clean, it would auto create its 8.3 as Microso~1.
* Note: Now, do I guarantee either of these to be an issue? Of course not. You could come to me in 6 months and say, “Hey, I have sequenced a bunch of applications, never paid attention to your best practices and I have never had a problem.”
And to you I say, “Congratulations, you have dodged the bullet." You haven’t run into that application or combination that will cause the problem. Heck, I did a lot of experimenting and yes, even I Sequenced an application that installed to Q:\ in a long folder and streamed it to a client that had B:\ set as its mount point. Did I suffer? No. But I was lucky.
Stop Monitoring
Once you have successfully installed, tested and configured your applications into the suite you are now ready to bring forth the Sequencer and click the 'Stop Monitoring' button. Before you click that button and make a commitment to your Sequencer you need to ask yourself a serious question. “Am I really ready for this? Have I installed all of the applications that I wanted to? Have I added all of the services packs I intended? Have I configured and tested the applications?”
If you can answer “Yes” to these questions you may be ready to Stop Monitoring. Once you click “Stop Monitoring” the Sequencer asks you, “Where did you just install into?” You need to select here, and only ever select here, the package’s root directory on Q:\.
The Sequencer will then say, “OK. I understand you installed the bulk of your assets into the Q:\ drive’s Package Root, but like all applications today you also added a handful of files to the C:\ drive in those shared system directories like System32 or the Registry, etc. I will take those files and capture them and then place them into the VFS or VREG for you.” It does this even if you added those items or assets manually instead of the installer adding them.
You now have the opportunity to do it all again with the “Start Monitoring” button. You can add more files to the package. Now what it’s going to do is also add the osguard.cp (SystemGuard) file and the VFS directory under the Package’s root directory.
Add Files to the VFS
The next step in Sequencing allows you to manually add files to the VFS. If you know, either from a friend, neighbor, your aunt or uncle, or even your own experience that certain files were not added by the installer and therefore not captured by the sequencer to be placed into the VFS directory you can add them here.
Phase 3 - The Launch Application Phase
This phase is critical in that it extracts the icons for the shortcuts, is responsible for the names of the .OSD files and also arranges the .SFT into the streamable blocks of Feature Block 1 (FB1) and Feature Block 2 (FB2). It determines what components or combined assets of the package need to be in FB1 based on your actions here. So, although I did not coin the phrase, I often say here that you need to do your top 10 actions. For whatever you do here will be in FB1 and whatever you don’t use here will be in FB2.
Now of course it is not as cut and dried as that statement. For example, if calling on one feature ends up calling another dependency, even unknowingly to you, then that dependency will land in FB1.
Author’s Note: Configure Applications
This first step is absolutely critical in the icon extraction, .OSD naming, and name of the shortcut for the application. It is also where you can modify the list of File Type Associations (FTA's) and their properties. My best advice to a Sequencer here is to remove any shortcuts from the list you will not be publishing. This does not remove their assets from the package, merely their shortcuts. I would also recommend you edit any of the shortcuts you keep and verify that the correct path and name of the executable on Q:\ is listed, the correct icon is listed, the name, version and .OSD file name are exactly how you want to see them.
By doing these here you will have successfully entered the correct value in the .OSD file for the <CODEBASE FILENAME> tag. You will also have a user friendly name appear as the application’s shortcuts. And the .OSD file name of your choosing will be placed in the .SPRJ name. You won’t have to edit any of them later.
Author’s Note: Launch Applications
The next step in the Sequencing process is critical in the actual building of FB1. Here you will be prompted with your list of shortcuts for applications to be published as well as two little buttons in the lower right corner called “Launch” and “Launch All”. Now, as strange as it may seem, the “Launch” button will only launch the selected application, one at a time. Whereas “Launch All” will launch the first, you do your “Top 10”, then as soon as you close it the next application will launch almost immediately.
The worst thing I see people do here is to launch an application and do nothing in it. They launch it, get so excited that it worked and then close it. They now have a very small FB1 and although it streams fast, everything they do is going to cause an Out Of Sequence request from the server.
Author’s Note:
I would answer, I’ll tell you a secret. If you don’t launch anything here, and I mean nothing. Just click next. Don’t launch a thing. Did I say that already? OK, good. If you launch nothing here, then everything will be in FB1 and you will have no FB2”.
That's it for Inside the Sequencer so until next time, happy sequencing!
- Sean Donahue
Posted: Friday, August 24, 2007 3:40 PM by jchornbe |
So here's a question I get from time to time:
"Hey JC, I see that SoftGrid will automatically install MSDE for me so obviously it's OK if I use that to support all of my production users, right?"
Actually the answer here is 'No'. Now technically it might work if you have only a handful of users but officially this is not something that Microsoft supports. What does that mean exactly? That means that if you choose to use MSDE in a production environment, Microsoft product support reserves the right to ask you to recreate the issue on Microsoft SQL Server as a troubleshooting step. Can you use it in a test environment? You bet. Can you use it as part of a proof of concept (POC)? Absolutely. Can you use it if you don't have many users? Maybe, but not if you want to be running a supported config.
Why, you ask? There are many reasons why, including MSDE's limited support for CPU's, limited support for RAM, a limit on db size, the lack of a SQL Agent job scheduling service as well as no support for enterprise management tools, among other things. But why really isn't important. What's important is that if you want to prevent a lot of pain and heartache in the future and you want to run in a supported manner, find a SQL Server box somewhere and use that. You'll be glad you did. Oh, and I almost forgot - this goes for SQL Express too.
- J.C. Hornbeck
Posted: Thursday, August 23, 2007 9:35 PM by jchornbe |
Yea, I know, this is somewhat off topic but I thought this would be something you'd appreciate a heads up on:
938979: An update is available that improves the performance and reliability of Windows Vista - http://support.microsoft.com/default.aspx?scid=kb;EN-US;938979
938194: An update is available that improves the compatibility and reliability of Windows Vista - http://support.microsoft.com/default.aspx?scid=kb;EN-US;938194
I'm not sure when these packages actually showed up externally but based on my personal experience I can give them a hearty thumbs up. In fact if dear old Mom called me up and said "I don't have any problems with Vista so should I install these anyway?" I would tell her "Absolutely!" And you know whose phone would be ringing if there were any issues. Anyway, there are too many updates and fixes to list them all here so you'll have to hit the links to see the details. Oh, and I'll try to keep the off topic stuff to a minimum in the future.
- J.C. Hornbeck
Posted: Thursday, August 23, 2007 3:25 PM by jchornbe |
We are pleased to announce a new SoftGrid support policy entitled “Description of the support policy for Microsoft programs that are running in a Microsoft SoftGrid Application Virtualization environment”. This policy defines how Microsoft applications will be supported in SoftGrid. Please see http://support.microsoft.com/kb/940729 for more details.
- J.C. Hornbeck
Posted: Thursday, August 23, 2007 1:18 PM by jchornbe |
We are pleased to announce a new SoftGrid support policy entitled “The support policy for third-party applications that run in a SoftGrid Application Virtualization environment”. This policy defines how third party applications will be supported in SoftGrid. Please see http://support.microsoft.com/kb/940730 for more details.
- J.C. Hornbeck
Posted: Wednesday, August 22, 2007 12:21 PM by jchornbe |
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
Posted: Tuesday, August 21, 2007 1:46 PM by jchornbe |
I stumbled across another 3rd party tool that I thought you might be interested in knowing about. It's called the SoftGrid Client Setup Kit and is made by a company called Login Consultants. Here's what they have on their website:
============
We have released the SoftGrid Client Setup Kit. This is a very useful tool when it comes to deploying the SoftGrid client to Windows desktops, but also because this is the first tool that comes with the new and improved Login Consultants tool lay-out!
With the SoftGrid Client Setup Kit (SGCSK) you can easily configure an universal installation VB-Script for deploying the SoftGrid Client to Windows Desktops. Because Windows Desktops are always very different in terms of hardware specs and software level, you need additional intelligence during installation of the SoftGrid client to determine the amount of hard disk space you can use for the SoftGrid Client cache size property. The SGCSK can dynamically determine the SoftGrid Client cache size, based on a percentage of free disk space. Also, certain configuration settings cannot be configured using the native SoftGrid Client installer. You can configure most of the common settings that you would normally have to configure after the installation completes.
Settings which can be configured by the SGCSK:
- All the standard installation options
- Dynamic Determination of SoftGrid Client Cache Size
- SoftGrid Client Security Settings
- Disconnect Operation Settings
============
For more information or to download the tool go here.
This is not a Microsoft tool and as such we make no warranties or guarantee's, nor does Microsoft support the use of this tool in any way. This is one of those 'use at your own risk' type of things but hopefully you'll find it helpful.
- J.C. Hornbeck
Posted: Monday, August 20, 2007 2:59 PM by jchornbe |
On Cristiano's weblog there's a great write-up that shows you how to extend the MOF file in an ESD system like SMS that will allow you to see what is on the client for virtual applications.
I haven't tried this myself and since it's not an official Microsoft tool there are no warranties or guarantee's. This is one of those 'use at your own risk' type of things but it looks pretty slick. Check it out here.
- J.C. Hornbeck
Posted: Thursday, August 16, 2007 1:48 PM by jchornbe |
I generally try to avoid too much marketing stuff but this is a really neat case study that recently came out and I thought you might be interested in seeing it. The overview is below but if you want to jump right in you can access the site here.
Solution Overview
Partner Profile
Gen, a subsidiary of Q-Comm Corporation, delivers office productivity and line of business applications on a “Software as a Service” basis to small and midsize organizations around the world.
Business Situation
Gen wanted to grow its business and expand its capacity to meet customer needs, but its existing service delivery infrastructure would not scale efficiently.
Solution
Gen deployed Microsoft SoftGrid Application Virtualization for Terminal Services and augmented the service delivery environment of Gen with load balancing technologies.
Benefits
Eliminated the application conflicts that created service delivery inefficiencies
Enabled existing server infrastructure to support more users with greater performance
Effectively converted existing infrastructure into one capable of supporting a nationwide service rollout
Hardware
HP Reliant servers
Vertical Industries
Hosting and Application Service Providers
Country/Region
United States
Link
http://www.Microsoft.com/casuistries/Cassidy.asp...
Posted: Tuesday, August 14, 2007 1:38 PM by jchornbe |
Microsoft’s SoftGrid product can do some amazing things to help application compatibility issues. That being said, while administering your SoftGrid environment, you will undoubtedly come across problems with specific applications. You may successfully stream your application on one PC and everything works fine. You may then stream your application to another PC and the same application bombs.
The Problem
This was the case when I recently tried to stream Java 1.5 to a client that had Java 1.6 installed locally. In previous versions of Java, there was a setting in the Java applet in Control Panel that allowed this type of configuration to work. The newer version of Java, however, does not react quite like its predecessors.
What I found was that you could stream Java 1.5 (within Internet Explorer of course) and it would work fine until the local version of Java 1.6 is launched. The only way I could get the Java 1.5 virtual app to work again was to uninstall the local Java 1.6.
I determined that when Java 1.6 was launched, it must be laying down registry entries or files that the Java 1.5 is reading thereby causing a conflict.
What do you do in situations like this?
One of the most common tools, that can be used to track down the culprit of such problems, is Sysinternal’s Process Monitor. If you’ve never heard of it, it’s a great (not to mention FREE!) tool created by Mark Russinovich that combines the functionality of RegMon and FileMon.
In order to use Process Monitor (ProcMon) in the virtual environment, one must first modify the .osd file for the virtual application. For detailed instructions, see KB 939896.
Once you’ve created your log file, you can now begin hunting down the source of the problem.
When ProcMon logs are created, hundreds of thousands of entries are written in a matter of seconds. I captured data for less than 30 seconds and had over 100,000 entries. Thankfully, ProcMon makes it easy to weed out irrelevant data.
Since I deduced that Java 1.6 was creating something that was causing a problem, I first started my search by filtering my log file. The idea that Java would lay down registry keys, which would cause problems, seemed to make the most sense, so I began narrowing my results to registry keys.
I only wanted to show a specific operation: RegCreateKey. You can do that by simply right-clicking on a line that contains the operation in question, click ‘include’, and then click ‘Operation’.

Next, I filtered my results so that only the ‘iexplore.exe’ process was shown (use the same process as before, but choose ‘Process Name’ instead of ‘Operation’.
I had successfully shrunk my results from over 100,000 entries to only 612. Looking over my results more closely, I could see that most (over 500 of the 612) of the keys created were within the path: HKCU\Software\Classes\CLSID, so I focused my search there.

Looking closely at the ClassID’s I could see that the second, third and fourth portions of the ID look very similar to Java versions (ex. 0015-0000-0028 = Java 1.5.0.28).
Logically, this seemed a reasonable source of my problem, and I decided to test it.
I went through the following steps:
1) Launch the local Java 1.6 (In my case I went to www.javatester.org/version.html from the local Internet Explorer.)
2) Delete the registry (first export the key, so that it can be put back in place, of course).
3) Launch the virtual Java 1.5 (In my case I again went to www.javatester.org/version.html ,but this time from the virtualized shortcut to IE).
This did indeed fix my problem. I now had Java 1.6 running locally and Java 1.5 running in the virtual environment.
The Final Solution
Now that I knew what registry keys were causing the problem, I needed to make sure those keys did not exist whenever the virtual application is launched.
Here’s what I did:
I created a reg file (let's call it CLSID.reg) with the following info:
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\Classes\CLSID]
I created a batch file (let’s call it JavaFix.bat) with the following info:
xcopy z:\JavaFix\CLSID.reg c:\ /D
regedit -S c:\CLSID.reg
I then placed both of those files in a shared directory that my client computer had already mapped(the z: drive in this case). *Note – I also could have created a batch file to map the drive.
Now all I had to do was edit the DEPENDENCY section of the OSD file for Java 1.5 to look like this:
<DEPENDENCY>
<SCRIPT TIMING="PRE" EVENT="LAUNCH" PROTECT="FALSE" WAIT="TRUE">
<HREF>"Z:\JavaFix\JavaFix.bat"</HREF>
</SCRIPT>
<CLIENTVERSION VERSION="3.1.2.2"/>
</DEPENDENCY>
Another problem solved with the help of Process Monitor and some good old fashioned determination!
-Mike Ory
Posted: Monday, August 13, 2007 2:37 PM by jchornbe |