Sunday, January 6, 2008

Deploying Microsoft Virtual Applications (SoftGrid) through GPO assignment

After several successful manual installations I wanted to test the quality of the MSI Utility through automatic distribution. First up: Group Policy Object Software installation.

So I set up a Windows Server 2008 Active Directory and two clients: one Windows XP SP2 and one Windows Vista SP1 machine. I'm using SoftGrid client version 4.2.1.21 and downloaded three applications from instantapp.net because that´s the lazy guy I am.

In preparation I created three Group Policy Objects:

  • SoftGridClientInstall (for the automatic installation of the SoftGrid 4.2.1.21 client)
  • SoftGridMachAppsInstall (for installing assigned applications to a machine)
  • SoftGridUserInstall (for installing published applications to a user)
So how did the installation(s) go?

SoftGridClientInstall
First there is the installation of the SoftGrid client itself. Of course this client, at least older versions of it, has probably been installed many times through many different ESD sollutions so this shouldn't give much trouble.

Well, in one of my previous posts I already came to the conclusion that I needed the MSIDEPLOYMENT=TRUE property te be set on the command line. Since you cannot add properties directly to a command line with Group Policy Software installation (nope also not in Windows 2008) I had to create the next best thing: a transform file and added the property there.

But in previous testing I also noticed that, although the DoTimeOutMinutes key was set through the property above, the setting gets reverted to its original setting of 90 days. Which is not good. Although the value of the DoTimeOutMinutes key is a property named DOTIMEOUTMINUTES (go figure) and you can set this value on a command line or transform file, it doesn’t end up in the registry because an action inside the installer is triggered by the MSIDEPLOYMENT=TRUE property and is overruling it at install time. Arghh

There are several ways to work around the issue:

  1. Set the DoTimeOutMinutes key correct after the installation through a custom vbscript or Windows Server 2008 Group Policy Preferences, the latter being a very cool feature in Windows Server 2008 if I may say so.
  2. Remove the MSIDEPLOYMENT=TRUE property and set all the values correct in your transform file, either by customizing the registry table or setting several related properties.
  3. Leave the MSIDEPLOYMENT=TRUE property and edit the registry table in the transform file

I chose the last option. If you’re not familiar with Windows Installer internals you might want to choose another strategy.

First I edited the registry table at the location where the DoTimeOutMinutes key was located. The original value was #[DOTIMEOUTMINUTES] and I edited it to #[DOTIMEOUTMINUTES2].

Next I added the DOTIMEOUTMINUTES2 key to the property table and assigned it the value 16777215 (which is HEX:ffffff). You could also set this value directly in the registry table but be sure to assign the #sign in front of the number. This converts it into a REG_DWORD.

So now all I need is an “install” share (which I create on my DC for testing purposes) and copy my client package including the transform file I created to it. Btw don’t forget to add Domain Computers to the ACL of the install folder if you’re doing machines based software distribution, or it won't work. I also noticed that by default in Windows Server 2008 the share permissions are set to Administrators only. You might wanna change that too!

Add the softgrid-wd-setup.msi to the Computer Configuration \ software installation portion of the GPO and add the transform file in the modifications tab (choose Advanced in the Deployment Method selection screen) and click ok.

Reboot the client and look what happens. Check the registry key DoTimeOutMinutes and see if it’s set correctly!

SoftGridMachAppsInstall
Now that we have installed the SoftGrid client through GPO, let’s push some of those application down there as well.

I’ve copied the generated MSI’s to the install share where the SoftGrid client already was copied. I edited the SoftGridMachAppsInstall Computer Configuration \ Software installation section and added the three applications in there and selected the checkbox “uninstall this application when it falls out of scope of management” in the Deployment tab of the properties of the application.

Rebooted the machine and let’s see what happens.

Log in with a limited user
Removing the linked GPO to force the uninstall of the applications. Yep, they get uninstalled!.

SoftGridUserInstall
But does all this also work under limited user context?

Let's disable the SoftGridMachAppsInstall GPO and enable the SoftGridUserInstall GPO so users should be able to get the applications that were published to them.

Normally a MSI that was published to a user would show up in the StartMenu, Desktop or as file association. However these are populated through several Windows Installer tables and in the MSI that was generated for the SoftGrid application these tables are not filled. So install on first use is not possible with this MSI.

We have to go to Add/Remove programs screen en click Add Program (in Windows XP) or Install a program from the network (in Windows Vista) to see the applications that are assigned to the user.

Click install and the application runs
And works :-)
Ok, VLC gave an error when I installed it on my Vista client. But this probably more related to Vista since it worked ok on XP. I won’t go into that right now.
The only thing I found is that when I set the Installation user interface options in the Deployment tab of the properties of the application to Maximum, I got some weird error on the client.
Don’t know what it means and what causes it, but setting this value to Basic solves the issue. Sadfully users are now not able to see the progress of loading the application, which I personally like very much.
Uninstalling the applications was as simple as installing them. Just remove the Group Policy link from the OU and make sure you select the checkbox “uninstall this application when it falls out of scope of management” in the Deployment tab of the properties of the application.

Summary
After some preparation on the deployment of the SoftGrid client itself, the individual applications had no trouble at all being deployed through Group Policy assignment. The installation and uninstall, performed both under machine and (limited) user context, went without any trouble.

Despite the fact that Maximum UI gave the “1:” error under user context, the MSI Utility for Microsoft Virtual Applications looks like a solid solution for software deployment!

No comments: