Monthly Archives: June 2007

Disagreeing with the Benevolent Dictator

I’ve been partially following the WiX-Users list recently when I noticed this question from Leo:

How do you define the InstallExecuteSequence table in WIX so that the standard actions PublishFeatures, PublishProduct, RegisterProduct and RegisterUsers won’t show up? thx!

Oh my, I knew right away that this was stepping on a hornets nest. Anyone who has followed WiX / Rob Mensching / Aaron Stebner ectera for awhile knows that this group is pretty self confident that their way of doing this is the right way and everything else is wrong. However this is the WiX-Users list and I really don’t want to troll for an argument. I decided to sit back and watch. Sure enough, Rob Mensching replied:

Why would you want to do that?

Ok, so maybe this is a case of email not conveying emotition, but I’m pretty sure what Rob was really saying that you have to somehow convince him that you have a valid reason for doing this. I’ve had several reasons in the past, but again, I don’t want to go trolling… Then someone replies with an answer to the actual question of HOW you would do it, but continues to lecture about why you shouldn’t do it. Then yet another person replies to lecture about how you shouldn’t even use MSI if this is your need, go use NSIS. Ouch… yuck.

Now our original poster Leo comes back with a pretty good piece of logic… the MSI team specifically has a help topic on MSDN explaining how/why you might want to not register your product with these standard actions.

MSDN does not indicate any problems or recommand not doing this. As a matter of fact MSDN provided the instruction for omitting the registration of application at Exactly what kind issues I might get into if I do this. Please advise. Thx!

Now I’ve not waited long enough to see additional replies, but I already know from experience that this kind of questioning isn’t going to go over well in the Wix-Users space because you have to keep in mind that what the Windows Installer team considers a `valid` MSI and what Rob considers a `valid` MSI are entirely different.

My opinion is as long as you understand what your doing and the related impact….. go do your thing. I follow most generally accepted best practices, but on certain issues I’ve had business requirements that require me to do something different. I personally won’t listen to anyone try to dictate ( no matter how benevolent ) what my install should or should not do nor will I listen to complaints like `fake` or `trojan` MSI and most importantly I don’t accept something as some immutable, undeniable best practice just because one person says so.

Mailbag: Have you seen this?

I guess thinly veiled ambigious references aren’t enough because I keep getting emails from friends asking if I’ve seen the news about Macrovision. So yes, I know about the 7% RIF and I know about the director who picked up a nice $200,000 dumping 15,000 shares of MVSN stock. I also know about various people suggesting that a sale is in store for Macrovision. However, until people actually start flooding my mailbox with real inside scoop, I’m just an outsider looking in wondering what’s going on. That said, here are some interesting quotes from a Yahoo! investment board:

From `candor2001us`

Why is this a good sign? you usually cut employees in bad times, when there is no work for them. This is not a sign of a growing company.

From `maxiumboostage`

exactly, with mvsn dropping safedisc , ripguard, hawkeye, the flex stuff not being developed any further i think its soon gonna be time that fred makes a move. he has been known to break companies apart and this is the first sign that vsn is being broken into nice purchasable chunks for any interested parties that want to buy the technology. i also heard on the grapevine that electronic “safediscs main customer” have dropped the product thus rendering it non profitable. well ill wait and see but i am standing by my predictions that its gonna be broken up and sold into chunks. bye bye macrovision.

From `josedelacruz150`

EA may or may not have dropped safedisc. That’s an old product anyway in a market that’s moved on.
Its never been a money maker, and its end of lifed already.
Macrovision doesn’t have any real technology but it does have IP.
Wouldn’t be surprised if he sacked them all and sold that.

From `candor2001us`

that’s not necessarily true. You cut employees to strengthen the bottomline especially when the top line is remaining stable…..I think Fred just wanted to cut deadweight especially with a couple of Execs and Im pretty sure there will be another one cut soon once he proves his incompetency…..

you also start to slim down when getting ready to look for a buyer…..

It’s been great working here though….

An afternoon with InstallAware’s Sinan Karaca

It was a really nice father’s day today: My smiling girls, the sweet cards and presents, the bacon wrapped Fillet Mignon and best of all, being given a pass to go enjoy some free time without the responsibilities of parenthood.

So what better to do on an afternoon off then to sit at a Starbucks for 5 hours chit chatting with the founder of InstallAware, Sinan Karaca. We both went into extreme detail over practically every aspect of the installation space…. way too much to write about here. I think a lot of good information flowed and I’ve come to realize that the two of us actually disagree on very few topics. I’m looking forward to see if InstallAware decides to implement a few of my thoughts in WiXAware and I’m equally interested in seeing if I can fit WiXAware into my installation solutions.

Either way it was a very productive session and as always, I always enjoy meeting with people who have an interest in setup. If you find yourself in Austin, feel free to look me up.

Wondering about the future

I’ve been wondering about the future lately… both personally and professionally. Sometimes the way things appear to be and the way things actually are can be unrelated. You often have clues to the coming changes but you either want to ignore them or just not speak of them. Maybe it’s just hard to talk about something when you are only dealing with suspicions…. you just don’t know the exact facts.

I know of a couple companies that are going through some pretty difficult times right now. Both have given clues that they aren’t making the numbers that their investors are looking for and both have recently gone through some pretty serious layoffs and `reorganizations` as people scramble to figure out a way to make money. Both are also giving some pretty strong clues that they will be on the selling block in the near future. I don’t want to name names since I don’t want to hurt the innocent, but I’m guessing that by the end of the year, time will reveal all. It has been stressful lately because one of these companies I currently work for, and the other is a company that I’ve very recently considered working for.

Then there is the big unknown that strikes closer to home… Will my wife’s cancer come back?

Burning In Hell With Heat

Ok, I really, really, really keep trying to give WiX a try but I’m not exactly sure why. I have an ASP.NET website installer that I wrote and maintain in InstallShield that I’ve been wanting to split out to give some of the responsibility back to the ASP.NET developer. To do this, I’ve moved the components/directories/files out to a Merge Module and the main InstallShield project just handles the UI, consumption of the merge module and creation of the VDIR/XML XPath resources. I want to refactor the merge module to use WiX instead of VDRPOJ.

So I decided to give Heat another try. The goal is to harvest a directory and insert into a merge module project in Votive. Now heat says it’s simple, let’s see if it is.

First I started by running the command:

(Foo is a directory structure with apx 200 folders and 3700 files )

heat dir Foo -out Foo.wxs

A few seconds later I have Foo.wxs and I’m thinking: Cool! It didn’t throw an exception like the last time I tried this.

Then I notice two things… first all of my components ( thousands of them ) have a GUID attribute of “PUT-GUID-HERE”. Oh my,that’s going to be fun.

Then I notice all of my files have a absolute path for their Source attribute. Well hell, that’s not going to work in a build automation environment.

For the first problem I ask the WiXUsers list and I’m told about an undocumented -GG argument to heat. It sure would have been nice if /? told me about that one. So I quickly rerun heat and problem one is gone.

Then I do a search and replace to fix the absolute path problem. Cool, that one is gone. Now it’s time to go create a Merge Module project in Votive and paste my components in and build my merge module.

You guessed it… didn’t work. It seems that Heat created all of these Fragment elements around the DirectoryRef/Component/File elements and WiX doesn’t actually like that when I paste it in as belonging to MergeRedirectFolder Directory element.

So I run a search and replace to get rid of Fragment elements. Now I find out that DirectoryRef is incorrect also. So I perform yet another search and replace to change DirectoryRef to Directory.

Now I’m getting to a new error message:

The Class/@Server attribute was not found; it is required.

It seems Heat examined the properties of my .NET assemblies and only half authored the required attributes. For the moment I decide to just ignore the properties and treat my assemblies as XCOPY. I go through and chop off all of the offending elements.

Yup, you guessed it again… it still doesn’t work. Now I’m being told that I have duplicate Directory elements. It seems that Heat didn’t normalize my components by their associated directory. It just created a duplicate Directory element for each component.

Meanwhile something else is very annoying…. Ctrl+Break doesn’t actually work at killing the build. I have to break out Task Manager and kill candle. Even after it’s killed Visual Studio remains unresponsive as it continues to somehow process build error messages that were received from candle.

Ok, it’s getting too hot in here even for this Texan. Consuming a directory structure and dropping it into a merge module really shouldn’t be this freaking difficult. Even the POS VDPROJ can easily do this simple task.

Now someone can feel free to post a comment talking about how I’m being snarky or that I simply don’t understand WiX enough, but it would be a lot more beneficial to actually start considering real world user stories.

I’m still waiting for the day where some tool comes by that solves all of these problems and makes real world use cases simple. Until then I’ll be using InstallShield. Sure it might cost $2000 but the alternative is anything but free regardless of what the license agreement says.

Deployment Engineer Available

I would like to publically say that I’m interested in communicating with fellow Austinites ( and others from around the world if remote work is possible ) who may be aware of organizations that could benefit from my assistance in the areas of build and deployment automation. I am willing to do 50% travel is necessary. Please email me offline at chrpai@yahoo.com.

Thanks,
Christopher Painter

Deploying a Vista SideBar Gadget

Bob Crawford recently asked on InstallShield Community:

Hi, we are developing a Vista application with a companion Sidebar gadget. We would like to install/uninstall the gadget along with the application. Does Installshield 2008 have this kind of support for Sidebar gadgets?

I havn’t done this yet so I decided to start Googling. This interesting MSDN Lab came up:

Windows Vista: Creating a Simple Sidebar Gadget Virtual Lab

After registering you can download a PDF that walks through the process of creating a manifest for your gadget. From there it’s a matter of giving the directory a name that ends with `.gadget` ( known as development packaging and seemingly implied not to be used for production ) or zipping / cabbing the directory and giving the compressed file a .gadget extension.

From there gadgets are deployed in true .NET ( and Java ) style…. XCOPY to C:Program FilesWindows SidebarGadgets. You simple create a component, add the .gadget file as the key file, set the directory and associate it to a feature.

So in short, yes InstallShield 2008 supports deploying SideBar gadgets.

WiX / WiXAware … thinking about the future

I’ve decided to spend yet another evening looking at WiX and I really do like it conceptually. While I am still disappointed that a lot of problems that WiX and other setup tools are solving aren’t being solved by the Windows Installer team instead, I am slowly coming to accept this as a fact of life.

I really like Votive’s ability to integrate in a solution, support MSBuild and show the XML in your WiX project. But I dislike it’s limitations in not having any kind of designer view.

I also really like the concept that WiXAware has where you can switch between a GUI and an Editor. The View Designer | View Code story is definitely the place to go. But I dislike the fact that it’s waproj isn’t MSBuild and it doesn’t support VS integration. I also dislike the fact that it seems to throw an exception just about everywhere I click and I dislike the fact that it doesn’t support fragments.

But what if Microsoft just threw a bunch of money at InstallAware and bought them? What if Microsoft was to tell Rob Mensching that he had a staff of developers and that they wanted to transform WiX into a full fledged open source enterprise installation authoring tool capable of competing with InstallShield toe to toe?

And what if all of this was to be targeted for Visual Studio Orcas so that when you bought Visual Studio you’d be completely covered for deployment?

The other day I was skimming through a Microsoft Learning Course… #4339 Upgrading from Microsoft VB 6.0: Deploying .NET Framework Applications. The course was very VDRPOJ centric and a lesson introduction claimed:

Unlike the traditional deployment which involves creating script-based setup programs, Visual Studio 2005 deployment uses Windows Installer to create installers which give you complete control over the installation process.

Wow, that’s a really bold claim to say VDPROJ gives you complete control over the installation process.

But WiX meets WiXAware meets Orcas….. now that could be one hell of a system. That could really get me rethinking what tools that I use. In fact, if it wasn’t for the fact that I live in Texas, that’s one project that I wouldn’t mind working on.

7 Months to publish 2 KB articles

Last year the Windows Installer team blogged about 4 upcoming KB articles. Now I understand why they published them as a preview, it’s taken Microsoft 7 1/2 months to publish just 2 of the 4 articles.

Yes, over 7 months. Man it feels like Office Space.

What could possibly take so long to write these? The first one about DEP is only 9 sentences.

The second one caused by cached MSI’s losing their digital signature is only 7 sentences and it doesn’t even go into explaining why the behavior occur. It simply documents a `work around` that tells the user to click Allow.

Now I know the MSI team has some very smart and capable contributors and leaders, but I can only imagine what must be going on behind the scenes within Microsoft that it takes 7 months to publish two simple KB articles. Now imagine trying to give us something we really need like XML search/write functionality.

It’s no wonder that they have seemingly abdicated the throne to WiX which can operate in the relatively unrestricted world of FOSS with nothing more then Jersey Mike’s sandwichs for funding.