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

June 09, 2008

Upgrade to Windows Installer 4.5 with the Free InstallAware 7 Update

I couldn't help notice that InstallAware is updating their product for full MSI 4.5 RTM ( Not Beta2 like another well known Installation Tools Vendor ) and they aren't even charging for the upgrade:

Below is the text of the announcement:

InstallAware 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 InstallAware at www.installaware.com/msi45plugin.asp. Remember, this is a free update for all InstallAware users - trial or licensed.

Take a look at the new capabilities of InstallAware 7 with this free Windows Installer 4.5 Update:

"MSI Transaction" MSIcode 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 runtimes such as the Microsoft .NET Framework - thanks to new features in Windows Installer 4.5.

"Windows Installer 4.5" Application Runtime: Automatically install Windows Installer 4.5 on all supported platforms. Runtime installations can be complex, and MSI 4.5 is no exception. For instance, on Windows Vista, some hotfixes are required before MSI 4.5 can be installed - unfortunately they are not served automatically through Windows Update. Not to worry, because InstallAware seamlessly installs MSI 4.5 for you on all supported platforms, with a single click!

Unlike Windows Installer 4.0, MSI 4.5 is also supported on downlevel platforms such as Windows XP and Server 2003, so there is no excuse not to upgrade. Even if you are trying to install an MSI 4.5 package on an unsupported platform (such as Windows 98), InstallAware gracefully downgrades the package features and your installations will still succeed - even if you have chained multiple setup packages together.

Find out more about what makes InstallAware so good. As part of our Windows Installer 4.5 launch special, we'll give you an unconditional 20% discount when you purchase InstallAware by Friday the 13th:

www.installaware.com/msi45rtm.asp

using discount coupon MSI45. Your price is only $719 - this offer cannot be beat! What's better, the 20% discount applies to other extra's like floating licenses and 2 years maintenance, saving you up to $412!

Why suffer with former industry leading brands, or their copycat clones devoid of any innovation? InstallAware 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:

www.installaware.com/msi45rtm.asp

Don't delay - this Windows Installer 4.5 launch special is valid only until Friday.

Please contact me directly if you have any questions about this launch special - we always welcome your feedback.

Kind regards,

Candice Jones
Account Representative
InstallAware Software Corporation
336 Guerrero Street
San Francisco CA 94103-3332
415 839 5017

June 08, 2008

Digital Rights Management Stinks

I'm a little older and right of center then many techies that I know. That probably explains why it takes me a few more years to become annoyed about certain issues.

However, I now really agree with them: Digital Rights Management stinks.

It stinks to have to evaluate XenoCode Postbuild at home instead of at work because their program expects to phone home and my corporate firewall says hell no.

It stinks to have to use InstallShield offline activation because of the same reason. Of course, let's not even talk about highly secure environments where the xml fragment that initiates the offline activation is never allowed to leave the room.

It stinks to pretty much have any dependency that assumes communications ability with an external vendor that may or may not exist one day.

It would also really suck if Acresso 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 recommend someone purchase an InstallShield maintenance agreement. They really are pointless if they can take away functionality from you in an upgrade or worse they go out of business.

DRM on software just screws the people who are legal, not the people who don't care. After all,
IS2009 has been out for what, 2 days now and it's already been hacked and posted on the torrent sites. Go figure, you'd think that coming from Macrovision it would be a little harder then that. Then again, I've seen how easy it is to download and transform the stand alone build so I'm not sure why I would be surprised.

June 05, 2008

InstallShield 2009: Value Added Services???

Recently I read Windows Installer Expert Extraordinaire Stefan Krueger recently blog:


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-ons. On the other hand, you'd be in the company of Adobe (Adobe Reader wants to install Google Toolbar) and Apple(QuickTime wants to install iTunes, and iTunes wants to install Safari during update). InstallShield expert Christopher Painter seems to have similar objections.


I also noticed Rod Trent of myITForum tonight post:

If this won’t kill a product line, nothing will… Yahoo! and Acresso Announce Multi-Year Yahoo! Toolbar and InstallShield Distribution Agreement

http://www.myitforum.com/absolutenm/templates/?a=5068&z=71

Here’s a quote from the article:

As software companies face slower growth, the strategy focuses on options for them to generate additional revenue and provide new capabilities for their customers.

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.



Then this evening I received the following email from a reader:


From: Anon
Subject: Big Ball of Yuck

[
News Article]
Chris,

Wow... did you know about this back when you blogged about bundling crapware with installs? What a load!! I know they're spun off and looking for new revenue streams, but seriously...

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 "Forget the Yahoo Toolbar" [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. Unfortunately I couldn't talk about it due to an NDA. ( Well, technically it was just a good faith confidentiality agreement. I never really signed an NDA which is why I blogged about certain enhancements to InstallShield while honoring Yahoo!'s sensitivity 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.

InstallShield Stand Alone Build

Back when InstallShield 12 was released, Macrovision 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 SCM best practices that they weren't getting what they had paid for. After all, since when is a downgrade, an upgrade?


As a result, Macrovision listened to their customers and grandfathered certain customers with rights to use the SAB. However, with the release of IS2009, Acresso has gone back and revoked that right.



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.



1) I recently found a bug in the IS2008 SAB. 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 SAB.



2) If I can't upgrade my build farm to IS 2009 SAB, then there is no point in upgrading any of the developers because I won't be able to perform production builds.



This effectively means that both my support and maintenance contract is worthless in this scenario.



IMHO, I understand that TCB 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 SCM 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, Acresso is currently looking for a Product Manager for the InstallShield brand so perhaps that explains such a huge gaffe.


Ultimately Acresso will once again listen to their customers, or the customers will vote yes or no with their money.



I look forward to your comments and your poll answers.

June 04, 2008

Chicken and the Egg

MSI 4.5 is out, and it has a new feature that allows you to embed a custom UI handler inside the package and invoke it without needing bootstrapping setup.exe.

Pretty cool, right?


But wait, I see a Chicken and the Egg problem. How do you first get MSI 4.5 on the machine to use this feature? Well, with a bootstrapping setup.exe of course!

Hmmmmm

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?

Then of course who really wants to be writing a custom UI in C++? WinForms is so much easier. Hopefully DTF will be updated very soon to support this capability.

But wait, there is another Chicken and the Egg problem. How do you first get NetFx20 on the machine? Well, with a bootstrapping setup.exe of course!

Hmmmmm

Now, I know some will argue that adding a .NET dependency to the install is a bad thing, but WinForms really rocks.


Now InstallShield has a very capable bootstrapper, 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 MSI that we can just run.

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 MSI 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 MSI 1.0.

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.

May 28, 2008

Xenocode Postbuild: Bad UI or Intentional Deception?

I've been looking at application virtualization 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 ISVs will spend boat loads of money just to virtualize their package instead of spending fractions of that to hire quality setup developers to create properly behaving MSI's.

But anyways, my real annoyance came when I was playing with Xenocode Postbuild. I downloaded the eval and went to virtualize a simple winforms 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:



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:



This just seems sleazy to me and reinforces my perception that something just doesn't quite smell right in the virtualization market.

May 23, 2008

How DTF is going to help me become a better .NET Developer

I'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

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.

I started with a simple statement like this:

session.Database.OpenView("INSERT INTO `ListBox` (`Property`, `Order`, `Value`, `Text`) VALUES ('TESTPROP', 1, '1', 'One') TEMPORARY").Execute();


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.

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:

Database db = session.Database;
string sqlInsertTemp = db.Tables["ListBox"].SqlInsertString + " TEMPORARY";
View view = db.OpenView(sqlInsertTemp );
view.Execute( new Record( new object[] { "TESTPROP", 1, "1", "One" } ));
view.Close();


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:

ListBox listBox = new ListBox(session.Database, "TESTPROP");
foreach (Process proc in Process.GetProcesses())
{
listBox.AddToEnd(new ListBoxItem(proc.Id.ToString(), proc.ProcessName));
}


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.

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.

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.

PS- Does anyone have any suggestions on good books to read? Please, nothing too heavy... go easy on me.