Not all installers are created equal

| | Comments (5)

If you're really serious about deploying your application to Windows, then you should really be checking out the Designed for Windows program. Whenever you see one of those little stickers that say "Designed for Windows XXXX", that application has gone thru the application process and been logo certified. Almost everything about REALbasic's framework is already in compliance with these requirements, and the few places which aren't will possibly be resolved in the next release. So that means there's only a few things you need to do to make sure your application is certifiable.

The first thing is to make sure you're using the framework properly. For example, you shouldn't be using GetFolderItem when figuring out where to save and open files (unless they're support files) -- you should be asking the user. Make sure you're using the temp directory instead of trying to write temp files out to your application's directory. Test with multiple user installs. Things like that.

The second thing, which is a fairly major thing, is your installer. Your application must use an installer to be certified, and not all installers are equal. For instance, one popular installer is InnoSetup. People like it because it's free and it appears to do everything correctly. However, if you use it, you cannot get logo certified. InnoSetup does not support the All Users install (as far as I was able to tell) and it doesn't behave properly if the installer is run on an application that's already installed (if it behaved properly, it would prompt you with the install, repair remove options).

So far, the only installer I've found which allows certification "out of the box" has been InstallShield. I'm sure there are others out there, but you should be very careful. If the only thing that's holding you back from the Designed for Windows program, it's probably well worth the money to invest in a good installer.

Note, you need to purchase a code signing certificate from VeriSign in order to apply for the program.

5 Comments

Actually InnoSetup DOES support All Users, as ALL my installs use this. What might be part of the confusion is using the script compiler directly. I use ISTool to help author the script for me, so it makes things WAY easier.

As for prompting for update/repair/remove, I believe you are correct, although there may be an script extension for the uninstaller that does this I have have seen InnoSetup-based installers that do that (I just don't know HOW they did it).

Ah, interesting (about the supporting all users). I've always just mucked about with the scripts by hand. But I've seen a number of bug reports about not supporting it, so I also just assumed that it wasn't supported (however, it may be that the users reporting just didn't know about this feature, like me).

Yikes! Even the lowest level of InstallShield costs more than RBPro...

Yeah, it is a spendy bugger -- but it's also a one-time cost that you can use for any (or all) of your products. The code signing certificate is about the same cost I think.

I've been using the free version of Advanced Installer, though I have no idea if it builds packages that strictly comply with the Designed for Windows program.

I do know that it makes MSI files which correctly do the update/repair/remove. I don't think the free version can do the "install for all users" though.

As for using GetFolderItem, I store all of my app's data in:
C:\Documents and Settings\All Users\Application Data\appname

Leave a comment

Disclaimer

I'm currently an employee of REAL Software. My blog is mine. The opinions represented in this blog are mine as well and may not represent my employer's opinions. All original material is copyrighted and property of the author.

REALbasic® is a registered trademark of REAL Software, Inc. REAL SQL Server™ and Lingua™ are pending trademarks of REAL Software, Inc. All rights reserved.