[Mono-dev] Win32 Gtk# Installers (Was: Re: C bindings VS C++ bindings (Gtk# vs. Kimono?))
wasabi at larvalstage.net
Tue Oct 16 14:51:40 EDT 2007
You misunderstand how merge modules work.
Merge modules, when included in another package, lose their identity.
They cannot install files which are shared by other packages. They can
not be versioned against each other.
Thus if you install FooBar 1.0 and BarFoo 2.0, two separate programs,
and both have included the merge module for Gtk+, then the Gtk+ must be
installed in a DIFFERENT LOCATION for each of FooBar and BarFoo. If not,
then one version replaces the other, and undoes the ref count maintained
by Windows Installer.
Merge modules are NOT FOR SHARED DEPENDENCIES. They are for PRIVATE
DEPENDENCIES. You will eventually hit this issue when you try to reuse
your merge modules between multiple applications: I did.
Microsoft recommends that you create a .msi file for each primary
distributable (Gtk, Gtk#, Mono, etc) and have the application
distributor build a bootstrapper which references these .msi files
independently. VS2005 has a setup project built in which does this: it
automatically generates a bootstrapper that installs .Net itself.
On Tue, 2007-10-16 at 09:13 -0700, Brad Taylor wrote:
> On Tue, 2007-10-16 at 10:46 -0500, Jerome Haltom wrote:
> > I spent a lot of time previously researching all this MSI stuff.
> > No, you can't do that. Merge modules might have been an answer, but
> > merge modules are not designed for dependencies. They are designed to
> > repackage files for a private installation.
> I don't think we need to develop a hard dependency chain for our
> installers -- We can simply create Merge modules (.msm files) for each
> of gtk+, gtk#, and Mono, and enforce the dependencies manually in a .msi
> build that wraps all three. In WiX, this meta-installer is less than 30
> I'm making progress splitting out Medsphere's installer sources
> into .msm files, and currently have the Gtk+ Runtime module mostly
> complete. I'll update the list when I get my WiX files complete enough
> to be included into Mono SVN.
More information about the Mono-devel-list