This page is likely outdated (last edited on 01 Oct 2009). Visit the new documentation for updated content.

Windows MSI

NOTE: I make lots of assumptions about things I do not fully understand (C stuff). Please help me figure out what we need and what we don’t need.  :) - jpobst

One of my goals for Mono 2.8 is to have a completely new .msi (the Windows standard) based installer for Windows.

Currently, our Windows installer is not .msi, and is bloated with all kinds of things that don’t really make sense to ship on Windows.

Table of contents

Proposed Changes

Use MSVC instead of gcc to compile native code

This will require vcproj files for all the native libraries/executables. This will also require redistributing the C runtimes from MS. We can either require admin privileges and install them into the machine side-by-side cache, or install them privately to mono.

http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx

Use eglib instead of glib

This is the first step to not requiring cygwin. Also, the code produced by VC++ is likely better tuned for running on Windows.

Do not ship the 1.0 profile

This is simply a Mono 2.8 change. The 1.0/1.1 profile is no longer supported/shipped after Mono 2.6.

Do not ship Gtk#

We should modify our “Gtk# installer for .Net” to also install to the Mono GAC instead of shipping a second copy with Mono.

Note: There needs to be some work done with regards to ensuring Gtk# picks up our version of Gtk+ instead of the one installed with Pidgin, Inkscape, Miro, etc. Currently, the first one in PATH is used.

Strip out things that not many people use

   
IKVM Available here
Boo Available here
NUnit Available here
IPCE Available here
NAnt Available here
embedding stuff I’m not sure what is embedding stuff, and what is just leftovers from the build process. I am thinking stuff like .h, .def, .lib, .a, .la, etc..
class library documentation I don’t think monodoc has ever worked on Windows? Developers can use the online documentation. Note that MD for Windows also ships with this documentation for use in MD.

What GNU-ish(?) stuff do we still need to include?

I don’t know a lot about this, but I guess we need either eglib or custom versions of:

  • pkg-config
  • gettext?

Conclusion

With these changes, I think we can get a learner, meaner installer that is .msi-based. My current estimation is we can get the installer under 30 MB. Currently, it is 75-80 MB.