strange virtual app error message in config mgr

I’ve recently been working in a proof of concept environment streaming some virtual applications from System Center Configuration Manager 2007 R2.  The process for adding a virtual application is really simple – there is a nice wizard that you run and point at the xml manifest that gets created when you sequence an application in App-V 4.5.

However, in this particular case I pointed at my valid manifest file and got this error instead of the nice display of the virtual apps in my sequence.

"Load Virtual Application Package Failed. Error: Argument 'picture' must be a picture that can be used as a Icon".

AppvError

Unfortunately it’s not a very helpful message as there is no ‘picture’ element in my manifest or in my OSD files (the error is also grammatically incorrect - but then half this post probably is as well).  It took a little bit of digging to figure out what was going on.

My application was made up of three separate “applications” – the main executable, a license executable and a help file.  The only clue I had to what might be going wrong was the reference to an icon.  When you virtualise an application with App-V, the icons are stripped out and stored in a subdirectory <application name> icons.  Taking a look in there I saw four .ico files - (one for each executable and a fourth for the document association).  However, the icon file for the help application was 251KB, and all the others were 2KB.  Looking at the properties of the help icon, it’s actually the winhelp executable and for some reason the sequencer has grabbed the whole application rather than just the icon.

In this case, I didn’t actually need the Help application (I should have probably removed it during sequencing) so to get around this issue I edited my manifest xml and removed the help application section.  Once I did this, the manifest imported perfectly and I was able to successfully deploy using Configuration Manager.