Getting a bit more life out of legacy applications with VMWare ThinApp

Derek Schauland shares his experience with VMware's ThinApp solution, which he is using to help make a legacy application available to some users.

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.


Derek Schauland has been tinkering with Windows systems since 1997. He has supported Windows NT 4, worked phone support for an ISP, and is currently the IT Manager for a manufacturing company in Wisconsin.


With Citrix you can execute the app immediately on XP and Win7 computers.


I am trying to wrap my mind around what XenApp and ThinApp do. Am I correct in thinking that these are basically advanced published apps? Am I also correct in assuming that these apps will require some form of software in the PCs like the Citrix Client of VMWare View Client to work?


As long as you have a 32 bit citrix server, I'd say yeah. We have updated to our newest fleet of 64 bit Citrix servers, but need a way for them to run the old legacy 32 bit applications. Has anyone else used Thin App for a remedy to this?


I recently completed a 60-day VDI pilot, which involved 25 users exploring both Citrix XenDesktop (with XenApp for application streaming) and VMware View (with ThinApp for application virtualization). I thought I'd share my experiences: First, although I could write an entire article on just the VDI experience, I will say right out of the gate we ended up selecting and implementing VMware over Citrix. Without going into all the details, we had a VAR come in and attempt to set up a XenDesktop environment for our pilot. After 9 business days without reaching completion, we sent them away. We then received a call from the regional sales manager for Citrix, who asked if we would give it a shot again if he provided an actual Citrix sales engineer, with two other technical engineers at the ready at any time. We agreed. Again, we gave them 2 weeks, and then had to cancel the Citrix portion of the pilot as it simply wasn't progressing. The Citrix people stated our pilot environment was too "complicated" (XP SP3, Office 2003, Adobe Reader, Flash Player, and one or two web apps). Regardless of the outcome on that end, the experience did give us some time to test out both ThinApp and XenApp. We have a total of 200+ applications that we currently deploy to machines through Altiris, and I chose a subset of 20 of these to run through both ThinApp and XenApp. Of the 20 applications, I will say to be fair that we were able to "package" every one with both applications. However, I found the ThinApp to be much more intuitive, as well as simply a faster build process. I was able to package 8 of the apps the very first day (I did go back and rebuild them, as I learned more tricks along the way) with ThinApp, whereas I didn't even complete one with XenApp. As with most Citrix products, there is just so much more complexity - and thus so many more steps - that it takes 3 times as long to administer anything. Also, as was mentioned in another reply, you need the Citrix servers on the back end if you want to use XenApp. To use ThinApp, all you need is a network share. The entire application including user and registry settings, gets incorporated into a .dat file, with an executable pointing to that file. You simply use policy or a login script to drop a shortcut on the user's desk, and away they go. We now have a number of places where we're using this, such as legacy web apps that require a specific version of Java, or developers that need to run two instances of an application that does not natively allow it. We decided early on that, despite the outcome of the VDI pilot itself, ThinApp would definitely be worth the meager price.


You don't anything special installed on the computer to run the ThinApp from what I've seen. Can even throw the application on a thumbdrive and run it from there.


I setup a 64 bit Win 2003R2 Citrix Xenapp 5 and we are running a few old Apps. (ie. Act6, Fax Software through our Copier, Multiview 2000SE, to name a few) and so far no problems. Except with the fact many older printers don't have 64bit drivers.


I think Cisco VPN uses Kernel Drivers, including Deterministic Enhancer thingy, which may not work under ThinApp although I haven't tried it myself. We're simply going to move from Cisco VPN to SSL I think :P


That is actually an interest thought. I had the thought a while back that you could run the CISCO VPN Software from a thumb drive essentially giving you a VPN connection anywhere you have a PC.


Anything with 16-bit code will not run on a 64-bit OS... We ran into that on our new Citrix environment with a rickety old legacy app. The solution for us was simply to use 32-bit OS for the new Citrix servers which still includes the 16-bit stack. ThinApp seems interesting though, and we will keep it in mind depending how long this old app sticks around.

Editor's Picks