ISWIX, LLC View Christopher Painter's profile on LinkedIn profile for Christopher Painter at Stack Overflow, Q&A for professional and enthusiast programmers

September 30, 2009

MSSE Validation Errors

I recently downloaded Microsoft's new Security Essentials Suite and I decided to take a look at how it's installer is constructed.

My first observation is how they once again use an external UI to get around the fact that Windows Installer does such a poor job at localization.

Then I ran MSI validation and discovered the following gem.

ICE08 ERROR Component: SetupResMui_NLNL has a duplicate GUID: {1230940F-EB02-47B7-ACFF-D0E76871D928}
ICE08 ERROR Component: MsMpResDll has a duplicate GUID: {8FEE8260-3507-417A-AF09-1C24F341FA14}
ICE08 ERROR Component: shellextDllMui_ZHCN has a duplicate GUID: {A5F76683-9CAE-4F3F-B4FD-1668EB2C3FAD}
ICE08 ERROR Component: SetupResMui_PTBR has a duplicate GUID: {D0D868D8-EC9D-423F-AF62-345A4EEFE3C3}

I'm afraid to even ask. :-)

September 29, 2009

Configuration Manager In Training



I don't talk about my family life much but today my daughter Ashley ( Age 6 in 1st grade ) wrote the cutest thing: A french toast recipe!

See, I work a lot during the week ( probably too more then I should ) and on weekends I typically do the cooking. Very often I'll make french toast since they are always asking for it. It's a real big hit.

I was sitting at work today when I received this picture and it just warmed my heart. Milk, Eggs, Sugar, Nutmeg, Cinnamon, Mix it up and grill it with love followed by happy!

Awww, too cute.

Anyways, I can tell this kid is going to love Build/CM. :-)

Finally, here's the real recipe

16 slices thin white bread slightly stale( none of that wheat stuff mommy likes )
1 cup of egg beaters
1 cup of milk
1/2 cup of sugar
1 tsp vanilla ( life is too short for artificial )
1/2 tsp cinnamon
1/4 tsp nutmeg

Stir briskly with a whisk, drip bread and cook on a griddle coated with PAM heated to 325f. Serve with "daddy eggs" ( eggs over easy @ 375f with REAL butter ) and bacon.

September 23, 2009

Favorite InstallShield Automation Interface (Feature)Bug

Does anyone actually use the InstallShield automation interface? I'm guessing not due to huge number of bugs, bad behaviors, poor documentation and missing functionality that I routinely step into every time I try.

I'm too tired to recap every bug I've ever found, so here's my new favorite.

Let's say you are calling the ISWiProject.AddFeature( string ) method and you pass it a feature that already exists. What would you expect the proper behavior to be?

a) throw an exception that tells you that you violated a primary key constraint

or

b) throw a modal dialog telling you that you violated a primary key constrant and then swallow the exception.

Argh!!!! Enough said? I guess that's why we pay tens of thousands of dollars for maintenance and then never get our bugs fixed. Just shoved along to new releases with more bugs.

September 21, 2009

Interesting Posting on Monster

I came across this post on Monster the other day:

If you are a WINDOWS INSTALLATION ENGINEER that has experience installing windows pre-Installshield (i.e. the old fashioned way!) - think API's, DLL's, and registry setting - this is a great opportunity for you!!

Our client is seeking a smart, experienced Windows Engineer with an ability to work in the dynamic environment of an emerging growth company. You will be tasked with attacking new problems and be presented daily with development challenges that will require a high degree of versatility, mental flexibility, and innovation to solve.


This would make sense if the position if for a setup tools developer rather then setup developer, but the posting seems to clearly indicate that it's the former rather then the later.

How retro? For the love of... why??

Sure, from my script days of the 90's I probably remember how to do all of this stuff but what is the value in loosing every foundation class library available? What is the value for shunning the declarative approach of Windows Installer and doing a roll your own EVERYTHING imperative approach?

I'm lost on this one.

But maybe it really is for a tools position in the open source space and that something new and different will emerge.

BTW, I'm reminded of an embarrasing moment. About 6.5 years ago I was busy doing a build when the phone rang. It was a Senior Director of Technology for Continental Airlines calling me for a phone interview. We chatted for a minute and then he asked me how to replace a locked file on Windows.

My mind drew a blank. Sure, I knew MoveFileEx and PendingFileRename operations but I just couldn't think it at that moment. So instead I gave some lame explanation of InstallShield having a setting for locked files and that it was a black box / white box kind of thing and that if it was to fail I'd spend time profiling it to identify the cause.

The moment I hung up I thought, damn it, why didn't you talk about the Win32 APIs behind the scene? Ughh!

I ended up getting the job.

A couple years later I asked him why he hired me when I couldn't answer such a simple question and he said:

"Because you actually WANTED to do installs."

I think that says enough about our space. It was true then and it's true now, IMO.


September 16, 2009

Name This Tool

I've been working on a WiX GUI editing tool lately that I'm hoping to release as open source soon. I can't go into many details at this point because many things aren't decided yet.

One thing that I need to get settled is what to name it. Here's where I'm hoping you can help. If you have a suggestion for a name, please leave a comment below.

Rules:

After a suitable list is generated, a poll will be created where my readers will rank their priority.

The final ranked list will be vetted for trademark issues and a final name will be choosen.

If you'd like the glory of claiming you named the new tool, please leave your real name when posting.

The final name selected becomes the property of DeploymentEngineering.com and who ever I may assign it to.

For a quick tease of the new tool, click the link below.