When I was an SE in Southern California back in the day, I had a toolkit that I always referred to for specific things. If you know me from those days, you knew that my biggest tool was the wtsuprn.ini file that I had created to map printers in NT 4.0 and Windows 2000 to the correct drivers on user devices. I was addicted to amassing as many mappings as humanly possible. But I had other things too – for example, a set of utilities that I would use to help troubleshoot applications that I wanted to install on XenApp servers. Well, I was talking to a customer today and it made me think back to those days and consider what my application validation toolkit would look like today.
First and foremost, my number one prescription for any application is application virtualization. This, in my experience, has offered the highest level of application compatibility with the least effort. Basically, what this entails is using the profiler tool in XenApp to package your applications. You create a single package that targets multiple operating systems. What’s cool about this is that you can include registry keys, scripts, files, and anything else that you want into the application package. Examples might include a specific version of a system DLL that the application requires but which makes other applications fail. You would just isolate the file in the application package and it is made available to the application during run-time without overwriting the system DLL on the target device. Another great benefit of application virtualization is local and offline application delivery. I can essentially deliver apps to servers much faster but also to PC’s and even for use while users are disconnected. This is ALWAYS my first step at delivering any application with XenApp… even those that I know will install directly without a problem.

Alas, application virtualization isn’t a silver bullet for everyone. Maybe your vendor won’t support it and that’s a problem for you. Or maybe the application uses a service that can’t be isolated. Well, in that case you might need to use a hybrid approach. You have three choices (I’ve listed them below in order of my preference).

  1. Profile the app and stream it (we’ve already talked about that)
  2. Install the service onto target machines and virtualize the application components (basically profile the app and stream it. It will be able to communicate with the installed service on the target device at run-time)
  3. Install the application (this is the traditional method of delivery to XenApp servers)

If you have to go with 2 or 3, then you might need tools to help coerce some “poorly written” applications into working in a multi-user environment. Here is my list of utilities and resources that I would use to give customers and partners advice or to troubleshoot the applications myself. Some are resource lists, others are built into XenApp, others are available as free/shareware or for purchase. If you have a tool that you use, add it to this list as a comment. Let’s build a list of resources together.

XenApp’s Profile Management feature
HOLD THE MOUSE cowboy. Before you move down the list, you need to read this. Profile management helps you prevent profile bloat. That’s a given. You can read all about it at Dave Wagner‘s blog. However, profile management has a great utility called verbose logging and it’s amazing! You turn it on and install an application. Then run the application as a user. You open the log and you have a list of every registry key and file that was written or touched (it’s like regmon and filemon in one, just not as pretty). This is great for checking if the app is writing to HKLM or trying to overwrite a DLL or read-only file. Profile management is available in Enterprise and Platinum edition. Open the admin guide by clicking the link and then go to page 28 to see how to activate verbose logging. BUT WAIT… there’s more. Profile management let’s you include and exclude profile components. So, if an application is writing user settings to a global file somewhere it might be possible to copy it into the users profile for persistence between sessions and OS’s. You owe it to yourself to check it out. (BTW… to help you shrink already-bloated profiles, check out profile nurse - free from Sepago)
App compat toolkit
The application compatibility toolkit is a step by step process for validating applications on XenApp. It utilizes best practices and a virtual environment to help make the process easier.
Citrix Ready. Community Verified.
This is a great resource for checking to see if other Citrix customers or partners have had experience with your application(s) and if there are some pitfalls you can avoid. Another great thing about this site is that it also covers hardware compatibility for things like printers. Please contribute if you can. It’s only as good as the community makes it.
Terminal Server Microsoft KB Listing project
The holy grail for administrators and developers. It begs the question… Is there such a thing as too much information? Here, Jim Kenzig lists every single article he could find on developing, securing, troubleshooting, yada yada yada for applications running on Terminal Services.
OK, so it’s a 3rd party and it’s for charge but if you’re sufficiently in a jam and have nowhere else to turn, chances are these guys can help. If I were a customer though, I’d leave all the messing around here to my resellers/solution advisor because if you haven’t figured it out by this point it’s probably worth paying someone else to do so.

I hope this core list helps you. If you’ve got other tools, by all means… please list them below as comments and give us a little information about them. Also, I’m interested in knowing how many of you are using application virtualization and profile management. To that end, I’d appreciate if you could complete the quick poll’s below. Here’s to the community.

UPDATE: You may also wish to check out the TechTalkthat Dan Feller is doing on Application Validation.

Vinny Sosa