Rob Mensching's Blog - page 34
Yesterday was Jenny and my first wedding anniversary. It was Sunday so no work was needing done. We had few plans for the day. Only thing on the schedule was to exchange "paper" gifts (which we did in the morning) and go to dinner back at the Edgewater (which we did in the early evening). We finished the evening dancing in our living room to our first dance and other selected favorites.
Derek made a guest appearance tonight at the weekly WiX toolset coding night. It was fun having him around again. We all caught up on the things that have happened in the last year or so. At the end of the night (about 1 AM), I dropped him off at his hotel downtown and drove back home.
As I noted a few months ago, the Windows Installer is a declarative installation engine not a procedural installation engine. That means if you are going to extend the installation engine (which is what custom actions essentially do) then you should follow the same principles the engine follows. Namely, your custom action should read data out of a table and act based on those declarative instructions.
If you follow the world of the Windows Installer at all, I'm sure you have noticed that the Windows Installer 4.5 Beta was made available last week.
Jenny is out of town tonight so I've been catching up on my "concept reading". After grilling dinner (teriyaki chicken) and eating while skimming through the Ruby on Rails site I decided it was time to put something "fun" on the Media Center before continuing my MVC vs. MVP conceptual dive.
The title of this blog entry is a concept that I kept trying to sneak into one of my earlier posts on this "Zen and the Art of Custom Actions" thread. I finally gave up trying to make it a bullet point and now here we are. What convinced me that there was a full topic to be covered was when I realized I meant two things when I said "Custom actions are (generally/typically) an admission of failure."
Continuing the Zen and the Art of Custom Actions thread, I thought I'd post a mostly formed thought. When I'm presented with the need to write a custom action I often mentally classify the work into one of three or so different buckets.
David Aiken has an interesting blog post about adopting TDD (Test Driven Development, for those of you have been living in a cave) for his next project. In said blog post, David suggests that before even writing tests that one should write the setup logic.