NodeXL installation detection

Oct 19, 2010 at 7:33 AM

My installer for BioExcel ( needs to check if NodeXL is already installed on the user machine, otherwise it should not allow installation to proceed. I had previously done this by checking for the upgrade code of NodeXL since it was constant across versions. Now that the latest version of NodeXL supports per-machine ("Everyone") installation in addition to per-user ("Just me"), my installer check fails if NodeXL was installed per-machine (because Windows Installer does not support cross-context upgrades). As a workaround, I'm considering creating a component search to detect if a component with a particular GUID is installed. I noticed that the GUID for Microsoft.NodeXL.Core.dll has remained constant across versions. Would it be wise for me to check for NodeXL this way or is there a chance that the GUID might change in the future? Is there any other foolproof way for me to detect NodeXL's presence on a machine?

- Lisa

Oct 19, 2010 at 5:26 PM


One relatively simple solution is to check for the existence of the NodeXL program folder, or one of the files within it.  NodeXL's Setup program does not allow the folder to be changed -- even in the latest version, where the folder path is exposed in the Setup wizard, the folder controls are disabled -- so it always gets installed in the same place.  This is true regardless of whether the installation is "Just me" or "Everyone."

The only complication with this technique is that NodeXL's Setup program is 32-bit, which causes the NodeXL program folder to differ between 32- and 64-bit machines: "C:\Program Files\..." vs "C:\Program Files (x86)\..." on English machines, for example.  NodeXL uses a simple technique to determine its program folder at runtime.  It's in ApplicationUtil.GetApplicationFolder(), which can be found at  Perhaps you could adapt that code for use within your own installer's "NodeXL detector."

Regarding component GUIDs, Visual Studio is generating them for NodeXL and I don't know what algorithm it uses.  Thus, I don't know if the GUID for Microsoft.NodeXL.Core.dll, for example, will always be the same.

-- Tony 


Oct 20, 2010 at 5:52 AM

Thanks, Tony! I'll see what works for me.