This week, Jason Gincherau (MSFT) released a new SDK called Deployment Tools Foundation (DTF) that I can only term the New Holy Grail of Managed Custom Actions. It implements just about every single concept that I’ve tossed around over the last 5 years but that I couldn’t bring to fruitition because I simply didn’t have the prerequisite C++/.NET skills. DTF is truly amazing and in my next blog article I’m going to do a walk through of what it is and how to use it.
But first, I’ve got to get something off my chest: I am extremely frustrated with members of the setup community at Microsoft on how this SDK came to finally roam the wild. For years, there has been a debate on the roll of custom actions in setup. Certain people had formed very strong ideological positions that basically make the case that if you wrote a custom action, you had generally failed in application and declarative setup design. In the few cases your decision was somehow justified, if you wrote the CA in any other technology then a C++ style Type 1 CA, you had committed an evil act.
In my professional opinion, that believe has cost us, the worldwide setup community, at least 1 year of delay in getting managed custom action goodness… and quite possibly many more years.
If you read Rob Mensching’s post here, Jason Gincherau’s post here and the DTF.CHM in WiX, you can put together a 5 year time line of the motivations and accomplishments of DTF. You can put together that DTF was properly handling the technical CLR issues about 1 year ago, just one month after Rob posted his `no support and here’s why` blog. As an aside, in the blog I left a very simple comment:
For the rest of Microsoft, managed code is clearly marketed as the future of software development. Windows Installer should adopt this strategic initiative and simply overcome the technical hurdles. This way we can have really good custom action patterns to play with until the day comes that MSI natively supports the patterns that we are writing custom actions for. Then we can gladly dump our CA’s and refactor using the built-in standard actions.
While it took the obviously brilliant Jason a mere month to overcome the technical hurdles, it took the setup community at Microsoft an additional year ( according to their own writings ) to
overcome their zealous belief that consumers of the MSI SDK simply couldn’t be trusted to write custom actions. As recently as 2 weeks ago, Rob wrote in the WiX Users list:
Every suggested implementation that I’ve seen on the internet that describes how to incorporate managed code custom actions into an MSI package does not address that problematic interaction.
Notice that he cleverly wordsmithed the words `on the internet`. Even though he knew DTF had been in development since 2003 and that the CLR issues were resolved, he didn’t bother to enlighten the community of this fact. In fact, one of his many fan boys ( who happens to be an MSI MVP ) parroted the party line:
There is a reason that the experts are all unanimously saying that managed
custom actions are a bad idea. You are free to ignore all that accumulated
expertise but it doesn’t seem like a wise thing to do.
And here we are in May of 2008. After years of a collective effort to silence the opinion of many, many setup experts who requested managed code custom actions, and years of me beating the drum to not ignore the 800lb gorrila that is .NET, suddenly Rob has switched his opinion and released DTF as a glorious addition to WiX goodness. Clap, Clap, Clap.
I’m sorry, but I have a problem with this. Now Rob can just simply attempt to dismiss my opinion by personally attacking me as a troll… however, I feel that I’ve made some important and accurate points in this article and that Rob has some serious soul searching and explaining to do. Then again, I probably give entirely too much power to Rob in even caring about his opinion anymore.
Finally, I am extremely happy that Jason has developed and released DTF. I am also very relieved that the Managed Custom action debate is finally over. Considering Jason’s role in integrating WiX into Visual Studio, I have a great new hope that progress can overcome ideology.