RobMensching.com /Blog
when setup isn't just xcopy

Posted by
Rob Mensching
Friday, December 29, 2006 1:34 PM

Crisis in Y2K7? WTF?

I've been working on revamping the Windows Marketplace build system for the last month or so.  Just yesterday I had to make the decision how we were going to version our binaries.  Versioning is a very important of software engineering and it can be very disruptive if you get it wrong.  Getting versioning right is also quite often overlooked so I was pleasantly surprised to see two pages dedicated to the topic in the help for our build system.  One page talked about the tools used to format and increment the build version and the other page talked about all the different formats.

One of the versioning formats was called "five digit date".  That meant if you built today that you would get a build version with a number like "61229".  The 6 is for the year 2006, the 12 is for the month of December and the 29 is for today's date.  I looked at that and thought, "Well, that's stupid."

You see, versions in executables are historically stored in two DWORDs.  The DWORDs are split into WORDs and each WORD represents one of the four parts of a version number.  That means that each number in the version cannot exceed 65535.

Using the "five digit date" means that January 1st, 2007 would give you the number "70101".  That obviously won't fit into a WORD.  The "five digit date" format was an incredibly short sighted engineering decision.  Engineering decisions like that drive me crazy.

Amazingly, I glanced over at my email (which has been deathly quiet, so nice) and saw an email from one of the guys that works on the build system.  It made me chuckle:

On January 1st, the ‘fivedigitdate’ schema should produce a 70101 version  The problem is that value should have a topend in the 65k’s.   I don’t know specifically what issues you will see and where you will run into them, but just a heads up that if you are using fivedigitdate you will likely need to let it run as the ‘default’ setting and start running 61232+.

Then last night I was catching up on my blog reading a little bit and I saw the InstallSite blog talking about a "Y2K7 problem".  I immediately thought to myself, "No way..." then I clicked on the link in the blog and read the original blog entry from Quan To.  This part near the bottom particularly bothered me:

Luckily, we thought of this earlier in the year and changed our build numbers to use XMMDD where X represents the year in development of our product.  As long as we ship in 6 years or less, we'll be ok :)

Why is there 6 year a timebomb built into their build process?  Why are software engineers cutting these corners?  In the long haul, it just doesn't pay off

If you are a software engineer, I encourage you to consider what it means if every line of code you write lasted 20+ years.  Make those lines something you'd be proud to show your kids (and maybe even their kids).


Posted by
Rob Mensching
Tuesday, December 19, 2006 11:38 PM

Drive to a WiX v2 toolset final release.

Tonight the core WiX toolset virtual team made a concerted effort to reduce the number of open WiX v2 bugs.  At the time of this writing we have 8 bugs.  I hope to kill off one more and Bob is looking at another.  That would leave us with 6 CustomAction bugs that need to be solved.  Then I'll feel pretty comfortable calling WiX v2 done.

The CustomActions have always been more work to implement, debug and fix.  It isn't just that they are written in C++ (the rest of the WiX toolset is written in C#) but the problems being solved in the CustomActions are harder.  Creating actions that participate properly in a compensating transaction takes a lot of effort.  The effort that pays off once we get it right because no one ever has to write it again.  Developers can write a couple lines of declarative statements and have a transacted installation process.

Anyway, that's just a quick update on what's going on tonight.  Also, power is back on at home so I'll be sleeping in my own bed tonight... and it'll be warm.  Keep coding, I'm going to kill off this bug and call it a night.


Posted by
Rob Mensching
Monday, December 18, 2006 10:35 AM

Alas, Babylon.

As I'm sure you've heard by now, the Greater Puget Sound area was hit with record winds (upwards of 69 miles per hour) Thursday night.  The winds took down many trees and the falling trees took down many power lines.  Many places in the area are still without power, including my house.

I know this is a very cliche thing to say but it really is easy to take our infrastructure for granted.  Stop lights disappear and intersections get dangerous.  Refrigerators stop and food spoils.  Thermostats fail and houses get cold.  And everything is very, very dark.

Fortunately, we have friends in the area and we've all pooled resources.  Backup food stores merged can create some interesting feasts.  A couple burners on the gas stove plus bunch of bodies in one house make the ambient temperature reasonable.  And we've all been amazed how long a UPS can power one lamp into the night.

The whole thing reminds me of Alas, Babylon.  Well, at least, the parts I remember from the first and last reading in high school.


Posted by
Rob Mensching
Monday, December 11, 2006 11:34 PM

Response to my WiXAware Introduction.

Sinan Karaca of InstallAware sent me an email responding to my post about the new WiXAware because it seems that comments here still don't work, yet.  Something else for me to debug.  <sigh/>  Anyway, he had some great points and asked that I respond publicly.  First, Sinan's comments:

You mention above that "during the discussion the other InstallAware representative said something that reinforced my negative impression of InstallAware".

Walking into the meeting, I had no idea you had already formed a negative opinion on InstallAware, which was about to be reinforced. I wonder to what we owe this judgmental attitude?

I had felt you were coming across as a bit hostile during the meeting. I remember you were accusing us of copying InstallShield and doing the same wrong things that they were doing, which you repeat in this post here.

Saying InstallAware is just an InstallShield clone shows that you haven't actually spent any time with it. I remember you saying "I hate UI, I hate anything that has a GUI...I'm command line only, well except for Visual Studio because it has Intellisense." Maybe that explains why you haven't spent time with InstallAware, but for the benefit of your readers here, I have to set the record straight.

InstallAware features innovations in the Windows Installer space which are still unique and unmatched in the industry, a full three years after our debut. These include partial web deployment, LZMA compression for up to 67% space savings, and MSIcode scripting which adds branching code execution capabilities to the Windows Installer engine.

Perhaps the most important philosophical design difference between InstallAware and the rest of the install industry is that our IDE's design views automatically emit MSIcode - instead of having divorced scripting and visual portions of the IDE where the script is clueless about what the visual part does, and vice versa (this is the model that every other vendor uses). This is like Visual Basic or C# for installers, where you have automatic code generation going in the background, and two way integrated editing.

So needless to say, I am a bit disappointed by this post, but since "all publicity is good publicity" I can't complain ;) I was hoping you'd have found a bit more to appreciate in my company's efforts other than the correct spelling of WiX though.

We're the first (and so far only) vendor to support your WiX technology, and I hope this decision was not premature. We've already spent a lot of time and money building WiXAware, and we'd have appreciated a warmer welcome from the WiX project leader - or at the least, an open mind and a non-judgmental attitude.

I know you asked us to provide free support for WiX community members regarding all general WiX questions during our meeting. While we would love to, we have to see that WiXAware is a commercially viable project first - because eek!, even WiXAware has a price tag of $499. Just like Microsoft, we need to make money too.

First of all, I want to be very clear that I have been impressed with Sinan.  He is passionate about his product, accepts criticism well and responds very appropriately.  It is entirely possible that continued conversations with Sinan will turn around my negative impression of InstallAware.

So why do I have a negative impression of InstallAware?  Two reasons.  First, they repackaged redistributable packages (such as the .NET Framework) which violates the EULAs of the products.  Messing with other people's stuff then redistributing your modifications without explicit permission bothers me at a philosophical level.

Second, InstallAware was served a mostly reasonable cease-and-desist letter from Macrovision to remove content on the InstallAware website that was supposedly copied from the website of one of Macrovision's acquisitions.  InstallAware turned around and used that letter against Macrovision to drum up more media attention by making it a "David vs. Goliath" story.  That was just a bunch of media spin instead of simply removing any copied content and getting back to competing by offering better features at better prices.

What's really interesting is that after meeting Sinan, I was actually thinking that maybe the Macrovision thing was just completely malicious like he said.  Then, I saw this comment about the new WiXAware website on Christopher Painter's blog:

Hmm, the website looks like a copycat of Advanced Installer's website (www.advancedinstaller.com/). That one's been around for years so I am pretty sure "Aware" is doing the stealing.
I wonder if the product is a fraud as well...

Maybe they are all using the same designers and that explains the similarities but at the moment I don't buy it.

Getting beyond my negative impression of the company that is InstallAware, let's talk about the features of WiXAware.  First, as Sinan notes above, I'm not a GUI guy.  I don't use a GUI for any code generation except dialog layout (I totally agree that laying out UI by typing in x,y coordinates sucks rocks).  I do love Intellisense but that's the only reason I use Visual Studio.  That means I'm 100% not the target customer for a tool like WiXAware.  If you want read a review by someone who believes in GUIs take a look at Christopher Painter's blog entry about WiXAware.

That said, I was impressed with the fact that there was a "two way integrated editing" experience in WiXAware.  I even said so in my last blog entry.  <smile/>  If the other tools out there don't do this then WiXAware is definitely ahead of the game.  Totally cool feature and totally the right way to do that.

Also the reason I called WiXAware an InstallShield-clone is because it looks exactly the same to my (admittedly) untrained eye.  InstallShield introduced that layout a long time ago and now everyone seems to just copy it.  That said, I think Sinan did a good job listing how his product is more than a straight InstallShield-clone.

Finally, Sinan's comment, "We've already spent a lot of time and money building WiXAware, and we'd have appreciated a warmer welcome from the WiX project leader - or at the least, an open mind and a non-judgmental attitude" gave me pause.   I certainly was judgmental and I did not approach WiXAware with an open mind.  I know that a really good GUI built on top of the WiX toolset is important for WiX to reach a wider range of developers.  I also know that I'm not going to be the person to make that happen.  So maybe I should have been friendlier to InstallAware the company.

However, while I appreciate that InstallAware spent time and money building the WiXAware product, they did that because there is a business opportunity here.  They are selling the product for almost $500 (which seems high to me but it isn't $2,500 like InstallShield asks for... which is simply nonsensical, IMHO) because I'm sure they've found that's what the market will bear.  There is nothing wrong with making money on a product people want.

Yet InstallAware the company is directly benefiting from the many, many volunteer hours people in the WiX community have put in creating, discussing, debugging, and releasing the WiX toolset.  Nothing wrong with that, the license is written in such a way to enable that very thing.  But I think that InstallAware is missing out on a huge opportunity by choosing not to participate in the WiX community (the very people who are most likely to want such a product) until the product proves "commercially viable".  There has been absolutely no discussion about WiXAware on the wix-users mailing list.

That said, it is on my todo list to get tools that build on WiX listed on the WiX web site (WixEdit and WiXAware are the two I know about that are still active).  I'll make time to do that tomorrow night in time for Wednesday morning's build.

So, I'm sure this still judgmental and not-quite-open-mind blog entry is not all that Sinan hoped for but I do hope our conversation continues.  I have listed my misgivings with the InstallAware company but I think WiXAware the product is interesting for those looking for a GUI on top of the WiX toolset.

Update:  Stephan Krueger just blogged about the Advanced Installer/InstallAware website similarities and he has pictures.


Before