Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Build an installer for .NET app that can run on Windows and OS X?

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

Equivalent of a Windows Service on OSX with Mono

like image 385
Rex M Avatar asked Aug 03 '09 16:08

Rex M


People also ask

Can .NET core run on Mac?

Running the app on a Mac Before you can run the app on your Mac, you're going to need to head back over to the . NET Core downloads page and install OpenSSL and then the SDK (or runtime) if you remember the difference from the first post.

How do I create a Windows Installer MSI .NET core WiX?

Adding a WiX setup project In Visual Studio, open your solution, and add a WiX project to it: go to the Visual Studio main menu and click File -> Add -> New Project to open the Add New Project dialog. Choose the Setup Project item in the Windows Installer XML node, specify the project name and click OK.


6 Answers

There is bitrock, which handles your target platforms but costs money

like image 25
ShuggyCoUk Avatar answered Sep 29 '22 07:09

ShuggyCoUk


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:

  • Your installer will have to detect previous/old versions and close/uninstall/migrate as appropriate. Both NSIS and WiX have mechanisms for this.
  • Your installer/app will have to be 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:

  • You will most likely want to ship a standalone application bundle, meaning mono will be bundled within your .app. This will add ~50mb to your distributable.
  • You will have to reference different versions of Monobjc to support OSX 10.4 and 10.5, you will need to configure your build to do this, as well as test both versions.
  • Make sure that your c# code isn't using Windows/.NET specific calls by running the Mono Migration Analyzer (MoMA) on your codebase.

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.

like image 176
anthony Avatar answered Sep 25 '22 07:09

anthony


http://www.openlina.com/

They deliver on the build once, run anywhere promise.

like image 34
Aneurysm9 Avatar answered Sep 29 '22 07:09

Aneurysm9


This may or may not be the answer you are looking for. If your application can survive in the Silverlight sand box, you may want to explore Silverlight 3.0.

Silverlight 3 allows your application to run outside of the browser on Windows and Mac.

Here's an example of setting it up: http://www.silverlightshow.net/items/Silverlight-3-as-a-Desktop-Application-Out-of-Browser-Applications.aspx

like image 40
Scott P Avatar answered Sep 25 '22 07:09

Scott P


To create an installer there is:

  1. NSIS - Free
  2. InstallShield - Paid

I do not know how know about Macs

Issues: Computer does not have .Net Framework

Solution: StackOverflow - The State of Linkers for .NET apps

like image 45
Nick Avatar answered Sep 25 '22 07:09

Nick


You could try BitRock's InstallBuilder. From their website:

BitRock InstallBuilder is a development tool for building crossplatform installers for desktop and server software. With InstallBuilder, you can quickly create professional installers for Linux, Windows, Mac OS X, Solaris and other platforms from a single project file and build environment.

like image 30
Druid Avatar answered Sep 27 '22 07:09

Druid