One of the fun things about building something all by yourself is the ‘proud father’ side of it. You get to choose the name of the product, the way it looks, how it behaves and so on. Actually, that is a lot more than real fathers get to do, but lets not digress. As any real father can tell you, your baby will not only make you proud, it will also throw up over you every once in a while.
And so it is with Crescendo. I asked Laura, a friend of mine, to help me make a logo for Crescendo. I wanted it to be a picture of musical notation of a little piece of music that contains a crescendo (increase in volume or intensity). Together we picked out The Entertainer, by Scott Joplin. It’s a piece you’re bound to know. So when Crescendo starts up you see a splash page with a short fragment of a crescendo.
That was all well and good. Next I was grappling with creating bootstrapper packages for the Microsoft Synchronization Framework that gets installed with Crescendo. Crescendo depends on it, so it needs to be installed before Crescendo can run. Unfortunately, I could not find proper bootstrapper packages (which tell the OneClick setup executable how to install the prerequisite) so I had to create them by hand. Somewhere along this path I decided to use the same picture for the Crescendo icon (the little picture you see in the taskbar when an application is running) that I had used for the splashscreen. I added this, tested it and it worked.
Now, I use Windows 7 on my developer machine and later tested Crescendo on another machine running Windows XP. It crashed immediately with a message about a Win32 exception. It was very difficult to diagnose, because logging has so far not been a priority (a decision I now regret). In addition, I was confused about all the work I had done on the deployment of the Synchronization Framework, figuring there had to be a dependency I had overlooked. Anyway, it turned out to be the icon that I had added: the color-depth of the image was not supported on Windows XP. The ironic thing is that I actually added the icon in two places: in the resources of the application and in the main WPF window of the application. It was the latter that was causing trouble. Simply removing it caused it to fall back on the resources icon, and everything worked well.