Dev Chair : The Vista Tax

On the other hand as a .Net software developer, Vista is both a blessing and a curse. I want every single Windows user migrated to Vista as soon as possible because having the .Net framework included as part of Vista's standard installation is a very big deal. This means that application installers will no longer need to check for the presence of the .Net framework or provide a method to automatically download and install it if absent. This is a huge time and effort savings for the user as the framework is a large download. Also some users are turned off by the mere idea of downloading yet another component in order to run an application in XP. With the framework part of the OS, users will have one less thing to worry about.
Further, version 3 of the .Net framework contains a number of new technologies that are very useful for developers. Windows Communication Framework (WCF) provides developers many tools to incorporate communication protocol and web services in their applications quickly and securely. The Windows Presentation Framework (WPF) will further allow developers to write UI code in more abstract, and most importantly, testable fashion.
But, and there is always a but, Vista's improved security also brings along the UAC. To regular users, UAC will probably just another obstacle in their daily computer usage. But to developers, UAC presents a whole new dimension of complexity with regards to application installation and user interaction.
In an ideal world, an application running on Vista will only require administrator access/permission during the initial installation. All subsequent usage will be allowed even with the lowest user access level with the minimum amount of UAC intervention. If the application is relatively straightforward and does not have legacy dependencies such as COM components then just copying files to the Program Files directory should work fine. If legacy dependencies exist then UAC will kick in during the installation process and its effect can be different from what might have been expected. Microsoft acknowledges this is a complex issue and has a comprehensive range of MSDN documents detailing this topic. But there are infinite scenarios in real-world deployment so each developer must go through their existing installer with a fine-toothed comb to ensure the user experience is smooth and pleasant.
All these assume that the installer is created using Microsoft's own MSI technology which provides extended capability over other installers such as NSIS or Inno Setup, because MSI runs as a Windows service in Vista. This allows 'deep' access to the OS without triggering UAC as one would with non-MSI based installers.
This presents a dilemma to developers, such as myself, who currently do not use MSI. Should I spend time modifying and testing the existing installer so the user experience in Vista is optimum -- a process with an unknown volume of work involved -- or should I convert completely to MSI to take advantage of the deep hooks MSI provides in Vista; even if that means starting completely from scratch?
This is just one of many issues that developers need to grapple with when delving into Vista. I am sure I will find out more as I continue to sink deeper into Vista compatibility in the near future.












Comments
4
Subscribe to commentsLordDaManJun 5th 2007 11:55AM
A couple things here:
WPF and WCF are both part of the .net 3.0 runtime, which is available on XP
The comments on MSI are very misleading. MSI has always been a part of xp. It's been a part of every version of windows since 2001. What vista has is an updated version (which has been back ported to XP) with a way to bypass UAC warnings for certain types of installs. You have to design the installer against that (it's a few extra tags), since using any other version of MSI will trigger a UAC warning.
Also NSIS has support for vista and UAC now
Alex HungJun 5th 2007 12:08PM
@LoadDaMan
You are right about the WPF and WCF. My apology.
On the MSI, I did not imply it is Vista only. Just that the version comes with Vista has deeper hooks than other non-Microsoft installer technology.
For NSIS supports for UAC, is this what you are referring to?
http://nsis.sourceforge.net/UAC_plug-in
It is still in alpha stage so I cannot recommend *anyone* to use it for production software.
LordDaManJun 5th 2007 3:40PM
What exatcly is deeper hooks? You can do teh same things witha good 3r dparty system as you can with microsoft. the only real differnce is window sinstaller is part of the os
As for NSIS
http://nsis.sourceforge.net/Docs/Chapter4.html
Look at section "4.8.1.32 RequestExecutionLevel". That's UAC
Alex HungJun 5th 2007 4:21PM
"You can do teh same things witha good 3r dparty system as you can with microsoft. the only real differnce is window sinstaller is part of the os"
That's exactly my point at the end of the article. I can certainly have the same capability with 3rd party system but MSI provides a lot of built-in functionality that make life easier to deal with UAC.
And setting execution level at the beginning of the installation process is just one of many aspect required for adapting existing installer for Vista. What about the repair process or Advertising? MSI allows both without UAC elevation out of the box, whereas extra work is needed for 3rd party system. In fact, Advertising is not possible without MSI running as an OS service.
Again, the question for developers is whether to spend the time on the system they already know (NSIS, Inno, InstallShield, etc.) or convert to MSI which requires starting from scratch.