June 09, 2008
Upgrade to Windows Installer 4.5 with the Free InstallAware 7 Update
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
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???
I also noticed Rod Trent of myITForum tonight post: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.
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: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.As software companies face slower growth, the strategy focuses on options for them to generate additional revenue and provide new capabilities for their customers.
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
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
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?
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
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.