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

Posted by
Rob Mensching
Friday, June 29, 2007 4:06 AM

WiX in adolescence? I hope so...

I recently discovered that Marc Andreessen (yes, that Marc Andreessen) started blogging earlier this month.  He's been on an amazing tear.  Pretty much every single blog entry is worth reading from start to finish back to back.  Based purely on his writing, I think it would be really fascinating to meet Marc in person.

One of the things that really interests me in Marc's blog entries is that I will learn stuff about the startup world (which I have little experience with) and at the same time identify with something he mentions in passing.  That very thing happened with a small piece of Marc's latest posting (at 2:28 AM).

However, every once in a while, you get a new technology that will march, more or less predictably, through the following stages: alpha; beta; pre-adolescent general release where it is adopted, picked apart by, and then dismissed by the inside baseball crowd; silence while it's tweaked and tuned and enhanced to have broader appeal; adoption by a new wave of pragmatic early adopters who have a real use for it in their daily lives; adoption by those early adopters' friends and relatives and colleagues based on enthusiastic word of mouth; and then a gradual spiralling of uptake into the mass market, ultimately resulting in whatever level of millions, tens of millions, hundreds of millions, or billions of users for whom the technology is truly appropriate.

That paragraph echoes exactly what I was trying to say in my posting yesterday (er, I guess it was 9 minutes into today) about the current state of the WiX toolset.  In particular, I said:

I think we're also crossing into the next phase of community where the second phase of adopters are picking up the toolset.  The early adopters are usually very technically savvy and willing to put up with a certain amount of pain to check out something cool.  The second wave of users are usually less impressed with the technology for technology's sake and want more things "to just work".  I believe satisfying the needs of that second wave of users is what pushes a technology to the next level of adoption.  It's going to take us a good long while to get there with WiX v3 but we'll keep expanding the foundation and trying to make everything easier...

There was a lot of buzz about WiX in the middle of 2004.  Admittedly, the buzz was more about Open Source at Microsoft than it was the core toolset but the attention had the same effect (something like 180,000 downloads in the first couple days then down to 1,000 downloads per month, IIRC).  Over the last few years we've slowly marched to stability in WiX v2 and now we are tackling ease of use features and more polish in WiX v3.  It feels very much like what Marc describes above, except at an order of magnitude or three smaller since we're targeting developers not the massive consumer market.

What I find most interesting is that this whole process feels very much like the way that WiX v1 (never released externally) and later WiX v2 was adopted inside Microsoft.  Things are a bit different now (being Open Source and outside the Microsoft firewall) but still very familiar.  I also know what happens next.  A lot of hard work.

Keep coding, you know I am.

 


Posted by
Rob Mensching
Friday, June 29, 2007 12:09 AM

Year 8.

There were 8 lbs. of M&Ms outside my office yesterday morning.  You know what that means.  Milestones like this are also good times to sit back and reflect a bit.

Work (during the day)

Windows Marketplace started off with a bang when we released Windows Vista for download.  It was an amazing feeling to work for less than three months and launch something that big.  It felt especially good after slogging through the previous two years to get Vista out the door.

Since that release, I spent significant amounts of time gutting and rebuilding the Windows Marketplace build and deployment system.  There were a lot of engineering principles that had been ignored for a long while so it took quite a bit of effort to pay down those taxes.  For the last month I've actually started designing and writing features for Windows Marketplace that will show up in the not too distant future.

There is so much cool stuff I want to do in Windows Marketplace.  I look forward to getting out of engineering debt and into pure future design.

Work (during the night)

Entering escrow for WiX v2 was like letting out a huge sigh of relief.  I wasn't sure what I was going to feel but not having to stare down bugs constantly has been really nice.

The WiX community continues to grow.  We continue to see more hits on the web site, more downloads and more questions on the mailing lists.  It's particularly cool to see commercial tools enter the MSI authoring space built on top of the WiX toolset.

I think we're also crossing into the next phase of community where the second phase of adopters are picking up the toolset.  The early adopters are usually very technically savvy and willing to put up with a certain amount of pain to check out something cool.  The second wave of users are usually less impressed with the technology for technology's sake and want more things "to just work".  I believe satisfying the needs of that second wave of users is what pushes a technology to the next level of adoption.  It's going to take us a good long while to get there with WiX v3 but we'll keep expanding the foundation and trying to make everything easier (Derek would like me to have said "easy" but I'm going to stay conservative for a while).

On top of all that work stuff, home life is good... but I'm only at the half year mark so it isn't time for reflection on that yet.  <smile/>

 


Posted by
Rob Mensching
Thursday, June 14, 2007 7:48 PM

WiX Jobs

I've been working my way through the book The Second Coming of Steve Jobs that Peter Torr left behind when he moved out (when I got married).  The book is a bit sensationalistic so I'm constantly questioning how much of it is really real but there are parts that I find amusing.  This particular passage sticks out in my mind that talks about Steve Jobs's amazing ability to sell:

Steve was charming and hypnotic.

"Bill, between us, we own one hundred percent of the desktop," Steve said, meaning that Microsoft and Apple together controlled the market for PC operating-system software.

Bill shook his head in amazement.  Steve's tone made it sound as though Bill had 50 percent and Steve and 50 percent.  The reality was that Bill had 97 percent and Steve had only 3 percent.

Percentages aside Microsoft and Apple are the major players in the desktop market.  Duh, right?  Yeah, so what if you are a setup developer and wanted to work at either of those companies?  Well, it turns out they both have job openings, if you are experienced with the WiX toolset:

Apple Job Opening - http://jobs.apple.com/index.ajs?BID=1&method=mExternal.showJob&RID=5325&CurrentPage=4

Join the team responsible for building and releasing all Apple software products. We are a fast paced and fun group that is at the core of the Apple software development process.

The Installer Support Engineering team works with development engineering teams across all of Apple. We design and maintain installer packaging and associated tools and automation that allow Apple to successfully distribute our OS releases, applications, and hardware projects.


We are looking for an energetic problem solver with engineering experience/education, excellent verbal and written communication skills, and a strong work ethic. Candidate must possess the programming expertise to tackle a variety of technical problems, and the communication skills to work effectively with technical and non-technical colleagues. Development experience on Windows is required, and Macintosh or other UNIX platforms experience is a huge plus.

Responsibilities:
* Create installers, tools, and automation to deliver Apple products
* Work with WiX, MSI, XML, JavaScript, HTML, and others
* Debug in unfamiliar territory, and solve integration problems

Required Skills, Education, and Experience:
* BS in Computer Science or equivalent experience
* C programming experience
* Experience with Windows MSI Installers
* Experience with Windows programming (Win32, MFC, VB)
* Creative, with common sense problem solving abilities
* Strong verbal and written communication skills
* Ability to work collaboratively and independently

Additional Success Factors:
* Experience with Apple frameworks, such as AppKit and CoreFoundation
* Experience with Perl, JavaScript, Python, Objective-C and shell / UNIX scripting
* Familiarity with build systems and version control systems such as CVS and Subversion
* Familiarity with current installation technology, such as the OS X Installer, InstallShield, and RPM

Microsoft Job Opening - http://members.microsoft.com/careers/search/details.aspx?JobID=C9569F47-6E6A-4E88-BB32-5AEB940A60C3&start=1&interval=10&SortCol=DatePosted

Do you like to create order out of Chaos? Does the idea of simplifying the work of keeping millions of desktops secure on the web sound like a worthy challenge? Would you like to make thousands of system administrators more productive while making their lives easier? If you’re up to it, we have a challenge for you: simplify and streamline the IT Pro’s and user’s experience administering Internet Explorer on the desktop. Make it easy for administrators to keep users secure while allowing users easy access to the features they need.


The Internet Explorer team is looking for a strong developer to work on our Foundations Deployment team. The Deployment team is responsible for making it easy for both home and enterprise users to adopt, install, configure, trust and use Internet Explorer as their browser of choice. Your work will touch millions of lives daily, so quality is critically important. The ability to ship the right solution, on time, into a myriad of end-user scenarios is hard. It requires someone with a passion for quality, the ability to manage a complex array of inter-related dependencies, and most of all, someone who thrives on challenge. However, at the end of the day, you’ll have the rewards of a job well done, and the satisfaction of knowing that millions of users will be positively touched by your work on a daily basis. You’ll have demonstrated the ability to deliver a positive difference in the productivity of large, influential customer segments, which care passionately about your product.

We need a technically strong developer with a self-motivated spirit, a passion for the user, and excellent problem solving skills. The successful candidate will have 2+ years experience writing Win32 applications using C/C++. The ideal candidate will also be experienced with XML & XSL technologies, Perl and/or similar scripting languages, Microsoft Installer, Wix, Active Directory, the IE Administration Kit, and Group Policy on Windows Server. Experience with C# and the .NET Class Library is a plus. A BS degree in Computer Science or equivalent experience is required.

But this blog entry really isn't meant to be about job opportunities available at Apple and Microsoft (although best of luck to you if you're applying for either of them).

Rather, when Bob found the link to the Apple job and sent it to a bunch of us I was pleasantly surprised so I went searching on the Microsoft careers site.  Then I remembered a comment someone made when the WiX toolset was first released.  The comment went something like, "The WiX toolset won't be relevant until there are actually job postings that require it."  Well, okay then.  I guess we're done with that.  <smile/>

 


Posted by
Rob Mensching
Friday, June 01, 2007 3:44 AM

"Smart cabbing" added to WiX toolset.

Last week I added a somewhat cool feature to the WiX toolset (v3-only, of course).  I call the feature "smart cabbing".  I didn't actually invent the feature, somebody in Visual Studio came up with the idea for VS2003's setup (I think).  The idea is actually quite simple, "If you have to put the same file into the same cabinet but with different names, do not duplicate the binary content."

You might think, "Why would anyone put duplicate copies of a file in the same cabinet?  That's just dumb."  At first, blush it does seem kinda' lame.  However, the structure of a Windows Installer package requires that a file getting installed to multiple directories must have different identifiers in the MSI database.  Since the Windows Installer requires that files are stored in cabinets by the file identifier you can realistically end up with files duplicated in a cabinet.

Even then, I questioned how often does this scenario really happens?  Well, the driving force for this functionality comes from Visual Studio for the .NET Framework.  Peter Marcu explained to me that the .NET Framework has to install many its files into two locations: the %SystemRoot%\Microsoft.NET\Framework directory as well as the Global Assembly Cache. 

If I remember correctly, Peter mentioned that removing the duplicate files saves about 10 MB.  Not a bad savings.  It was definitely worth the 4 or so hours I put into writing and testing the smart cabbing feature.

Now the intrepid developer might note, "Hey, doesn't the Windows Installer provide a mechanism to duplicate a file multiple times during an install?"  That is correct.  However, the DuplicateFiles Action does not do integrity checking on the duplicated files so repairs and patching are less robust.  Also, in my tests, the duplication functionality will not copy files out of the Global Assembly Cache so the .NET Framework scenario still requires this smart cabbing feature.

Anyway, using smart cabbing in the latest builds of the WiX toolset is simple.  Just build your MSI package like normal and if you end up including more than one file with exactly the same source path then light.exe will only add the content from one of the files.  No new switches needed to take advantage of the feature.  In fact, the only difference you'll notice is that rebuilding an MSI file with duplicate files compressed inside it will create a smaller MSI package.