Issue in merging multiple VSTO projetcs into single MSI at runtime

Feb 13 at 1:41 PM
We are using Visual studio 2015 professional version for creating PowerPoint Add-ins in C#.Net.

We need to create an Windows application which can generate a single MSI at runtime from merging multiple PowerPoint Add-ins, that MSI can install multiple PowerPoint Add-ins with all prerequisites like .Net framework, VSTO, etc on client's machine.

We are using Wix# for merging our PowerPoint Add-ins but we have to install first all prerequisites manually before installing the Wix# generated MSI.

We follow the below process:
  1. First we publish our PowerPoint Add-ins by using Visual Studio 2015 "Click Once Deployment" and set some prerequisites like VSTO runtime, etc.
  2. We merge these multiple Add-ins at run time using Wix#.
But we are facing problems with generated MSI:
  1. After merging add-ins, generated MSI blocks prerequisites installation which sets using Visual Studio 2015 "Click Once Deployment".
  2. How to install Prerequisites from generated MSI
  3. How to set Publisher/Manufacturer for MSI using Wix#
Please help how to create MSI at run time which can install first all prerequisites and then PowerPoint addins one-by-one.

Thanks in advance.
Coordinator
Feb 15 at 2:23 AM
Sorry, The project has been moved to GitHub: https://github.com/oleg-shilo/wixsharp

Thus it's too easy to miss a new post here.

Your questions:
  1. All MSI installs are atomic. If one is started another one has to wait. It is an expected MSI behavior.
  2. You cannot install prerequisites from msi (MSI constraint). You will need to have your prerequisites as a separate msi and invoke it before invoking your primary msi. If you have any sort of a bootstrapper application them you can do it programmatically from there with Process.Start. If you don't have any GUI you may want to use MSI/WiX bootstrapper for this. See Wix# Bootstrapper samples.
  3. See profuctInfo sample:
project.ControlPanelInfo.Manufacturer = "My Company";
Feb 17 at 10:29 AM
Thanks for your response.

Actually we are combining VSTO setups (.exe files) into a single MSI using Wix#.

We set all prerequisites in the above .exe before merging them into MSI.

That exe files check/install all prerequisites before installing addins but after converting into MSI using Wix# they fail to install prerequisites.

I think there is some probleming in converting VSTO addins into MSI.

Please suggest how to merge multiple VSTO addins into a MSI.

Note : we install addins by excuting .exe files using Process.start() method with the help of custom actions of Wix# project
Coordinator
Feb 19 at 9:59 AM
The challenge you are facing is not Wix# specific but an MSI one.

> We set all prerequisites in the above .exe before merging them into MSI
I am not sure what do you mean. MSI merging is only possible for MSM (merge modules). Most likely you meant something else as the merging technique is not applicable to exe files.

> we install addins by excuting .exe files using Process.start()
It means that it isn't any different to just double clicking in the explorer. However if you schedule your exe execution for the stage after your combined msi installation sequence is started your exe setup will always fail for the reason #2 in my previous post.

From what I am gathering your scenario is consistent with the bootstrapper use-case. Boostatrapper is a "shell" application that invokes multiple embedded msi or exe setups in a sequential order.

WiX does offer support for bootstrappers and you can use Wix# to build one (see Bootstrapper samples).

Though sometimes (depending on the deployment complexity) a custom bootstrapper of a "Hello World!" complexity is also a valid option.