Thinapp Best Practices: Keep It Clean

Thinapp: Keep it cleanI've been working a lot with Thinapp lately and one thing I keep noticing when users are creating their Thinapp's is; they are neglecting to use a clean capture machine.

Definition of a Clean Machine

So what exactly is a clean machine? A clean machine is a “vanilla” Windows OS and its essential drivers with no other software installed. This also includes updates Microsoft updates. I can't put it any simpler than that.

Why do I need a Clean Machine?

If you are a Thinapp user you'll probably understand that during the capture process you have two main phases. The Pre-Scan and Post-Scan phases. The Pre-Scan phase is run before installation of the software you are Thinapping. It scans the clean machine and makes a note of everything on it. Files, Software, Services, Registry keys etc. The Post-Scan is run after the software you are trying to Thinapp has been installed. The Post-Scan checks for any changes made to the clean machine since the information gathered by the Pre-Scan phase. These differences are then put into the Thinapp package.

If you are capturing on a machine that has many applications installed, during this capture any one of those applications could be running, generating files, making changes to the operating system. These changes would also be captured into the Thinapp package. This is what we do not want to happen.

I saw a great example of why a clean machine is essential to successful Thinapp packaging yesterday. A customer's capture machine was a virtual desktop which was running all of their core applications. The customer captured an application with Thinapp and deployed it for testing. The application they had intended to capture worked perfectly fine. It wasn't until the application was rolled out to a few more users that we noticed that it was causing quite a high load on the CPU/RAM every the Thinapp was being used. We dug deeper into the package files and noticed that Windows Update had accidentally been captured during the capture process (It had run between the Pre and Post scan phases), so every time the Thinapp was being run, Windows Update was being run and was checking for updates. Obviously this was not what the customer wanted to happen and was promptly removed. But this just goes to show what can actually happen if your capture machine is not clean.

What if my application have dependancies with other software?

There maybe times when you want to Thinapp an application which requires other applications to be installed, for example .Net Framework. In this senario you have two options.

  • Option one would be to install .NET Framework onto the clean machine before you begin the package capture process. This way .NET is not captured with the application but the application being Thinapp'ed can run. You have two options on how this can work as well: 
    • If .NET is installed locally on your desktop base image (not capture machine), your new Thinapp will interact with .Net as expected.
    • If .NET isn't installed locally on your desktops base image (not capture machine); you can then use AppLink to link your new Thinapp with a Thinapp'ed .NET package.
  • Option two would be to package them together, install them both after the Pre-Scan and before the Post-Scan. If it's a one off dependency then this would be easier than having to create two Thinapp's and AppLinking them.

Is your capture machine clean?

The two easiest ways to check if your capture machine is clean:

  • On the capture machine navigate to the Project Directory and open the Capture Machine Overview.txt file. The default location is: c:\Program Files\VMware\VMware ThinApp\Captures\<Projectname>\Capture Machine Overview.txt
  • Navigate to add/remove programs on the capture machine and ensure that no software is installed.

Keep it clean people!