Home > Blogs > VMware ThinApp Blog

Comparing virtual and non-virtual environments

If you ever need to compare what a virtualized application is presented with inside the virtual bubble against a normal physical install, you might try using the following technique.

WinMerge is an open source differencing tool which allows you to compare two text files.  It can graphically plot out the two files, and in the details window, highlight what it has found to be different.   How would this be useful in a ThinApp packaging situation?   By using this tool you can examine visually what a ThinApped file system and registry looks like when compared with a non-virtualized version, possibly giving you some hints on how to fix your package.


Here's an example of WinMerge comparing two registry text exports, one from a physical install of Regedit, and a second from a redirected copy of Regedit (via the Regedit debug entry point):


Notice the two bar charts in the location pane.   These allow you to see that the majority of the registry is the same, but there are certain locations which are different.   (Note that I am using a Case Insensitive comparison here to account for some capitalization.)   Selecting the areas with the colored bars allows me to read the differences.

A second example uses another free tool to generate comparable directory listings.   By exporting the contents of the C drive with Karen's Directory Printer, I can run a redirected and non redirected copy of her tool (by launching it from the CMD debug entry point), export the listings, and compare them.  (Note that I disabled date and time stamps for files prior to export, as I was only interested in file size differences and files that did not exist in one listing)


Once again, I can jump to the section of the file system which is indicating a difference, and then highlight the items in question to see details.

The next time you are looking for a way to compare virtual and non-virtual environments, troubleshoot isolation mode issues, or track down why a ThinApp is working differently under different conditions, you might want to consider giving this method a try.