I am surprised I could not find this question already asked, so if I simply missed it please notify promptly.
I need to write a very small, fairly simple application in .NET that will be downloaded by end-consumers and installed on their system. Silverlight’s sandbox model will not work – it has to be a full-on downloaded, installed executable.
Here’s what I know:
- I’ve developed applications which run in a controlled desktop environment – for example, an IT app that runs on a hundred internal computers.
- I’ve developed applications using Mono
What I do not know:
- How to create a flexible, robust installer that will work on a myriad of uncontrolled desktop configurations and environments.
- How to do the same with Mono targeted for Mac OSX.
- What are the common issues in installing a widely-distributed end-user application and how to mitigate them?
I am looking for the best resources to fill in my knowledge gaps.
Related
For Windows, consider Windows Installer XML (WiX). For OSX, you need to generate a .app bundle. Here is an example using the nant tasks included with the Monobjc project.
Here are some of the major issues you will face:
On Windows:
previous/old versions and
close/uninstall/migrate as
appropriate. Both NSIS and WiX have
mechanisms for this.
compatible with different versions of
Windows (XP, Vista, 7), and different
versions of .NET (2.0, 3.0, 3.5
eventually). Actually testing this is
one of the more tedious tasks you
face. I strongly recommend having a
handful of clean virtual machine
images around for this.
On OSX:
Upgrading:
You haven’t mentioned how you plan to offer upgrades. NSIS and WiX have the capability to handle upgrades. Make sure you have your build versioning scheme worked out before your deploy the initial version. On OSX, Monobjc can integrate with Sparkle.