Get ready, because we’re launching.

It’s been a while since the last time we wrote something here, almost 5 months. We have been quite busy working on our products :)During this timeframe, we shipped InstallAware 7, the latest and greatest version of the industry’s premier setup authoring tool; and also a new beta for our exciting WiX IDE, WiXAware 2.0. But that’s not all!I believe this lack of posts and activity on our blog has been really worth it, because not only did we improve our products and launched two new major versions, but we’re now also announcing support for the upcoming version 4.5 of the Windows Installer engine! This makes us the first installation vendor to support Windows Installer 4.5, the same way we’ve been the first to support SQL Server 2005, .NET 3, as well as .NET 2.0. Unlike some other vendors (you know who you are), we’re making these updates available free for everyone just days after Microsoft publishes them 😉 So we’ll be releasing the free update for Windows Installer 4.5 as soon as a Go-Live license from Microsoft for it becomes available.

We’ve already built the Windows Installer 4.5 runtime for InstallAware’s Application Runtimes designer, as well as a new plug-in for leveraging new Windows Installer 4.5 functionality. As soon as Microsoft lets vendors redistribute the new Windows Installer 4.5 runtime, you’ll be only a few hours from taking advantage of all its new features, and start exploiting the much anticipated Chained Transactional Installs!So, what are Chained Transactional Installs? It’s pretty self explanatory, really. You can now officially chain multiple MSI installations one after the other, as part of a single atomic operation. If there is an error in one of the chained installs, or the end-user cancels the installation someplace in between, the entire transaction can be rolled back in a single operation, returning the computer to the same state it was in before the entire transactioned installs began. Of course, if everything is kosher, just commit the changes normally, and all changes made to the system are finalized in a single pass.

MSI Transaction Example Usage

InstallAware has always provided the most advanced bootstrapper technology of the Windows Installer industry, for instance you could already chain multiple MSI installs as part of a larger setup, monitor and natively display their progress in your master setup dialogs, and so on ever since our first release almost 4 years ago. And now, with the engine level fortifications Microsoft has made to Windows Installer 4.5, InstallAware further enhances the reliability and resiliency of chained MSI installations. The good news is you do not have to make any major changes to your existing setups! Just add two lines of MSIcode leveraging the new MSI Transaction plug-in, creating transactioned installation blocks around your runtimes and/or any other MSI files that you are installing, and you’re set!There’s no need to worry about compatibility issues as packages and patches authored by previous MSI versions are fully supported by the MSI 4.5 engine. Also, packages targeting MSI 4.5 contain some new tables and actions for the new features, but when you run an MSI 4.5 package on an older engine, such as MSI 3.0, everything will still work smoothly by ignoring the new tables/actions. Of course, any new features and functionality based on MSI 4.5 won’t work, but your setups will still install properly without throwing unwanted errors. Our new MSI Transaction plug-in won’t fail either when MSI 4.5 is not available, instead it returns a descriptive error code back to your MSIcode script, letting you handle the condition as you see fit (for instance, by forcing the installation of the new Windows Installer engine, or by discarding transaction support).I was quite amazed by the speed improvements during installation. It’s much faster and much more stable, without strange failures during installs and unexplained messages even at this beta stage. Just imagine what the RTM version will be like, if the beta “flies” like this!Currently this beta version of the MSI 4.5 engine runs on most recent versions of Windows, starting with Windows XP SP2 and Windows 2003 SP1, and of course including Windows Vista. While MSI 4.0 was not supported on older platforms, Microsoft is now making this “down-level” support available for MSI 4.5, a welcome improvement. MSI 4.5 will be embedded into Windows Server 2008 (Codename Longhorn Server), and it is planned to be included in Windows Vista SP1 as well.

MSI 4.5 will be available as a stand-alone update from the Microsoft Download pages. If you want to give it a try, you’ll have to register at Microsoft’s Connect page, where the beta is available. After completing the registration process you’ll be able to download any necessary files MSI 4.5 needs to install, as well as updated documentation. Please note that we can’t redistribute runtime files during their beta stage because this is prohibited by Microsoft, but if you already have the MSI 4.5 runtimes, just drop us an email and we’ll make our new runtime installer package and the new MSI Transaction plug-in available for you, free of charge 🙂

Windows Installer 4.5 Runtime Installation MSIcode

Of course, InstallAware’s new Windows Installer 4.5 runtime takes care of installing this update for you in just a single click. It’s actually a fairly complex process on Windows Vista. Vista features a new update mechanism, called the Windows Update Stand-Alone installer, along with a new kind of system update file format. Updates are no longer served as independent EXE’s that we were used to working with on the down-level platforms. The bug with the Windows Update Stand-Alone installer is MSI 4.5 cannot be silently installed, complicating the delivery process and ruining the end-user experience. A hot fix for this bug must be installed beforehand (unfortunately, it’s not automatically pushed to client machines through Windows Update). The good news is, our new Windows Installer 4.5 one-click runtime install correctly handles this case and installs this hot fix when necessarySo you’ll have unsurpassed reliability and deliver your end-users with the best installation experience, in the good InstallAware tradition.Once again we’re bringing you the latest technologies, beating any other vendor to it!Keep watching this space as we’ll have more helpful tips, how-to guides, sample scripts and other time saving tricks posted here regularly (no matter how aggressive our product release schedule is). I’m here to make your time spent with InstallAware more fun and enjoyable!

Panagiotis Kefalidis
InstallAware CCP – DataFire Software, Greece

Elephants and User Interface Design

I’ve always had a fascination for antique software. Perhaps its because I miss the simplicity of the Windows 3.1 days…and its incredibly simple WinAPI, which could be mastered in its entirety by a single developer. That was when I first started Windows programming. My tool of choice back then was Borland Pascal with Objects 7.0, which is still available today in incarnations as CodeGear Delphi. Even though InstallAware also uses C++ and C# for some of our projects, Delphi is still my personal tool of choice today. But in 1992 we didn’t have even Delphi 1.0. So software was written the hard way…lack of visual designers, no matter how simple the API, is always a pain.

But why the fascination for antique software then? To be honest, I’m not really sure. Maybe I’m just into antiques after all 🙂 I must admit I get a huge kick out of building and maintaining antique Windows boxes. Around 2001 (wow!, even the turn of the century is now almost a decade old), I had to collect real antique hardware to build an antique Windows box. An ISA video card, ISA sound card, ISA modem, PS/2 keyboard and mouse, along with an old processor were necessary. Otherwise, Windows wouldn’t recognize your devices, plain and simple. Today, thanks to the “virtues of virtualization”, one doesn’t need to shop around for old (and hard to find) hardware anymore. Of course, VMware has been around for a while…delivering near-native performance for virtual machines. VMware owes most of this performance to its native drivers for guest operating systems…which provide high performance video display, for instance. However the one drawback of this approach (which really doesn’t matter in the real world anyways) is that if VMware doesn’t have drivers for your operating system, you’re stuck. So even though one of the first things I tried on VMware was to build a Windows 3.1 virtual machine (on top of good old DOS 6.0), it had no sound, 16 color graphics, and 640×480 resolution only.

Virtual PC to the rescue! Virtual PC takes a different approach – instead of implementing custom drivers for video, sound, and so on – it emulates old cards, cards that are old enough that Windows 3.1 recognizes them. The real-world drawback is that Virtual PC can be slower because its emulating old hardware, instead of passing calls directly to the underlying hardware. However with Virtual PC, I was able to build a Windows 3.1 virtual machine that had high color display, sound, networking – practically everything! I was even able to play old DOS games like Flight Simulator 5 (the first version of the family to support textured graphics and digitized/synthesized sound). It was antique software heaven 🙂

Even today, I maintain a fully-configured Windows 3.1 virtual machine, ready for usage at a moments notice. I’ve installed a full set of browsers, email clients, FTP clients, compilers, IDEs, Office programs, games, and what not. I’ve also got some real gems that my contemporaries from that era will recognize – After Dark screensaver (can anybody really forget those flying toasters?), Stacker disk compression (the first company that *I* know of to win a patent infringement lawsuit against Microsoft), Norton Utilities and PC Tools, just to name a few. Watching PC Tools or Norton defrag the hard disk in native DOS mode…moving all those character-drawn blocks around…still looks more convincing to me than my native Windows defrag tool 😉 You *know* the thing has direct access to hardware and is *making full use* of that privilege 😉

Working in this virtual machine is very refreshing in many ways, and contains invaluable lessons for software development from a historical perspective – you get a broad overview of ideas that survived, and those that failed. And maybe the ultimate lesson is the realization that nothing has fundamentally changed since those days in the computing world. Sure, we now have fancy graphics cards, jazzy on-screen effects, way more processing power – but ultimately, in your day-to-day use, you still have the same email client, the same word processor, and the same spreadsheet; which require direct keyboard input, learning the program, and regular crashes. Sure, Windows 3.1 did crash a *little* more frequently at the kernel level, but most real-world software seems to be equally unstable these days. About 30% of the time I open Internet Explorer 7, it hangs. Vista, despite dramatically multiplying resource requirements and reducing performance thanks to its DRM focus, is even buggier – every time I view an MSN video in the browser, the Desktop Window Manager (DWM) crashes! Makes you really wonder if we’d all be better off reverting to Windows 3.1 – at least, it would run at lightning speed on today’s machines 😉

But what about the place of elephants in user interface design? Enter OS/2. After perfecting the Windows 3.1 antique VM, I decided to take the challenge to the next level – another contemporary of the Windows 3.1 times, OS/2. I had never actually used OS/2 in the real world – my only memory of it was drooling at a high-school demo of it (I lacked the hardware capable of running it at the time). So I soon found out that OS/2 also ran just great under Virtual PC…and had several versions of OS/2 virtualized 🙂 This is where the elephants come in. OS/2 had some “artistic” elements in its user interface, namely elephants in wizard screens:

Yes, IBM indeed built a product with this sort of “artistic” license 🙂 The elephant even changes its pose on the different screens! How’s that for a user interface concept?

In retrospect, its interesting to note that OS/2 didn’t survive, and Windows 3.1 did (although, we’ll never know how much of that owes to Stacker-esque business tactics on Microsoft’s part, and how much to the elephants). Its more interesting to note that despite dramatic improvements in hardware performance, the way you use the computer today hasn’t really changed – and nor has its reliability. The user interface still employs the same metaphors from the Windows 3.1 era – windows (doh!), menus, context menus, buttons, more menus, keyboard input, and so on. I even find myself craving the ugly Windows 3.1 “window themes” – if I could find a skin like that for my current Windows, I’d use it in a heartbeat! I’m not so sure Vista’s maximize/minimize buttons are all that better. Ultimately, what’s the *most* fasctinating to me is, while people debate whether Vista is worth the upgrade from Windows XP or not, they don’t even realize that in their day-to-day usage, even XP isn’t all that different from trusty old Windows 3.1 😀

Well, I just got my hands on a copy of Borland C++ 3.1 for OS/2. Its time for some more antique software fun! I was actually thinking of taking the LearJet on a spin in the latest Flight Simulator 10…but seeing that it runs even slower than how fast Flight Simulator 5 ran on its *original introduction*, I’m really thinking older might be better 😉

My Good Friend Anthony

Until recently, I was very fond of British Airways. They have awesome full-flat beds in business class, as well as nice lounges where you can wine and dine yourself to your heart’s content. Sure, their staff could be friendlier – I once had an airline attendant “quiz” me on the location of the nearest security exit after the “security presentation”. I should have asked her if she would like me to blow in the vest as well 😉 But overall, it was good value.

Until recently. The last time I was flying, British Airways lost my luggage. Needless to say the love-hate slider between myself and BA made a little more progress towards the hate end that day. Brilliantly, I had also put my cell phone in the suitcase, which was also lost now. The first thing I did out of SFO was to buy a new temporary cell phone. I gave BA the number so they could keep me up to date on the “property irregularity report”.

The next day in the middle of an important meeting, my temp phone rang. I excused myself, saying I just had to take this call – really didn’t want to miss it if it was the airline. So the voice at the other end spoke:

“Anthony?”

“Um…excuse me, who?”

“Is Anthony there?”

I wished so badly for them to be calling from BA. I “figured” maybe she has the wrong name or something:

“Where are you calling from?”

“??? San Francisco!”

Turns out it was the wrong number, plain and simple.

Sadly, I did not get a call from BA for the remainder of that day (even though I had been promised one). However, I did get a call from Anthony himself 🙂

“Hey dude…have you been getting calls for Anthony?”

“Yes.”

“That’s me.”

“OK…”

“Look dude, I change phone numbers a lot, and I move around a lot. If somebody calls me, tell them you don’t know me, you don’t know who I am, you don’t know where I am, and you don’t know my new phone number. Just tell them you don’t know anything about me and hang up.”

WOW! Now this was entertaining 😀

“Man, how would I know who you are or where you are anyways?”

“OK thanks dude, I gotta run!”

As Anthony had predicted, a lot of people did try to get in touch with him. There were lots of calls that started like this:

“This is not a sales soliciation. This call contains important information about your account…”

There were also some strange text messages:

“Im home gogo ?!gangsta go da rnb thug!”

(Don’t ask me what that means – although I imagine Anthony might know)

Overall, during the course of the next weeks, I held on to the phone just to see what else I might find out about Anthony. I found out his last name through a friend who called, as well as the numbers of some of his friends. But Anthony himself remained elusive, even though I kept getting lots of his traffic 🙂

And BA? They were in the process of actively losing my luggage when I made a trip to SFO two days later. My bag was sitting right there at the terminal and for some reason, they had not scanned it upon arrival. The unhelpful staff were now apologetic. I guess that’s it for flying BA and their business beds 😉

Braga and the Kitchen Fetish

I’m quite a Star Trek fan, and this post is about an interesting pattern I have seen emerge in Star Trek shows (and a spin-off by one of the producers, Brannon Braga).

Next Generation was discontinued at the peak of its popularity (for reasons unknown to me). For a while the only Trek on the airwaves was Deep Space Nine, which took place on a space station, and often criticized for the lack of exploration. Voyager returned to the exploration theme – and also was the debut of what I call “the kitchen fetish“.

A regular character on Voyager, considered by most to be highly annoying, was Neelix. Neelix was a strange little creature but he did spend a lot of time in the kitchen. A lot of boiling pots, bubbling mixtures, pans with burning oil, near-miss fires, and delicacies which turned out to be not so well-aligned with the taste buds of the unexpecting explorers from the Alpha Quadrant were a staple of the show. Often times, Neelix‘s taste in food was horrible for the crew of Voyager – except when he was temporarily merged with Tuvok, the resident Vulcan, and seasoned his recipes with Vulcan logic for one short episode. Sadly, the need to conserve power made replicator usage a luxury on Voyager, and the crew had to deal with the Talaxian, and the viewers got to see lots of the kitchen.

Enterprise, the ill-fated show, perhaps to avoid criticisms like those against Neelix, had a completely off-screen chef. The chef was never visible in any episode (but viewers still complained that Phlox, the doctor, was too much like Neelix and equally annoying). Enter the series finale of Enterprise. Nearly the entire episode took place in the till-then inaccessible kitchen of Enterprise. The chef was actually substituted in by Riker from the Next Generation, chatting with the Enterprise crew thanks to the blessings of holodeck technology. Riker was listening to what the crew had to say about Archer and everything else that’s going on, whilst giving them instructions on how to knead pizza dough (and getting a bit curt with his instructions every now and then). It was the return of the kitchen – and with a vengeance.

After Enterprise was over, Braga started a new show, Threshold. I very much enjoyed Threshold, just like the Star Trek series. Threshold even featured Brent Spiner, more commonly known as “Data“. Threshold dealt with a very interesting alien invasion scenario – where the aliens don’t actually send any particular member of their species to Earth, but instead a probe that manipulates all DNA on the planet, and starts converting everyone into their own species. In the very first episode of this new, and also ill-fated show that saw only one half season, the probe makes its first contact with humans on board a ship out in the Pacific Ocean. The very first scene of this very first episode takes place in…well, you guessed it, the kitchen! Pots and pans ablaze, broth bubbling, once again we start off with an extensive kitchen panorama.

Don’t get me wrong – I love kitchens. A kitchen has always felt to me like the coziest place in any home, and is full of savory anticipation of taste bud nirvana. I just find it very interesting that the kitchen theme has emerged so frequently in shows produced by Braga.

There is also another recurring Braga theme…which I will talk about in my next post, so stay tuned!