Jason Hardester posted today about some of the decisions made at Microsoft around WER, and concluded with a call to action to collect requirements for WER from a developer point of view. I'm glad to oblige

My main issue with the current implementation of WER, particularly on Vista, is that it makes it hard for a developer to find out whether a crash report actually made it to Microsoft's Watson servers, and whether that report actually contains the kind of data he expects. At least this was my main problem while implementing WER for one of our applications. It took me weeks to understand all the little requirements until I finally saw my first crash reports at Winqual.
Several factors contributed to this. First, the documentation on the new WER APIs is far from sufficient. I thought that the WER API was meant to be used to report crashes to Microsoft - but it really isn't. If you want to use it for this purpose, you have to know and learn undocumented subtleties about those APIs, which I would never have been able without some hints from Jason and Saar here in this forum. There is no sample code for this out there which uses the new WER APIs. (There is now, of course - on my blog

The second issue is the new minidump protocol on Vista. On Vista, minidumps are only produced if the Watson servers request them. That request, however, will never occur if your application isn't signed properly, or is not registered, or not mapped. Even if you go through those steps, chances are that the server will request the minidumps only after you go to the Winqual portal, check the latest crash reports, and then explicitly "request" minidumps to be collected the next time the same kind of crash occurs. Once you've mastered that step, you'll still have to wait at least three days until you see your crashdump on Winqual. If you're lucky, that is. In my case, I once had to wait over a week.
Issue #2 wouldn't have hurt that badly if CER was still around. With CER, you could very easily configure a developer or test machine so that a) the crashdumps were always produced and b) they were written to some shared directory. Very simple scheme, simple to understand, and reasonably convenient to use.
With Vista, CER is no longer an option. Instead, if you want to collect crash information locally, you have to install and configure Microsoft Operations Manager and its AEM module. This week, I tried this on my Windows XP x64 development system. The download was 280 MB, and when I started the installer, it checked my local configuration and then came up with 10 issues or so which prevented the setup from proceeding - it wanted things like SQL Server, ASP.NET and other server-ish products which I would never want to install on my development system, particularly not for the simple task of writing a few crashdumps to a directory. But even if I was willing to go through the lengthy setup procedure requiring me to install the other 10 packages first before attempting MOM installation again - it still wouldn't let me because it refuses to install on anything but Windows Server 2003 SP2. Which is an OS version which we use only in our IT group here, and not in the labs.
In practice, the hurdle of using MOM/AEM is insurmountable for a developer, IMHO. There are other options to force the system to produce crashdumps and error information, as I've outlined in my blog. But many of them are not exactly obvious, and some require configuration or some setup which is acceptable on a developer system, but not necessarily on a test or customer system.
Now that I've figured out most of the issues, I can describe them reasonably calmly. (Although I'm still not 100% sure that my implementation now works correctly, mostly because whenever we test a new version, we have to wait and wait and wait until we see the results on Winqual. If we ever see them there, that is.) But those who have followed the previous discussions will have noticed that at least for about a week or so, the whole WER situation, particularly on Vista systems, made me go almost berserk. (Thanks to Jason for explaining and for calming me down; without this, I probably would have burst in flames...)
So what would I like to see
- I want CER back. Yes, it's somewhat kludgy, but it does the job of collecting crashdumps for testing purposes.
- Alternatively, please give us a client which uses the new http/https-based protocol used for AEM and which can be deployed easily on an average developer or tester machine.
- Fix the WER API documentation, and document which options need to be used to send crash reports to Microsoft.
- Provide sample code which uses the WER API (and not just the application recovery APIs).
Thanks a lot for listening!
Claus
http://www.clausbrod.de/Blog