tag:blogger.com,1999:blog-95379452008-07-04T07:18:25.222-05:00DeploymentEngineering.com - The BlogChristopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comBlogger211125tag:blogger.com,1999:blog-9537945.post-1118607297230276132008-07-02T17:03:00.002-05:002008-07-02T17:08:45.310-05:00DeploymentEngineering.com BuzzI'm not sure who I have to thank, but it seems that DeploymentEngineering.com was <a href="http://www.computerweekly.com/Articles/2008/06/30/230439/programming-and-development-blogs-computerweekly.com-it-blog-awards.htm">nominated</a> in ComputerWeekly.com's IT Blog Awards 08 in the Programming, development and technical blogs catagory.<br /><br />Now we didn't make the `short list` but I think it's pretty cool that a blog about deployment topics would even make the list at all considering what little respect this space gets in the first place.<br /><br />Pretty cool, thanks readers!Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-26257228420106620582008-07-02T16:28:00.002-05:002008-07-02T16:42:37.718-05:00No Evidence Of DiseaseI wanted to share some good news with everyone today. Over the past few days Cheryl has had various tests performed including a colonoscopy, CT scan and blood work. After countless medical treatments that would seem cruel and unusual punishment by almost any standard, I'm very happy to report that at this point she is currently considered `No Evidence of Disease`!<br /><br />While we aren't out of the woods yet ( I don't want to dwell on that aspect), we certainly have enough reason to go out and celebrate tonight. <br /><br />I sincerely thank everyone who has helped us with support and prayers. We are very grateful for all of the help and friendship that has been given.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-7362080149800911382008-06-30T23:42:00.004-05:002008-06-30T23:57:23.414-05:00Hyper-V running Fedora<a href="http://bp0.blogger.com/_28H3HFywulA/SGm14DGpP8I/AAAAAAAAAHc/bvNCxaUidDY/s1600-h/hyper-v-fedora.jpg"><img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_28H3HFywulA/SGm14DGpP8I/AAAAAAAAAHc/bvNCxaUidDY/s400/hyper-v-fedora.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5217901617795907522" /></a><br /><br />I don't talk about this much, but I wasn't always a Windows GUI guy. In fact I spent many years programming Commodore 64's and Apple II's. My first shell was CPM on a Commodore 128 and of course I spent many years on Amigas back in my FidoNet BBS days. I used to be raving nut case when expressing my hatred for Bill Gates and Microsoft. Of course that was the proper thing for any self respecting Amiga fan-boy back in those days. Let's face it, MS-DOS/Windows 3.1 really did suck compared AmigaDOS/WorkBench. Back then I had a GVP GeForce040-33 board and I ran MSDOS/Windows via PC-Task and had an Emplant board for MacOS so I was no stranger to emulation/virtualization.<br /><br />Then one day I realized it was time to get out of the Marine Corps and go pro. I built my own 486DX-120 and loaded Slackware on it. Over the following few years I actually spent quite a bit of time on various Linux and Unix OS's ( Slackware, Mandrake, Redhat, DGUX, HPUX, Solaris ) doing back end ANSI C programming and shell scripting for various Department of Defense Client/Server systems. It's amazing how many vi commands I still remember. But for the last few years I've really gravitated away from that world and into a GUI world of NT and .NET. I still remember all the old stuff, but for the life of me I can't imaging why anyone would actually prefer to write code with such primitive tools. <br /><br />Lately I've been playing with Hyper-V a lot and I thought it was really cool that not only could it run Windows but it can just as easily run Linux. <br /><br />So I fired up a torrent to pull down the latest Fedora 9 and decided to install it. I haven't really done much with it yet but I've got to admit, it has a wonderful blue motif logon screen. <wink/>Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-40891636644054665182008-06-27T23:21:00.006-05:002008-06-28T12:39:14.500-05:00Phenomenal cosmic powers! Itty bitty living space.<a href="http://www.sharebook.co.kr/disney/a/알라딘.files/image013.jpg"><img style="cursor:pointer; cursor:hand;width: 400px;" src="http://www.sharebook.co.kr/disney/a/알라딘.files/image013.jpg" border="0" alt="" /></a><br />For those who remember the movie Aladdin, "Phenomenal cosmic powers! Itty bitty living space." is a perfect quote for my new server that I have been working on for the past week or so. <br /><br />It's unbelievable what a 2.4 ghz quad core, 8GB of memory and terabytes of RAID storage can accomplish. Thanks to Hyper-V I've set up an entire network of virtual machines that provide every function needed for the proper development and testing of applications and installers. It really rocks!<br /><br />As an aside, I saw yet another <a href="http://robmensching.com/blog/archive/2008/06/27/Qik-introduction.aspx">red motif troll post</a> so here's a plug for blue just for fun. <wink/><br /><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/cd07uvkTeKo&hl=en"></param><embed src="http://www.youtube.com/v/cd07uvkTeKo&hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed></object>Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-7130515054306227532008-06-26T10:02:00.002-05:002008-06-26T10:18:17.599-05:00Three Reasons it's a Great Day1) After nearly 70 years of silence, the Supreme Court of the United States of America has finally ruled that gun ownership is an INDIVIDUAL right and struck down the District of Columbia's ban on hand guns. Way back when I was in the United States Marine Corps, I lived in a row house in South East DC ... 6<span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">Th</span> ward. I had bars and locks on all of my doors and windows and would routinely hear gun fire at night while working on my <span class="blsp-spelling-error" id="SPELLING_ERROR_1">FidoNet</span> BBS. I couldn't believe that as a trained marksman in the US Armed Services that I couldn't have a weapon in my very own home while all of the violent criminals in the nearby areas were packed to their teeth. Texan leaders played a huge roll in this case and to them I say THANK YOU. Everyday ( and today in particular ) is a great day to be a Texan.<br /><br />2) Hyper-V is <span class="blsp-spelling-error" id="SPELLING_ERROR_2">RTM</span>!!!!! ( Of course this would happen as soon as I build my server. I hope it's an easy upgrade!) <span class="blsp-spelling-error" id="SPELLING_ERROR_3">VMware</span> should be afraid, very afraid.<br /><br />3) After being out of service for two days, our <span class="blsp-spelling-error" id="SPELLING_ERROR_4">HVAC</span> is finally working. Whew, damn it's hot in Texas!Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-32377185503987842522008-06-25T17:23:00.002-05:002008-06-25T17:42:49.600-05:00Ask the readers...I need some suggestions from everyone out there.<br /><br />We are considering moving away from our current install product to a new one. I need some suggestions on what should be put on our short list for evaluation.<br /><br />Here is a little information about our environment and requirements:<br /><ul><li>Integration with PVCS would be a definite plus</li><li>We support multiple languages (FIGS, Turkish, Japanese, Chinese, Portuguese, et al)</li><li>Support over 40 products with multiple branches (~150 projects in all, conversion will be a factor)</li><li>Support for Windows 2000 SP3 (Pro and Server), XP, Vista, Server 2003, Server 2008, IIS5 and above, SQL 2000 and above, Oracle 9i and above</li><li>We have a homegrown automated build application so OLE automation /COM support is an absolute must</li><li>x86 &amp; x64 support</li></ul>I think those are major factors for consideration. I would be interested to not only hear from users but also Product Managers if they wouldn't mind hearing from a squeaky wheel.Aaron Shurtshttp://www.blogger.com/profile/16538587727045104430noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-83715710725736050642008-06-24T16:56:00.005-05:002008-06-25T09:32:18.606-05:00Pergola from Lawn Master Outdoor Living<a href="http://bp3.blogger.com/_28H3HFywulA/SGFuP4FpidI/AAAAAAAAAHI/rLdYVMb8LP8/s1600-h/pergola.JPG"><img id="BLOGGER_PHOTO_ID_5215571062504917458" style="CURSOR: hand" alt="" src="http://bp3.blogger.com/_28H3HFywulA/SGFuP4FpidI/AAAAAAAAAHI/rLdYVMb8LP8/s400/pergola.JPG" border="0" /></a><br /><br />We've been in our new house for over a year now and I'm finally making progress on our first upgrade: Patio Expansion! While I liked the design of the house a lot, the patio was only 15 x 6. We've hired one of the concrete contractors that does work for Newmark and Lennar and he expanded our patio out to a full 15x15 with footings and rebar. Now we could have stopped there, but we really wanted a nice pergola to go over it and that's exactly what <a href="http://www.lawnmasteronline.com/PERGOLAS.htm">Lawn Master Outdoor Living</a> delivered.<br /><br />We had been searching all over for a reputable contractor when we saw a nice pergola at Home Depot and found out about a company that takes orders from much of Texas ( Dallas, Houston, Austin, San Antonio ), manufactures all of their various products at a central facility and then delivers/installs on site with dedicated installers.<br /><br />I first contacted the company via email and was promptly called by a knowledgeable employee. During the conversation, I was asked to email some pictures of the job site and this prompted an all but finalized design right over the phone. I love it when things are that easy!<br /><br />Lawn Master says that they typically deliver within 10 days but my project took longer due to my desire to have the project be fully legal. Lawn Master had no problem pulling permits with Cedar Park and making that happen. Time expectations were set up-front so that wasn't really a problem.<br /><br />There was one hiccup before deployment: My city's building inspection department wasn't happy with the choice of 2x8 double headers for a 13' span. The inspector wanted a third post. Yuck!<br /><br />I did some googling and found some discussions saying that city's are now treating attached pergolas as decks in case fireman are climbing on them during a fire. This meant the design had to assume 50 pounds per square foot. Wow! Well, Lawn Master worked it out to use 2x10 double headers instead of a third post with no extra charge.<br /><br />Finally, install day! A crew of three workers arrived on time with a trailer full of lumber and knocked the whole project out in 2.5 hours. It was obvious just by watching that they knew exactly what they were doing. The building inspector came by the next day and signed off on the work. All in all, a very nice experience.<br /><br />So if you live in North, Central or East Texas and you are looking for a Pergola or Pavilion ( I saw some real nice ones if my budget would have only allowed ), I highly recommend that you check out Lawn Master Outdoor Living.<br /><br />Now I need to find a really good mason for the next phase of the project. The concrete was mostly to provide a good foundation for the patio. What we really want is stone.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-75929477123401984182008-06-21T08:21:00.002-05:002008-06-21T08:27:26.118-05:00InstallShield 2009 SP1 ReleasedWindows Installer Expert Stefan <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Krueger</span> <a href="http://msmvps.com/blogs/installsite/archive/2008/06/21/service-pack-1-for-installshield-2009-available.aspx">reports</a> that <span class="blsp-spelling-error" id="SPELLING_ERROR_1">InstallShield</span> 2009 SP1 is now <a href="http://kb.acresso.com/selfservice/documentLink.do?externalID=Q200150">available</a>. In case you are wondering why an <span class="blsp-spelling-error" id="SPELLING_ERROR_2">RTM</span> product would need a Service Pack in 15 short days, well it basically has to do with decisions that were made to ship 2009 with <span class="blsp-spelling-error" id="SPELLING_ERROR_3">MSI</span> 4.5 Beta 2 support in time for <span class="blsp-spelling-error" id="SPELLING_ERROR_4">TechEd</span> 2008. So in my mind, this is the `REAL` <span class="blsp-spelling-error" id="SPELLING_ERROR_5">InstallShield</span> 2009 and hopefully <span class="blsp-spelling-error" id="SPELLING_ERROR_6">Acresso</span> will continue to release service packs to address problems found.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-91221026166771493872008-06-20T01:42:00.003-05:002008-06-20T11:58:42.215-05:00Like Riding a BikeLately I've been realizing that I needed to upgrade by build/install/test infrastructure at the house. For the past few years, I've been buying laptops and a quick review of <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Newegg</span> revealed that I hadn't built a machine since 2003. Wow, had it really been that long?<br /><br />I've always been a hardware geek. My first hard drive was a <span class="blsp-spelling-error" id="SPELLING_ERROR_1">Xetec</span> Lt <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Kernal</span> 40MB for a Commodore 128D. Installation required that I make certain modifications to the motherboard. Later I'd have various <span class="blsp-spelling-error" id="SPELLING_ERROR_3">Amigas</span> where I'd replace the <span class="blsp-spelling-error" id="SPELLING_ERROR_4">OCS</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_5">chipset</span> with an <span class="blsp-spelling-error" id="SPELLING_ERROR_6">ECS</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_7">chipset</span>, install a Fat <span class="blsp-spelling-error" id="SPELLING_ERROR_8">Agnus</span>, upgrade <span class="blsp-spelling-error" id="SPELLING_ERROR_9">Kickstart</span> ROMS and of course install ZIP DRAM modules. Wow, that's going back aways... 15 years?<br /><br />I've built many machines since then. When I lived in <span class="blsp-spelling-error" id="SPELLING_ERROR_10">NoVA</span> I'd <span class="blsp-spelling-error" id="SPELLING_ERROR_11">reguarly</span> take clients shopping and build up a rig for them. So much time would be spent studying the current sweet spot and features/limitations of all the products available. My skills were so well trusted that I was actually allowed to build white box build servers for a large government contract that normally played it very safe. One day we had some fried caps ( it really smelled ) and within 2 hours I'd gone to the local vendor, picked up another motherboard for a very cheap cost, and brought the build box back up. Anyways, it's really funny to see what Virtual Server 2005 emulates since I knew the 440BX, Trio64 configuration very well.<br /><br />So what did I buy? I went with an <span class="blsp-spelling-error" id="SPELLING_ERROR_12">Antec</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_13">NSK</span>4480 case with a 380Watt 80+ PS. An Intel <span class="blsp-spelling-error" id="SPELLING_ERROR_14">DG</span>35EC <span class="blsp-spelling-error" id="SPELLING_ERROR_15">uATX</span> motherboard with integrated video, audio, <span class="blsp-spelling-error" id="SPELLING_ERROR_16">usb</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_17">firewire</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_18">SATA</span>-II, <span class="blsp-spelling-error" id="SPELLING_ERROR_19">PATA</span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_20">GigE</span>, an Intel Q6600 2.4G Quad Core and 8GB of <span class="blsp-spelling-error" id="SPELLING_ERROR_21">DDR</span>2-800 memory. <span class="blsp-spelling-error" id="SPELLING_ERROR_22">Frys</span> had some good deals for a change so all of this inc tax and same day pickup was $550. Not too bad.<br /><br />I'm going to reuse some hard drives for now but soon I'll be picking up a couple <span class="blsp-spelling-error" id="SPELLING_ERROR_23">WD</span> 300GB Raptors. Those really look like nice drives.<br /><br />I'm currently loading it up with Server 2008 and Hyper-V. I also want to setup <span class="blsp-spelling-error" id="SPELLING_ERROR_24">SqlServer</span> 2005, <span class="blsp-spelling-error" id="SPELLING_ERROR_25">TFS</span> 2008 <span class="blsp-spelling-error" id="SPELLING_ERROR_26">Workgroup</span> Edition, <span class="blsp-spelling-error" id="SPELLING_ERROR_27">TeamBuild</span>, a development <span class="blsp-spelling-error" id="SPELLING_ERROR_28">VM</span> and a bunch of test <span class="blsp-spelling-error" id="SPELLING_ERROR_29">VM's</span> for integration. Man, it's going to be so much fun. :-)Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-91497127400554922802008-06-19T18:48:00.004-05:002008-06-20T00:17:47.987-05:00InstallShield Stand Alone Build AnnouncementTwo weeks ago, I <a href="http://blog.deploymentengineering.com/2008/06/installshield-stand-alone-build.html">blogged</a> about <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Acresso's</span> decision to finalize the removal of the Stand Alone Build Engine from <span class="blsp-spelling-error" id="SPELLING_ERROR_1">InstallShield</span> 2009 Professional. This decision adversely effected certain long-term, loyal customers who had purchased maintenance agreements with the expectation that this core feature would remain. While I disagreed with the notion of <span class="blsp-spelling-error" id="SPELLING_ERROR_2">InstallShield</span> Professional not coming with a build box component for new customers, I found it utterly revolting that existing customers would loose this critical piece of functionality for which they had prepaid. Windows Installer Expert Stefan <span class="blsp-spelling-error" id="SPELLING_ERROR_3">Krueger</span> also shared his thoughts but a link to his blog ( InstallShield 2009 Caveats) is currently not available. Additionally many of my readers stood in solidarity and expressed their opinions to <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Acresso</span>.<br /><br />Over the past two weeks I've had back channel conversations with employees of <span class="blsp-spelling-error" id="SPELLING_ERROR_6">Acresso</span> and other members of the community. Today I have some progress to report: Jeff <span class="blsp-spelling-error" id="SPELLING_ERROR_7">Greenwald</span>, Director of Enterprise Product Management, has formerly announced that these customers will be taken care for this release. However, future versions of <span class="blsp-spelling-error" id="SPELLING_ERROR_8">InstallShield</span> will have the Stand Alone Build moved to Premiere so this fact should be considered when deciding your future purchasing options. I've also expressed some ideas on additional ways to sell the Stand Alone Build and <span class="blsp-spelling-error" id="SPELLING_ERROR_9">Acresso</span> will attempt to work out a business model that makes sense for all.<br /><br /><br /><br />Below is the post from Jeff:<br /><br /><blockquote><br /><p><em>We recognize that their may have been some confusion regarding the availability of the Standalone build with the release of <span class="blsp-spelling-error" id="SPELLING_ERROR_10">InstallShield</span> 2009. To assist our longtime loyal customers in this transition, we are granting access to the Standalone build functionality under the following criteria. Specifically, <span class="blsp-spelling-error" id="SPELLING_ERROR_11">InstallShield</span> 2008 Professional customers on active maintenance who also licensed <span class="blsp-spelling-error" id="SPELLING_ERROR_12">InstallShield</span> Professional 10.x or <span class="blsp-spelling-error" id="SPELLING_ERROR_13">InstallShield</span> Professional 11.x will be granted access to the Standalone build functionality.</em></p><br /><p><em>For future releases of <span class="blsp-spelling-error" id="SPELLING_ERROR_14">InstallShield</span>, the Standalone Build functionality will continue to be packaged exclusively with the Premier Edition as announced with the release of <span class="blsp-spelling-error" id="SPELLING_ERROR_15">InstallShield</span> 12 in 2006. <span class="blsp-spelling-error" id="SPELLING_ERROR_16">InstallShield</span> Professional customers looking to leverage the Standalone Build module will need to upgrade to the <span class="blsp-spelling-error" id="SPELLING_ERROR_17">InstallShield</span> Premier edition. Each full license of <span class="blsp-spelling-error" id="SPELLING_ERROR_18">InstallShield</span> Premier Edition includes 10 Standalone Build modules.Efforts are currently underway to update the Standalone build installer to support the model described above. Additional information will be posted to this community once these efforts are completed.</em><br /></p><p><em>Thanks,</em><br /></p><p><em>Jeff <span class="blsp-spelling-error" id="SPELLING_ERROR_19">Greenwald</span><br /></em><em>Director, Product Management</em><br /></p></blockquote><br /><br /><br /><br /><em></em>Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-3115750429229898412008-06-13T18:37:00.004-05:002008-06-13T18:43:52.232-05:001500 Hard DrivesMaybe it's just been a long week, but this one really cracked me up today. I know it's made it's way around the <span class="blsp-spelling-error" id="SPELLING_ERROR_0">internet</span>, so please forgive me advance...<br /><p></p><p><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/cdD9ypqoBk4&amp;hl=en"><embed src="http://www.youtube.com/v/cdD9ypqoBk4&hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed></object></p><p>Btw, nice house. Perhaps I should be modding consoles instead of writing installs.</p>Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-26492450514437170902008-06-13T16:57:00.006-05:002008-06-13T17:48:11.570-05:00Maybe I Should Roll My OwnI've been wondering, maybe I should just roll my own <span class="blsp-spelling-error" id="SPELLING_ERROR_0">WiX</span> designer.<br /><br />Yes, I'm serious.<br /><br /><br />Sure, I'll wait for you to pick yourself up from the floor.<br /><br /><br />OK, seriously. Can it really be that hard? Let me share with you a screenshot of a program that yours truly (who happens to be a very, very junior .NET developer ) was able to throw together in just a few hours thanks to a few pointers from an experienced .NET developer that I work for:<br /><br /><a href="http://bp3.blogger.com/_28H3HFywulA/SFL2-q51LUI/AAAAAAAAAG4/yqIPdXiiiCU/s1600-h/fraggin-wix.JPG"><img id="BLOGGER_PHOTO_ID_5211499275350256962" style="CURSOR: hand" alt="" src="http://bp3.blogger.com/_28H3HFywulA/SFL2-q51LUI/AAAAAAAAAG4/yqIPdXiiiCU/s400/fraggin-wix.JPG" border="0" /></a><br /><br /><br /><br />So let's assume I'm not trying to write a full blown authoring tool. My requirements and needs are fairly straight forward. I use <span class="blsp-spelling-error" id="SPELLING_ERROR_1">InstallShield</span> in a product line development environment to consume merge modules to build multiple product configurations with various setup.<span class="blsp-spelling-error" id="SPELLING_ERROR_2">exe</span> requirements. The merge modules come from upstream builds and could easily be broken out further into <span class="blsp-spelling-error" id="SPELLING_ERROR_3">WiX</span> fragments. Therefore, much of the integration work could still be done in <span class="blsp-spelling-error" id="SPELLING_ERROR_4">InstallShield</span> while splitting out much of the remaining component authoring to <span class="blsp-spelling-error" id="SPELLING_ERROR_5">WiX</span>.<br /><br /><br />I currently have the infrastructure in place to bring all of this together as <span class="blsp-spelling-error" id="SPELLING_ERROR_6">TFS</span>/<span class="blsp-spelling-error" id="SPELLING_ERROR_7">TeamBuild</span> can just call Votive/<span class="blsp-spelling-error" id="SPELLING_ERROR_8">WiX</span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_9">InstallShield</span> projects to build the fragments, merge modules and installer packages.<br /><br /><br />The problem I face is that Votive only comes with a simple text editor with basic <span class="blsp-spelling-error" id="SPELLING_ERROR_10">IntelliSense</span> support. I find it to be very clumsy to use and now I understand why. I read a few articles yesterday on External Domain Specific Languages in XML and one comment that really stuck with me was that XML can be an easy language to read by domain experts but much more difficult to author.<br /><br /><br />What if I could just have a simple designer without a lot of heavy abstraction to help me bring against the code?<br /><br /><br />Well, I've just realized that it really wouldn't be that hard to do. I'm sure the .NET developers reading this are laughing but remember, I write installers for a living, not applications. My skill sets and experiences are generally optimized for a different purpose. For those who aren't laughing, let me explain what I learned today.<br /><br /><br /><span class="blsp-spelling-error" id="SPELLING_ERROR_11">WiX</span> distributes an <span class="blsp-spelling-error" id="SPELLING_ERROR_12">XSD</span> schema ( and others for various extensions ) called <span class="blsp-spelling-error" id="SPELLING_ERROR_13">WiX</span>.<span class="blsp-spelling-error" id="SPELLING_ERROR_14">xsd</span>. You can run the <span style="BACKGROUND-COLOR: #ffff00">XSD</span> files through a utility called from Microsoft called <a href="http://msdn.microsoft.com/en-us/library/x6c1kb0s(VS.71).aspx"><span class="blsp-spelling-error" id="SPELLING_ERROR_16">XSD</span>.<span class="blsp-spelling-error" id="SPELLING_ERROR_17">EXE</span></a> and get a class file that contain classes describing your schema. There are ways to bind these classes to a <span class="blsp-spelling-corrected" id="SPELLING_ERROR_18">XML</span> document that allow you to then import and export valid <span class="blsp-spelling-corrected" id="SPELLING_ERROR_19">XML</span>. You can also associate the classes to various <span class="blsp-spelling-error" id="SPELLING_ERROR_20">WinForms</span> controls to give you a visual representation of your document.<br /><br /><br />If a rank .NET amateur can do something this simple in a day, I can only imagine what a group of experts could do if only given the right user story and resources.<br /><br /><p>So now I have a decision to make, should I try to organize and take this any further? I read all over that there is demand for this type of tool, but I keep wishing that Microsoft, <span class="blsp-spelling-error" id="SPELLING_ERROR_21">InstallAware</span> or <span class="blsp-spelling-error" id="SPELLING_ERROR_22">Acresso</span> would just fill the void with a top quality and affordable tool. </p><p><span class="blsp-spelling-error" id="SPELLING_ERROR_23">WiXAware</span> is a good start but it's based on <span class="blsp-spelling-error" id="SPELLING_ERROR_24">WiX</span> v2, is buggy as hell and is incorrect in certain areas. For example, <span class="blsp-spelling-error" id="SPELLING_ERROR_25">WiXAware</span> makes you define a feature before you can define a component when authoring a fragment. This is clearly incorrect and a simple <span class="blsp-spelling-corrected" id="SPELLING_ERROR_26">exercise</span> in reflection reveals that each element class has an Items property that has custom <span class="blsp-spelling-error" id="SPELLING_ERROR_27">XmlElementAttributes</span> describing the allowable child elements.</p><p>Perhaps Microsoft will wow the world with Rosario.</p><p>Either way the future is becoming very clear to me, if someone would just take the time to make it happen.<br /></p>Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-44084525971434042382008-06-10T13:30:00.002-05:002008-06-10T13:37:32.611-05:00Debugging Legacy InstallScript Engine ProblemsI just read an article from <span class="blsp-spelling-error" id="SPELLING_ERROR_0">ParanoidMike</span> (<a href="http://paranoidmike.blogspot.com/2008/06/installshield-great-for-developers.html"><span class="blsp-spelling-error" id="SPELLING_ERROR_1">Installshield</span> – great for developers, sucks ass for victims (aka everyone else)</a> where he does an excellent job of debugging an <span class="blsp-spelling-error" id="SPELLING_ERROR_2">uninstall</span> issue. He also rips <span class="blsp-spelling-error" id="SPELLING_ERROR_3">InstallShield</span> during the process.<br /><br />Some of his conclusions are wrong, but that's not the point. It doesn't matter that it isn't <span class="blsp-spelling-error" id="SPELLING_ERROR_4">InstallShield's</span> job to support him ( Intel, where he happens to work, wrote the package ) . It only matters that when you are a company like <span class="blsp-spelling-error" id="SPELLING_ERROR_5">InstallShield</span>, it's always your fault. So while <span class="blsp-spelling-error" id="SPELLING_ERROR_6">InstallShield</span> 12 was a step in the right direction, it'll take years to be free of the legacy.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-77065680453623951392008-06-09T07:24:00.004-05:002008-06-09T14:18:07.061-05:00Upgrade to Windows Installer 4.5 with the Free InstallAware 7 UpdateI couldn't help notice that <span class="blsp-spelling-error" id="SPELLING_ERROR_0">InstallAware</span> is updating their product for full <span class="blsp-spelling-error" id="SPELLING_ERROR_1">MSI</span> 4.5 <span class="blsp-spelling-error" id="SPELLING_ERROR_2">RTM</span> ( Not Beta2 like another well known Installation Tools Vendor ) and they aren't even charging for the upgrade:<br /><br />Below is the text of the announcement:<br /><br /><span class="blsp-spelling-error" id="SPELLING_ERROR_3">InstallAware</span> is the first and only software installer to fully support Windows Installer 4.5. We're making this support available to you in less than 48 hours after Microsoft's release of the final version of Windows Installer 4.5. Download the free Windows Installer 4.5 update for <span class="blsp-spelling-error" id="SPELLING_ERROR_4">InstallAware</span> at www.installaware.com/msi45plugin.asp. Remember, this is a free update for all <span class="blsp-spelling-error" id="SPELLING_ERROR_5">InstallAware</span> users - trial or licensed.<br /><br />Take a look at the new capabilities of <span class="blsp-spelling-error" id="SPELLING_ERROR_6">InstallAware</span> 7 with this free Windows Installer 4.5 Update:<br /><br />"<span class="blsp-spelling-error" id="SPELLING_ERROR_7">MSI</span> Transaction" <span class="blsp-spelling-error" id="SPELLING_ERROR_8">MSIcode</span> Command: Add Windows Installer 4.5 functionality to your existing setup projects. Chain multiple setups together in a single atomic transaction. A failed setup, or an end-user abort, will roll-back the entire system to the state before installation began. This additional layer of security and reliability applies to all your chained setup packages - including complex application <span class="blsp-spelling-error" id="SPELLING_ERROR_9">runtimes</span> such as the Microsoft .NET Framework - thanks to new features in Windows Installer 4.5.<br /><br />"Windows Installer 4.5" Application <span class="blsp-spelling-error" id="SPELLING_ERROR_10">Runtime</span>: Automatically install Windows Installer 4.5 on all supported platforms. <span class="blsp-spelling-error" id="SPELLING_ERROR_11">Runtime</span> installations can be complex, and <span class="blsp-spelling-error" id="SPELLING_ERROR_12">MSI</span> 4.5 is no exception. For instance, on Windows Vista, some <span class="blsp-spelling-error" id="SPELLING_ERROR_13">hotfixes</span> are required before <span class="blsp-spelling-error" id="SPELLING_ERROR_14">MSI</span> 4.5 can be installed - unfortunately they are not served automatically through Windows Update. Not to worry, because <span class="blsp-spelling-error" id="SPELLING_ERROR_15">InstallAware</span> seamlessly installs <span class="blsp-spelling-error" id="SPELLING_ERROR_16">MSI</span> 4.5 for you on all supported platforms, with a single click!<br /><br />Unlike Windows Installer 4.0, <span class="blsp-spelling-error" id="SPELLING_ERROR_17">MSI</span> 4.5 is also supported on <span class="blsp-spelling-error" id="SPELLING_ERROR_18">downlevel</span> platforms such as Windows <span class="blsp-spelling-error" id="SPELLING_ERROR_19">XP</span> and Server 2003, so there is no excuse not to upgrade. Even if you are trying to install an <span class="blsp-spelling-error" id="SPELLING_ERROR_20">MSI</span> 4.5 package on an unsupported platform (such as Windows 98), <span class="blsp-spelling-error" id="SPELLING_ERROR_21">InstallAware</span> gracefully downgrades the package features and your installations will still succeed - even if you have chained multiple setup packages together.<br /><br />Find out more about what makes <span class="blsp-spelling-error" id="SPELLING_ERROR_22">InstallAware</span> so good. As part of our Windows Installer 4.5 launch special, we'll give you an unconditional 20% discount when you purchase <span class="blsp-spelling-error" id="SPELLING_ERROR_23">InstallAware</span> by Friday the 13<span class="blsp-spelling-error" id="SPELLING_ERROR_24">th</span>:<br /><br />www.installaware.com/msi45rtm.asp<br /><br />using discount coupon <span class="blsp-spelling-error" id="SPELLING_ERROR_25">MSI</span>45. Your price is only $719 - this offer cannot be beat! What's better, the 20% discount applies to other <span class="blsp-spelling-error" id="SPELLING_ERROR_26">extra's</span> like floating licenses and 2 years maintenance, saving you up to $412!<br /><br />Why suffer with former industry leading brands, or their copycat clones devoid of any innovation? <span class="blsp-spelling-error" id="SPELLING_ERROR_27">InstallAware</span> beats the competition every time in bringing you the latest technologies and updates, absolutely free of charge. Order now and you'll be well on your way to building reliable installers that are ready for tomorrow's technologies - today:<br /><br />www.installaware.com/msi45rtm.asp<br /><br />Don't delay - this Windows Installer 4.5 launch special is valid only until Friday.<br /><br />Please contact me directly if you have any questions about this launch special - we always welcome your feedback.<br /><br />Kind regards,<br /><br />Candice Jones<br />Account Representative<br /><span class="blsp-spelling-error" id="SPELLING_ERROR_28">InstallAware</span> Software Corporation<br />336 Guerrero Street<br />San Francisco CA 94103-3332<br />415 839 5017Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-70856556675346729372008-06-08T08:44:00.004-05:002008-06-09T07:35:56.808-05:00Digital Rights Management StinksI'm a little older and right of center then many techies that I know. That probably explains why it <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">takes</span> me a few more years to become annoyed about certain issues.<br /><br />However, I now really agree with them: Digital Rights Management stinks.<br /><br />It stinks to have to evaluate <span class="blsp-spelling-error" id="SPELLING_ERROR_1">XenoCode</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Postbuild</span> at home instead of at work because their program expects to phone home and my corporate firewall says hell no.<br /><br />It stinks to have to use <span class="blsp-spelling-error" id="SPELLING_ERROR_3">InstallShield</span> offline activation because of the same reason. Of course, let's not even talk about highly secure environments where the <span class="blsp-spelling-error" id="SPELLING_ERROR_4">xml</span> fragment that initiates the offline activation is never allowed to leave the room.<br /><br />It stinks to pretty much have any dependency that assumes communications ability with an external vendor that may or may not exist one day.<br /><br />It would also really suck if <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Acresso</span> went out of business and I wouldn't even be able to use the software that I purchased. You know... it could happen. I know that I've seen enough to never again <span class="blsp-spelling-corrected" id="SPELLING_ERROR_6">recommend</span> someone purchase an <span class="blsp-spelling-error" id="SPELLING_ERROR_7">InstallShield</span> maintenance agreement. They really are pointless if they can take away functionality from you in an upgrade or worse they go out of business.<br /><br /><span class="blsp-spelling-error">DRM</span> on software just screws the people who are legal, not the people who don't care. After all,<br />IS2009 has been out for what, 2 days now and it's already been hacked and posted on the <a href="http://www.monova.org/details/1470813/Acresso%20InstallShield%202009%20Premium%20v15%200%20498-CFF.html">torrent</a> sites. Go figure, you'd think that coming from <span class="blsp-spelling-error" id="SPELLING_ERROR_9">Macrovision</span> it would be a little harder then that. Then again, I've seen how easy it is to <a href="http://saturn.installshield.com/product/is/2009/domestic/othersetups/setup.exe">download</a> and <a href="http://msdn.microsoft.com/en-us/library/aa370557.aspx">transform</a> the stand alone build so I'm not sure why I would be surprised.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-67086422938859544062008-06-05T21:40:00.006-05:002008-06-06T15:59:20.316-05:00InstallShield 2009: Value Added Services???Recently I read Windows Installer Expert Extraordinaire Stefan <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Krueger</span> recently <a href="http://msmvps.com/blogs/installsite/archive/2008/06/05/installshield-2009-released.aspx">blog</a>:<br /><br /><br /><blockquote><p><em>A remark about the "Value Added Services": Please consider carefully if you really want to install things like the Yahoo! Toolbar with your software. Your customers may not appreciate it. Personally, I get annoyed if a program tries to install unrelated software or browser add-<span class="blsp-spelling-error" id="SPELLING_ERROR_1">ons</span>. On the other hand, you'd be in the company of Adobe (Adobe Reader wants to install Google Toolbar) and Apple(<span class="blsp-spelling-error" id="SPELLING_ERROR_2">QuickTime</span> wants to install <span class="blsp-spelling-error" id="SPELLING_ERROR_3">iTunes</span>, and <span class="blsp-spelling-error" id="SPELLING_ERROR_4">iTunes</span> wants to install Safari during update). <span class="blsp-spelling-error" id="SPELLING_ERROR_5">InstallShield</span> expert </em><a href="http://blog.deploymentengineering.com/2008/05/link-annoying-software-rogues-gallery.html" target="_blank"><em>Christopher Painter</em></a><em> seems to have similar objections. </em></p><em><blockquote><em></em></blockquote><br /></blockquote></em>I also noticed Rod Trent of myITForum tonight <a href="http://myitforum.com/cs2/blogs/rtrent/archive/2008/06/05/the-imminent-death-of-installshield.aspx">post</a>:<br /><br /><blockquote><p><em>If this won’t kill a product line, nothing will… Yahoo! and Acresso Announce Multi-Year Yahoo! Toolbar and InstallShield Distribution Agreement<br /><br /></em><a title="http://www.myitforum.com/absolutenm/templates/?a=" href="http://www.myitforum.com/absolutenm/templates/?a=5068&amp;z=71" z="71"><em>http://www.myitforum.com/absolutenm/templates/?a=5068&amp;z=71</em></a><br /><em><br />Here’s a quote from the article: </p></em><em><blockquote><p><em>As software companies face slower growth, the strategy focuses on options for them to generate additional revenue and provide new capabilities for their customers.</em></p></blockquote><p></em><em>This makes both companies seem really desperate for sales, and to me, this is not a value-added services strategy, as they say in the article. We know Yahoo is in trouble, but this article really smells of another buyout for Acresso on the horizon -- and so soon after the separation from Macrovision.<br /></p></em></blockquote><br /><br />Then this evening I received the following email from a reader:<br /><br /><br /><blockquote><em>From: Anon<br />Subject: Big Ball of Yuck<br /><br />[</em><a href="http://www.businesswire.com/portal/site/google/?ndmViewId=news_view&amp;newsId=20080605005371&amp;newsLang=en"><em>News Article</em></a><em>]<br />Chris,<br /><br />Wow... did you know about this back when you blogged about bundling <span class="blsp-spelling-error" id="SPELLING_ERROR_6">crapware</span> with installs? What a load!! I know they're spun off and looking for new revenue streams, but seriously...<br /></em></blockquote><br />To clarify, yes I was aware of this and yes I agree with Stefan. This topic came up during the IS2009 Beta Cycle as a thread called "<a href="http://community.acresso.com/showthread.php?t=179726">Forget the Yahoo Toolbar</a>" [Edit: Despite the fact that previous discussions from previous beta cycles have been made public, Acresso has gone back and censored this forum by locking it down with a password] and many of us fruitlessly voiced our disagreement. <span class="blsp-spelling-corrected" id="SPELLING_ERROR_7">Unfortunately</span> I couldn't talk about it due to an <span class="blsp-spelling-error" id="SPELLING_ERROR_8">NDA</span>. ( Well, technically it was just a good faith confidentiality agreement. I never really signed an <span class="blsp-spelling-error" id="SPELLING_ERROR_9">NDA</span> which is why I blogged about certain enhancements to <span class="blsp-spelling-error" id="SPELLING_ERROR_10">InstallShield</span> while honoring Yahoo!'s <span class="blsp-spelling-corrected" id="SPELLING_ERROR_11">sensitivity</span> on the matter. ) My thinly veiled blog about rogue software installers was about as far as I was willing to go to try to get attention to the subject without spilling the beans.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-1480621911103089832008-06-05T19:54:00.005-05:002008-06-05T21:23:09.484-05:00InstallShield Stand Alone BuildBack when <span class="blsp-spelling-error" id="SPELLING_ERROR_0">InstallShield</span> 12 was released, <span class="blsp-spelling-error" id="SPELLING_ERROR_1">Macrovision</span> made the decision to move the Stand Alone Build to the Premiere Edition in order to try to drive customers towards the more expensive product. An uproar subsequently occurred from customers who were under maintenance agreements. These customers felt that by taking away a piece of functionality that is critical to <span class="blsp-spelling-error" id="SPELLING_ERROR_2">SCM</span> best practices that they weren't getting what they had paid for. After all, since when is a downgrade, an upgrade?<br /><br /><br />As a result, <span class="blsp-spelling-error" id="SPELLING_ERROR_3">Macrovision</span> listened to their customers and grandfathered certain customers with rights to use the <span class="blsp-spelling-error" id="SPELLING_ERROR_4">SAB</span>. However, with the release of IS2009, <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Acresso</span> has gone back and revoked that right.<br /><br /><br /><br />I have some really strong feelings on this which I'm going to try to leave out of this post. I will instead focus on a couple facts and then ask that all of my readers please leave comments with their opinions. No comment will be moderated. Also, please take my poll on the subject.<br /><br /><br /><br />1) I recently found a bug in the IS2008 <span class="blsp-spelling-error" id="SPELLING_ERROR_6">SAB</span>. After two weeks were spent confirming the bug, the answer I was given that the bug is fixed in IS 2009. Of course it wasn't mentioned to me that I wouldn't actually get IS 2009 <span class="blsp-spelling-error" id="SPELLING_ERROR_7">SAB</span>.<br /><br /><br /><br />2) If I can't upgrade my build farm to IS 2009 <span class="blsp-spelling-error" id="SPELLING_ERROR_8">SAB</span>, then there is no point in upgrading any of the developers because I won't be able to perform production builds.<br /><br /><br /><br />This effectively means that both my support and maintenance contract is worthless in this scenario.<br /><br /><br /><br />IMHO, I understand that <span class="blsp-spelling-error" id="SPELLING_ERROR_9">TCB</span> made a $200 million investment and that they are now trying to make a case for why Premiere is worth more money then Professional. But taking core functionality that is vital to <span class="blsp-spelling-error" id="SPELLING_ERROR_11">SCM</span> best practices away from customers who have prepaid for maintenance upgrades isn't the way to go. Additionally, failing to be upfront and communicate the change to the user community is even worse. From every product management article I've read, these two principals are a given. Then again, <span class="blsp-spelling-error" id="SPELLING_ERROR_12">Acresso</span> is currently looking for a Product Manager for the <span class="blsp-spelling-error" id="SPELLING_ERROR_13">InstallShield</span> brand so perhaps that explains such a huge gaffe.<br /><br /><br />Ultimately <span class="blsp-spelling-error" id="SPELLING_ERROR_14">Acresso</span> will once again listen to their customers, or the customers will vote yes or no with their money.<br /><br /><br /><br />I look forward to your comments and your poll answers.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-23154920393567338942008-06-04T07:10:00.003-05:002008-06-04T13:56:01.292-05:00Chicken and the Egg<span class="blsp-spelling-error" id="SPELLING_ERROR_0">MSI</span> 4.5 is out, and it has a new feature that allows you to embed a custom <span class="blsp-spelling-error" id="SPELLING_ERROR_1">UI</span> handler inside the package and invoke it without needing bootstrapping setup.<span class="blsp-spelling-error" id="SPELLING_ERROR_2">exe</span>.<br /><br />Pretty cool, right?<br /><br /><br />But wait, I see a Chicken and the Egg problem. How do you first get <span class="blsp-spelling-error" id="SPELLING_ERROR_3">MSI</span> 4.5 on the machine to use this feature? Well, with a bootstrapping setup.<span class="blsp-spelling-error" id="SPELLING_ERROR_4">exe</span> of course!<br /><br /><span class="blsp-spelling-error" id="SPELLING_ERROR_5">Hmmmmm</span><br /><br />Now, I know some will argue that you can just set the Schema to 405 and make the user go resolve the problem on their own. But is this really a good user experience?<br /><br />Then of course who really wants to be writing a custom <span class="blsp-spelling-error" id="SPELLING_ERROR_7">UI</span> in C++? <span class="blsp-spelling-error" id="SPELLING_ERROR_8">WinForms</span> is so much easier. Hopefully <span class="blsp-spelling-error" id="SPELLING_ERROR_9">DTF</span> will be updated very soon to support this capability.<br /><br />But wait, there is another Chicken and the Egg problem. How do you first get <span class="blsp-spelling-error" id="SPELLING_ERROR_10">NetFx</span>20 on the machine? Well, with a bootstrapping setup.<span class="blsp-spelling-error" id="SPELLING_ERROR_11">exe</span> of course!<br /><br /><span class="blsp-spelling-error" id="SPELLING_ERROR_12">Hmmmmm</span><br /><br />Now, I know some will argue that adding a .NET dependency to the install is a bad thing, but <span class="blsp-spelling-error" id="SPELLING_ERROR_13">WinForms</span> really rocks.<br /><br /><br />Now <span class="blsp-spelling-error" id="SPELLING_ERROR_14">InstallShield</span> has a very capable <span class="blsp-spelling-error" id="SPELLING_ERROR_15">bootstrapper</span>, and I'm glad I have it. But I do like the vision ( even if we aren't all the way there yet ) of having a single <span class="blsp-spelling-error" id="SPELLING_ERROR_16">MSI</span> that we can just run.<br /><br />Am I missing something? Is there another way to solve this problem? Or is it just a matter of waiting several years until everyone upgrades to Windows 7 and we can be confident that <span class="blsp-spelling-error" id="SPELLING_ERROR_17">MSI</span> 4.5 and .NET 2.0 is already on the box? If that's the `solution` to the Chicken and the Egg problem, I wish this feature had been in <span class="blsp-spelling-error" id="SPELLING_ERROR_18">MSI</span> 1.0.<br /><br />It kind of reminds me of why the Commodore 128 was such a failure. It had all these new capabilities that were never used because there were just way too many Commodore 64 owners who couldn't be ignored. We software developers do tend to write for the least common denominator after all.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-1510817379301820982008-05-28T21:30:00.006-05:002008-05-28T21:43:15.436-05:00Xenocode Postbuild: Bad UI or Intentional Deception?I've been looking at application <span class="blsp-spelling-error" id="SPELLING_ERROR_0">virtualization</span> products recently and I just keep getting more and more. Seriously, I'm just not `getting` this new business model of `Give us thousands of dollars for the tool AND give us a cut ( tens of dollars ) for every single client you deploy your application to. Seriously, there must be some real discounts out there somewhere if they really think and <span class="blsp-spelling-error" id="SPELLING_ERROR_1">ISVs</span> will spend boat loads of money just to <span class="blsp-spelling-error" id="SPELLING_ERROR_2">virtualize</span> their package instead of spending fractions of that to hire quality setup developers to create properly behaving <span class="blsp-spelling-error" id="SPELLING_ERROR_3">MSI's</span>.<br /><br />But anyways, my real <span class="blsp-spelling-corrected" id="SPELLING_ERROR_4">annoyance</span> came when I was playing with <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Xenocode</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_6">Postbuild</span>. I downloaded the <span class="blsp-spelling-error" id="SPELLING_ERROR_7">eval</span> and went to <span class="blsp-spelling-error" id="SPELLING_ERROR_8">virtualize</span> a simple <span class="blsp-spelling-error" id="SPELLING_ERROR_9">winforms</span> app. I got a dialog saying I needed to activate ( which my firewall at work said HELL NO to ) but look at the color scheme:<br /><br /><a href="http://bp3.blogger.com/_28H3HFywulA/SD4WtmJN3GI/AAAAAAAAAF4/_0toRtoadGc/s1600-h/untouched.bmp"><img id="BLOGGER_PHOTO_ID_5205623191876000866" style="CURSOR: hand" alt="" src="http://bp3.blogger.com/_28H3HFywulA/SD4WtmJN3GI/AAAAAAAAAF4/_0toRtoadGc/s400/untouched.bmp" border="0" /></a><br /><br />I loaded this screenshot as 24bit uncompressed so you could see exactly what I see. Look at that cyan looking small point text. What the hell is that? I had to flood fill it to be able to read it:<br /><br /><a href="http://bp2.blogger.com/_28H3HFywulA/SD4XNWJN3HI/AAAAAAAAAGA/GU6h0YTVYxc/s1600-h/floodfill.bmp"><img id="BLOGGER_PHOTO_ID_5205623737336847474" style="CURSOR: hand" alt="" src="http://bp2.blogger.com/_28H3HFywulA/SD4XNWJN3HI/AAAAAAAAAGA/GU6h0YTVYxc/s400/floodfill.bmp" border="0" /></a><br /><br />This <span class="blsp-spelling-corrected" id="SPELLING_ERROR_10">just</span> seems <span class="blsp-spelling-corrected" id="SPELLING_ERROR_11">sleazy</span> to me and <span class="blsp-spelling-corrected" id="SPELLING_ERROR_12">reinforces</span> my perception that something just doesn't quite smell right in the <span class="blsp-spelling-error" id="SPELLING_ERROR_13">virtualization</span> market.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-39519999688577722192008-05-23T14:42:00.006-05:002008-05-23T15:35:08.532-05:00How DTF is going to help me become a better .NET DeveloperI've been doing .NET for a couple years now, but I mostly use it for small tools/automation development. Things like the occasional MSBuild or NAnt task here and there, a SOAP web service that encapsulates a REST web service, or perhaps a custom action that consumes a SOAP web service. The only application work I've ever done in C# was a client/server program that configured a existing system. The application used the ADO.NET 2.0 Factory model, had a framework consisting of a base UI and several application services. I did it pretty cleanly but at the end of the day it was just a bunch of look a like modules using DataGrids. Big deal <grin><br /><br />So here I am playing with DTF and I'm going back to various CAs that I've written over the years and seeing how they could be done better in C# The first story that I decided to look at is dynamically updating ListBoxes at install time.<br /><br />I started with a simple statement like this:<br /><br /><em><strong>session.Database.OpenView("INSERT INTO `ListBox` (`Property`, `Order`, `Value`, `Text`) VALUES ('TESTPROP', 1, '1', 'One') TEMPORARY").Execute();<br /></strong></em><br /><br />This is problematic because if you get any of the SQL statement wrong everything will blow up. Trust me, trying to do this in VBScript really sucks big time. There is a reason Script CAs are said to be evil and it’s not just because of virus scanners.<br /><br />So then I noticed that the DTF Database object has a TableCollection of TableInfo objects that each have built in SqlStatements strings. So I tweaked it up a little:<br /><br /><em><strong>Database db = session.Database;<br />string sqlInsertTemp = db.Tables["ListBox"].SqlInsertString + " TEMPORARY";<br />View view = db.OpenView(sqlInsertTemp );<br />view.Execute( new Record( new object[] { "TESTPROP", 1, "1", "One" } ));<br />view.Close();</strong></em><br /><br />This is a little bit better but it doesn’t solve a more fundamental problem. I’m trying to manage a list of items, why should I have to care about how to get the data stored in MSI? It started to become obvious a bit of abstraction was needed. The result is creating and invoking a custom class that looks more like this:<br /><br /><em><strong>ListBox listBox = new ListBox(session.Database, "TESTPROP");<br />foreach (Process proc in Process.GetProcesses())<br />{<br />listBox.AddToEnd(new ListBoxItem(proc.Id.ToString(), proc.ProcessName));<br />}</strong></em><br /><br />Now I'm just instantiating a ListBox class and during it's constructor setting up database and property collection association. I've also defined a ListBoxItem class that strongly types the Value and Text fields. Finally I have an AddToEnd method that takes a new listBoxItem.<br /><br />This class is by no means complete or bug free. I'll probably want to do things implement capabilities like Add, Insert, Move, Remove, Sort, IEnumerable etcetera. Then I'll probably want to go on to other common stories such as making it easier/more generic to build data driven custom actions that change system state. Serializing/Deserializing CustomActionData. Building ICEs. And so on. Basically the plumbing details that many CAs have to do but really aren’t relevant to the problem trying to be solved.<br /><br />Yes, I know… these are OO principals that I've learned over the years. I can sit down with a developer and read what he's doing and talk about it but frankly I've never taken the time to hone these skills because it was orthoganal to the problem of writing setup declaratively. After all, when your life is breathing MSI it's kind of hard to get worked up over things like NHibernate vs EF debates. But now that C# is my language of choice for custom actions, it's time to catch up on things I should have mastered years ago.<br /><br />PS- Does anyone have any suggestions on good books to read? Please, nothing too heavy... go easy on me.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-12767813472073524312008-05-23T09:27:00.004-05:002008-05-23T09:44:13.193-05:00Red Vs Blue Death MatchFor some reason Rob <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Mensching</span> has decided <a href="http://robmensching.com/blog/archive/2008/05/23/More-red-UI.aspx">once again</a> to bring up the subject of Red vs Blue. I'm a little confused because I thought he disliked troll posts.<br /><br /><br />Anyways, he says he's `joking` so I figured I'd share a little bit of my humor also. Now what was <span class="blsp-spelling-error" id="SPELLING_ERROR_1">AJ</span> saying about taking it out to the playground?<br /><br /><br /><br /><a href="http://bp0.blogger.com/_28H3HFywulA/SDbWV2JN3FI/AAAAAAAAAFw/PSIQXkF5Xco/s1600-h/redvsblue.JPG"><img id="BLOGGER_PHOTO_ID_5203582090272955474" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_28H3HFywulA/SDbWV2JN3FI/AAAAAAAAAFw/PSIQXkF5Xco/s400/redvsblue.JPG" border="0" /></a><br /><br />Seriously though, Rob and I have a lot of common friends. I've spoken to them and the general feeling is that I'm being too hard on Rob (misdirecting my frustration), that Rob was out of line for his comments and that it's <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">disappointing</span> that we aren't getting along.<br /><br />Rob has claimed on his blog that he is leaving the lines of communication open. Believe me... I've tried. However, he doesn't seem to be serious as it takes him a week to answer an email. <span class="blsp-spelling-corrected" id="SPELLING_ERROR_3">Oh well</span>, it took <span class="blsp-spelling-error" id="SPELLING_ERROR_4">Sinan</span> 1 1/2 years to get his apology, why should I expect one any sooner?<br /><br /><br />PS- Rob says he doesn't read my blog anymore ( actually he sent me an email to that effect a year ago ) but my statcounter tells me otherwise. Anyways, I'm just kidding here also. One day the two of us are going to be slamming some beers and this will be really funny in an alpha geek sorta way.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-37173752554691263602008-05-22T20:08:00.004-05:002008-05-22T20:28:10.599-05:00More Information on the .NET 3.5 Client ProfileI noticed a <a href="http://blogs.windowsclient.net/trickster92/archive/2008/05/21/introducing-the-net-framework-client-profile.aspx">link</a> over on the WiX-Users list for even more information on the .NET 3.5 Client Profile. I've not had a chance to absorb it all but I wanted to share the link ASAP.<br /><br />Edit: I've absorbed a bit and I'm a little less impressed with this servicing mechanism. It seems that this is really aimed at XP SP2 with no framework. XP machines ( and all Vista machines ) with the framework can't go the client route but must instead get the full install. <br /><br />Thinking back to my originial problems deploying .NET 3.5 applications, I'm not sure if this will really help us or not. <br /><br />Also I noticed this little quote from the MS blog<br /><br />"As is illustrated in the preceding table, the Client Profile deployment is focused on Windows XP SP2+ with No Framework components installed. This platform configuration is still the predominant platform configuration and will continue be so for the foreseeable future."<br /><br />Ouch. I'm sure the SlashDot and Apple fans would love that quote.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-30915018234387393702008-05-20T13:20:00.002-05:002008-05-20T13:32:16.160-05:00Cancer UpdateI haven't spoken about my wife's battle with cancer in a while but I just read an article about Senator Kennedy being diagnosed with a brain tumor that brought it back to my mind.<br /><br />Cheryl had a seizure at about 2am one night back in October. I guess I'd blocked out how scary that day was until I read the article today. It was absolutely horrifying to wake up to her having a convulsion and then spend hours and hours in the emergency room as they did countless tests to rule out every possible reason. Believe me, some of the things they suspected were truly bizarre. It was almost like watching house only it isn't funny because it's YOUR wife on the table.<br /><br />I'll never forget how relieved we were when finally one of the many doctors came to her room, picked up her hand and said `You don't have brain cancer.` <br /><br />Anyways, 7 months have passed since that night and I'm currently tearing up as I write this. Cheryl has chemotherapy (yet again) tomorrow and only one more treatment scheduled a couple weeks later. <br /><br />After that it's a matter of wait and see. Only we don't plan on doing much waiting as we are currently busy planning a few summer getaways.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-16068563970767070812008-05-20T12:48:00.004-05:002008-05-20T12:56:52.222-05:00LINK: Annoying software: a rogues' galleryI just came across this <a href="http://reviews.zdnet.co.uk/software/0,1000001048,39419834-1,00.htm">article</a> on <span class="blsp-spelling-error" id="SPELLING_ERROR_0">ZDNet</span>. When I read the title I just knew that most of the complaints would be about the installs. Sure enough, as I clicked through through the first 6 annoying applications the complaints were aimed squarely at installs that treat customers computers like it's <span class="blsp-spelling-error" id="SPELLING_ERROR_1">ISV</span> owned equipment.<br /><br />It's a really good read and it's a good reminder why auto update patterns, unwanted bundled software, annoying reboots and ordering customers to widen the attack surface of their system just to use these applications is NOT Setup Goodness.<br /><br /><span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">Unfortunately</span> we are going to see even more of this garbage going forward as it's sadly bound to be getting easier for <span class="blsp-spelling-error" id="SPELLING_ERROR_3">ISVs</span> to hoist crap like Yahoo! Toolbar on users machines.Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.comtag:blogger.com,1999:blog-9537945.post-42409524741424305862008-05-19T10:10:00.008-05:002008-05-19T22:19:22.574-05:00Data Driven Managed Custom Actions made easy with DTFOne of the <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">shortcomings</span> of Windows Installer is no built in ability to perform math functions. <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">Fortunately</span> this is made easy in C# thanks to the <a href="http://www.codeproject.com/KB/architecture/InterpreterPatternParsing.aspx?display=Print"><span class="blsp-spelling-error" id="SPELLING_ERROR_2"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">AxLibrary</span></span> project</a> from Ron <span class="blsp-spelling-error" id="SPELLING_ERROR_3"><span class="blsp-spelling-error" id="SPELLING_ERROR_1">Ayoub</span></span> found on The Code Project. Now with <span class="blsp-spelling-error" id="SPELLING_ERROR_4"><span class="blsp-spelling-error" id="SPELLING_ERROR_2">DTF's</span></span> ability to easily and reliably write Manged Custom Actions creating a simple math evaluation pattern is easy. Consider this database snippet in <span class="blsp-spelling-error" id="SPELLING_ERROR_5"><span class="blsp-spelling-error" id="SPELLING_ERROR_3">WiX</span></span>:<br /><br /><p><br /><a href="http://bp0.blogger.com/_28H3HFywulA/SDGuek-7eVI/AAAAAAAAAFQ/omLAkqDlt7I/s1600-h/schema.JPG"><img id="BLOGGER_PHOTO_ID_5202130884936563026" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_28H3HFywulA/SDGuek-7eVI/AAAAAAAAAFQ/omLAkqDlt7I/s400/schema.JPG" border="0" /></a> </p><p>(Note: I originally wrote the table using <span class="blsp-spelling-error" id="SPELLING_ERROR_6"><span class="blsp-spelling-error" id="SPELLING_ERROR_4">InstallShield</span></span> but decided to <span class="blsp-spelling-corrected" id="SPELLING_ERROR_7">re implement</span> it in <span class="blsp-spelling-error" id="SPELLING_ERROR_8"><span class="blsp-spelling-error" id="SPELLING_ERROR_5">WiX</span></span> since it's easier to read without visualization. But it sure is more difficult to author. In <span class="blsp-spelling-error" id="SPELLING_ERROR_9"><span class="blsp-spelling-error" id="SPELLING_ERROR_6">InstallShield</span></span> it only took a few clicks and fill in the form typing in the schema wizard. )<br /></p><p>The goal is to query the Math table and process math statements with conditions that evaluate to true. Using C#, <span class="blsp-spelling-error" id="SPELLING_ERROR_10"><span class="blsp-spelling-error" id="SPELLING_ERROR_7">DTF</span></span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_11"><span class="blsp-spelling-error" id="SPELLING_ERROR_8">AXLibrary</span></span> it's as simple as this block of code:</p><br /><br /><a href="http://bp3.blogger.com/_28H3HFywulA/SDJAVE-7eWI/AAAAAAAAAFY/0H8UanclcOU/s1600-h/refactored.JPG"><img id="BLOGGER_PHOTO_ID_5202291250425461090" style="CURSOR: hand" alt="" src="http://bp3.blogger.com/_28H3HFywulA/SDJAVE-7eWI/AAAAAAAAAFY/0H8UanclcOU/s400/refactored.JPG" border="0" /></a><br /><br /><p>The result is a log file like this:</p><p><br /><a href="http://bp0.blogger.com/_28H3HFywulA/SDJC4U-7eYI/AAAAAAAAAFo/q9cp06q3_r0/s1600-h/new_log.JPG"><img id="BLOGGER_PHOTO_ID_5202294055039105410" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_28H3HFywulA/SDJC4U-7eYI/AAAAAAAAAFo/q9cp06q3_r0/s400/new_log.JPG" border="0" /></a><br /><br />Wow, is that easy or what? I'd love it if someone would write the same functionality in C++ and show what it would look like. BTW, even though <span class="blsp-spelling-error" id="SPELLING_ERROR_12"><span class="blsp-spelling-error" id="SPELLING_ERROR_9">DTF</span></span> comes from <span class="blsp-spelling-error" id="SPELLING_ERROR_13"><span class="blsp-spelling-error" id="SPELLING_ERROR_10">WiX</span></span>, this CA was actually executed via <span class="blsp-spelling-error" id="SPELLING_ERROR_14"><span class="blsp-spelling-error" id="SPELLING_ERROR_11">InstallShield</span></span>. After all, it is just a Type 1 exported <span class="blsp-spelling-error" id="SPELLING_ERROR_15"><span class="blsp-spelling-error" id="SPELLING_ERROR_12">stdcall</span></span> function.</p>Christopher Painterhttp://www.blogger.com/profile/12167478740431444267noreply@blogger.com