To deploy .Net applications, there are two primary activities that must be accomplished. The application must be initially deployed (installation), and a deployed application must be maintained (update). The two Microsoft technologies offered to accomplish these goals are the Windows Installer and ClickOnce. The Windows Installer is a very powerful technology designed specifically to deploy software onto the Windows platform. For many developers though, the Windows Installer can be very challenging to utilize. In fact, there are many third party vendors competing with each other to simplify the developer’s interactions with the Windows Installer, each providing their own Windows Installer abstraction layer. While the Windows Installer is flexible and can accomplish most any installation goal, it lacks easy maintenance features (updating), comes with heavy technical resource requirements and expects a lot from the end user, most notably administrative privileges.
The challenges of application deployment strategies utilizing the Windows Installer, and the emergence of the web application combined to influence the creation of ClickOnce. With ClickOnce, Microsoft attempted to bring the deployment simplicity of a web application to WinForms and WPF applications. And to a large degree, they succeeded. For many applications ClickOnce does provide the best deployment strategy available. But it’s not for all applications, and because of the huge void in deployment capabilities between ClickOnce and the Windows Installer, many teams find themselves pushing the envelope of one or both technologies in order to accomplish their goals. For applications in that void, AppLife Update can add a tremendous amount of value to a deployment strategy.
AppLife Update is generally used in conjunction with a Windows Installer, though its flexibility does provide for the ability to initially deploy applications without using an MSI. Many of our customers adopt AppLife Update after first trying ClickOnce. Here are the primary reasons given for moving away from ClickOnce:
- Difficulty in moving applications. For developers who can publish directly the final deployment location, ClickOnce is very easy to use. But for teams who need to build at one location, and publish at another, ClickOnce is harder to manage. Development teams with QA and testing requirements also struggle with the same challenges in moving applications through their release process.
- Desire to install per machine. With ClickOnce, applications are installed per user. For organizations that utilize roaming profiles, this means that applications are often installed many times on the same machine.
- Need for side-by-side installs. With ClickOnce, installing different versions of an application on the same machine is challenging.
- Extensive installation requirements. While it is possible to install ClickOnce application prerequisites using an MSI, the ease-of-use that ClickOnce offers is compromised, and these applications often push other limits of ClickOnce, such as security requirements.
- Network Environment. Development teams whose applications target public audiences over the internet face browser incompatibility issues, plug-in requirements, proxy server challenges, the need for publicly recognized code signing certificate authorities, and security sandboxing issues. What’s worse is that initial ClickOnce testing usually passes with flying colors, but as the application use proliferates, costly support issues arise as users run into these problems.
When development teams incorporate AppLife Update into their application deployment strategy, they get:
- Flexible API / Extensibility.
AppLife Update is not a black box. The API is extensive and allows for application-specific manipulation of the update process, from start to finish.
- Versatile Hosting
Updates can be hosted on any server (file, ftp, web) and freely moved around to support varying deployment and testing strategies.
- Do anything during an update
Any updating activity can be performed during an update. ClickOnce replace files, but AppLife Update includes actions to perform registry work, config file manipulation, register COM, Start/Stop Services, execute MSI major, minor upgrades, patches, etc. There is even a dynamic code action where defined .Net code is compiled during an update build and executed during an update.
- Customized Look and Feel
The entire look and feel of the update process is customizable. Use the built-in updating interface, customize it, or completely replace it.
- Permissions Elevation
Applications installed into Program Files cannot be updated by limited users. For applications that target controlled desktops, this is a huge maintenance hurdle. By utilizing AppLife Update’s Windows Service to securely elevate permissions during the update, the application can update itself, even when launched by a limited user.
AppLife Update provides the functionality to quickly and easily integrate application maintenance features into a .Net application, bridging the application deployment gap between Windows Installer deployed applications, and ClickOnce maintained applications.