WIX Office installer not uninstalling Plugin - plugins

I have created a WIX Install MSI file for my Office Outlook Plugin. Everything runs fine however when i uninstall it through add/remove programs everything is removed except for the Plugin in Outlook. It runs but gives errors because the other components are now missing. How can I get it to remove it without going to Outlook and removing the plugin manually?
I have added the "RemoveFolder" tag in the XML which has no effect.

I'm guessing that you are doing some kind of active setup trick to do HKEY_CURRENT_USER registry propogation. I'd suggest not doing this and instead register the extension in HKEY_LOCAL_MACHINE. This way when the uninstall runs it can access all of the components that need to be removed. There are gotchas in terms of different patch versions of different versions of office and how they behave in terms of supporting per-machine registration of AddIns. Details can be found in blog articles that I've written over the years titled VSTO lessons learned.

Related

Creating an MSI with Installshield

I have followed the following guide to try and create an MSI to deploy a VSTO add in for Outlook. https://msdn.microsoft.com/en-us/library/cc442767.aspx?f=255&MSPPError=-2147217396
I have carefully followed this guide on two occasions, ensuring in particular that I placed the registry keys in every place I can imagine they would be need to be in order to be detected.
The MSI is created successfully and installs successfully also, the problem is that when I run Outlook after the MSI is installed, Outlook does not recognize the Add In and load it.
If I use Click once to install the add in it is recognized by outlook without any issue. The problem with that is that we want to install the application silently using SCCM and clickonce cannot be deployed silently.
What could possibly be going wrong?
The issue in this case, was that the guides code for installing the prerequisite "Visual Studio 2010 Tools for Office Runtime" did not work properly and the prerequisite was not installed.
Any user that needs to run the add in will need the VSTO tools from this link installed
https://www.microsoft.com/en-GB/download/details.aspx?id=48217
Hopefully this will be of some help to anyone else
EDIT: For anyone in the UK - The registry entry "LoadBehavior" must be spelled exactly as it appears here. I used the UK spelling "LoadBehaviour" and it was the sole reason my install was not successful. I was held back for several days due to this.

Umbraco CMS: Manual Installation

I am using Windows Vista Ultimate and I want to install Umbraco CMS, with which I have no previous experience.
Common installation methods i.e. Installing either via Microsoft Webmatrix or Web Platform Installer didn't work for me. The former is for 7 and 8 versions of Windows and the latter downloads all installation files but fails to install. That is it shows "Installing ..." dialog for over 3 hours that makes me to forcefully end the installation. So all efforts have to be done from scratch (including download of the installation components using Web Platform Installer).
Is there a way to manually install Umbraco without the help of Platform Installer? I have downloaded seperately the files needed for Vista(e.g. Umbraco 7xxx.zip,Powershell 2, ASP.NET MVC, etc.). I don't see any executable in the package for Umbraco. There are just DLL's which I don't know where to copy to, as well as many aspx and ascx files that I don't know what to do with.
http://our.umbraco.org/contribute/releases shows the latest and all other available umbraco releases.
Under the 'Current' heading, you will find links to the most recent stable release detail page where you can grab UmbracoCms.X.X.X.zip which are all the files you need to go through the process manually.
One of the absolute best things about umbraco is that it's so easy to spin up a new isntall this way!
Important! Before you unzip - be sure to right-click the .zip file and open the properties page.
There will be an option to "Unblock" - be sure to click this or you may well experience issues with the dlls.
Unzip these files to where your webroot will be, set-up your IIS site and open in your browser - umbraco will automatically pick up that you need to do 'the install' and take you through a few simple steps that set-up the database and your admin credentials. There are no exe's or installer files - it's all embedded, more-or-less, in the site.
A good practice is the remove the [/install/] folder once you've gone through these steps.
Umbraco has some installation documentation here if you want to see all the various ways and steps available to install an umbraco site. -I prefer the .zip way described above, but you can also go the NuGet route too.

VSTO Outlook Add-in referencing external libraries fails

I'm working on a VSTO add-in for Outlook, versions 2007-2013and minimum .Net version is 4.0. In my project I have a couple of referenced libraries. When I deploy the add-in via MSI (built via Wix) the add-in itself is loaded into Outlook but, the referenced libraries are not available.
It works fine on my development machine so I'm assuming it is a trust issue of some sort. I am uncertain as to what needs done to have the included libraries themselves be trusted. Any help is appreciated.
Are you using VS setup project for addin deployment? If so, you might want to try
Right-click setup project icon => Add => Assembly...
to add your external libraries.
Regarding the trust issue, please take a look at these articles on MSDN. Inclusion list might also be helpful in your case.
Also, to test deployment on your development machine, I'd suggest you clean your project/solution first
Right-click Project/Solution icon in Solution Explorer => Clean
then deploy and install your addin onto your machine.

Comprehensive installer solution for solution targetting multiple platforms

I am developing an Outlook plugin solution that involves the plugin itself and a windows application working in tandem.
The plugin targets multiple versions of Outlook - 2007, 2010 and 2013.
The windows app uses different libraries for x86 and 64 bit processors.
Of course there are dependencies of both the plugin and the app.
In addition to pure installation, I would like to make automatic updates possible. It could be something as simple as custom code in the windows app to check for updates in a predefined location. But I would like to know my options.
The solution I have in mind right now, and which I would like to ask the SO community to evaluate is as follows:
Separate Windows Setup Projects (producing MSI files) for each combination of application and configuration (This could be as many as 8 different msi files)
One common bootstrapper project, detecting current system configuration and installing prerequisites and selected msis.
MSIs would not have prerequisites embedded in them, only the uber-installer/bootstrapper would have those.
Am I missing something? Is this solution viable? Are there third party alternatives to Windows Setup Projects that would make my life easier? Full featured Install Shield maybe?
In case this actually is helpful for someone, the solution I went with is the incredibly customizable installer solution: InstallMate 7 by Tarma.
You can find out more from their website, but the features that got me are:
Built in support for x86 and x64
Customizable prerequisites
Stand-alone update tool also provided by Tarma, which simplifies
automatic updates a lot.
PRICE! Forget about spending 5K on similar features elsewhere.

Deployment of NPAPI plugin with minimal user steps

Situation: I've already written an ActiveX control for my IE users which works perfectly. I build the .ocx, CAB it up, sign it, and put it on the site with an EMBED tag. Users load the page, the yellow bar shows up asking if they want to install it: all they have to do is click it, and we're off.
Now I need to build support for FF, Chrome, and Safari (on Mac). From my research, NPAPI is the way to do this, and Firebreath is supposed to make it easier. But from what I have read, deployment is not so easy. Windows users would have to run "regsvr32" on a DLL (which none of my web users would actually do). I have no idea what would happen on a Mac. I believe the user has to copy it to a directory like /Library/Internet\ Plugins/, which is also a non-starter for deployment. Firefox users would download/run an .xpi. Chrome is supposed to run a .crx.
Does anyone out there have experience with this? How do you do a easy-for-users-to-run deployment of an NPAPI plugin for the other big 3 browsers?
This is a question that is raised a lot by FireBreath users, so it's probably about time I responded in more detail on a forum that is easier to find than the project google group.
First of all, to clear up the regsvr32 thing, FireBreath does indeed support "self registering" for all browsers; that means when you call regsvr32 it installs registry keys not just for IE but also for NPAPI browsers using the methods linked to by DReJ (+1 for that info, btw, thanks. Many don't know where to find it).
However, self-registering DLLs is highly discouraged in the installer world and by Microsoft. There are a lot of reasons for this. You've done a pretty good job of summarizing the other install options in your post; You can use a .cab on IE and a .XPI on firefox, but of course those don't help you on other browsers.
The method recommended by the FireBreath team (which I lead) is to use an MSI installer for all browsers. Personally, I dislike having things work differently on different browsers for an install, so I use javascript to detect the presence (or absence) of the plugin and then prompt the user to download and run the MSI installer.
FireBreath has "built-in" support for building MSI installers with WiX. If you install WiX 3.0 or later on your machine and re-run the prep script it will create a _WiXInstaller project that will build a basic MSI to install your plugin for all browsers as part of the Visual Studio build process. You can modify the .wxs template that will be left in your home directory to customize it.
More info can be found on the FireBreath wiki:
http://www.firebreath.org/display/documentation/WiX+Installer+Help
http://www.firebreath.org/display/~me#iaincollins.com/Potential+Installer+Improvements
If you are really in love with using your .cab installer for IE (I've had problems with them, but some seem to have good luck with them) you can distribute the MSI file inside your CAB and have it run when the CAB is installed. The advantage to this is that when you install the MSI it installs everything for IE, Firefox, Safari, Chrome, and Opera (as well as other browsers which are compatible with the same plugin technologies that those browsers use).
As a quick note, the reason that an MSI is the ideal solution for installing plugins (as opposed to using something that calls DllRegisterServer like regsvr32) is that the MSI is transaction based, so when you uninstall it will always reverse what was put in; that means that you don't have to worry about supporting uninstalling 10 different old installer versions that put things in different places, etc, because the MSI system takes care of uninstalling everything cleanly when you upgrade.
Hope that helps!
For NPAPI plugin you shouldn't run "regsvr32", in Windows you need to write some stuff to the register and on Mac or Linux you need to copy the plugin to specified locations (see "Installing Plug-ins"). I think the easiest way to deploy NPAPI plugin on Windows is to create windows installer that will install both activeX and NPAPI versions of the plugin (for example, you can look how deployment is done for commercial plugins like Unity3D, Roozz or Silverlight). The same is for Mac - just create installer.
I'm not aware of any way to install a plugin from within Safari.
Also, keep in mind that while you may think of the extension-style deployment as easier for users, it's not all that uncommon for Mac users to use more than one browser. If you make them re-install your plugin in each browser they will be confused (since that's not how browser plugins are generally deployed on the Mac) and annoyed. An installer or a manual drag-and-drop installation are the standard ways of deploying plugins on the Mac.