Recently I was tasked with improving availability of a legacy application used by a few people in my organization. Simple enough, I thought, since most of the PCs in the environment are still running Windows XP and the application does run well. The problem isn’t that the application doesn’t run (yet) — it is that there isn’t a good way to quickly make it available.

Thinking about this problem, which I had previously tackled with Citrix Metaframe XP, got me to consider packaging the application into an MSI and pushing it out to the users with Group Policy. This was a great idea, until the application had other ideas. The biggest issue there was the settings within the application being pulled into the MSI correctly to ensure it would operate as needed.

Looking at alternatives

I have not completely given up on the idea of packaging the application for deployment, but the issues that popped up there made me think about other ways to make this application easily available. My goal here is to make the application available to mostly XP users, however Windows 7 is being deployed a machine or two at a time, and there are a few cases where I can see that these users might also need to access this old application.

The alternative I found was VMWare ThinApp. In considering this as a possible solution (or at least one worth demoing) I consulted a colleague and the immediate suggestion was also VMware ThinApp. Since I will be testing it anyway to see if it will solve the availability issues I am facing, I thought I might as well dig in and share the experience here.

The idea behind ThinApp

ThinApp is designed to virtualize an application in a stable environment to allow easy portability to newer systems. It cannot handle everything you might want to virtualize, like kernel mode drivers, printer and scanner drivers, DLLs with global hooks, and a few other system-level items.

VMware recommends using a clean computer, which is defined as a computer with only the operating system installed. The machine can be a physical or virtual machine and should also run the oldest operating system that the application will be used on. In many cases, Windows XP will be the OS of choice here, and in my case it is for sure.

With the differences between Windows 7 and earlier versions of Windows, ThinApp could be a great way to keep old applications around where necessary. Given the rate of adoption in many companies, it could go a long way in keeping things moving.

Getting set up

VMware provides a 60-day trial of ThinApp, which is really pretty generous and might get me through the interim period before the virtualized application gets moved to a hosted solution, but for now, as long as I can run it once, I’m all set.

The setup is as simple as running through a three or four step wizard after the download. Once the application is installed you can start virtualizing applications by capturing setups.

Capturing a setup

The following are the steps taken to capture a setup with ThinApp:

  1. Prescan: Get a baseline of the system you will use to capture the application
  2. Installation: Install the application
  3. Postscan: Identify the changes made during installation
  4. Configure the application: Configure/change project settings
  5. Build: Compile or build the virtualized application

Figure A

ThinApp Welcome Screen

As you advance through the ThinApp screens, there are explanations for what is happening in each step (Figure B) to help you through the process.

Figure B

ThinApp Pre-Scan

When ThinApp performs a prescan, it is collecting the current state of your system; this includes installed programs and the registry. It does this so it can compare the before to the after once you install the application you are planning to virtualize. This way these new settings or changes can be included in the virtualization of that application and separated from the computer you are using. Running the Pre-Scan will likely only take a few minutes, depending on your system configuration.

Once this completes, you can install the application being virtualized. The setup of this application will behave just as if you were installing it for use on a physical system with no virtualization plans.

Once the installation of the application completes, you can proceed in the ThinApp wizard by clicking Post-Scan (Figure C), which will check for changes on the host system. The changes found should be all of the information about the application that you just installed.

Figure C

ThinApp Post-Scan

The post scan process will discover entry points created by the application installation. Select the entry points you wish to keep; by default all found entry points are selected.

What is an entry point?

An entry point is an item which starts the virtual environment; they are pointers to the executable files installed and captured that will load inside the ThinApp.

When you click next you can specify the groups and users for the virtual environment you are creating. The default selection is everyone, but you can also select specific groups of Active Directory users. Those who are not allowed to use the application will receive a message, which you can define at this step. This is shown in Figure D.

Figure D

Groups allowed access to this application

After defining who can use the application, you need to specify the write mode of the virtualized application and you get two choices:

  • Full Write Access to Non-System Directories : For use with certified applications like Office to allow them to behave as they would if installed normally
  • Restricted Write Access : For use with untrusted legacy applications to prevent write access to some directories

On the next screen you get to define the sandbox for the application. The sandbox is the area where most writes happen, and helps keep things in the virtualized application contained in an isolated environment.

You can specify a profile on the local machine to act as the sandbox — a USB or portable media device, or a network location. Where you place the sandbox for this virtualization should depend on your intended use.

When you click Next you will be asked if you would like to send information to VMware, and following that screen, you need to assign an inventory name to your ThinApp that helps identify the virtualized application to inventory tracking applications you might be using.

For the inventory name, specify the name of the application you are installing if it is not already listed there.

On the last screen, you save the ThinApp package and are able to specify an MSI to be created with the installation. You will need to decide if the application should be self-contained or use a separate DAT file for information storage; depending on the application these selections may vary. The MSI option is used to deploy the package with Group Policy. When you have completed selections here, click Save to prepare the project to be built. This will check for things that may not be supported by ThinApp and display them on the screen. If everything goes smoothly you will be able to build the application on the next screen.

The build process is displayed on the screen as it proceeds; once completed, you will be able to begin testing the virtualized application.

Deployment and use

Make sure you test the scenarios that pop up within your environment; you might want to work with several types of users to ensure the application works as they expect it will. Keep in mind that initially you may need to create a couple different builds and test them within your environment to see what works best.