Use NodeXL without installer

Jan 10, 2013 at 8:20 PM

I am teaching a class using NodeXL in a setting where I do not have and cannot get admin rights on the lab computers. Similarly students need to be able to use NodeXL in the school labs and they do not have admin rights there either. 

I created a folder with the NodeXL template code and with some hiccups my students and I have been able to use it. However, today I noticed that the graph metrics do not run in this configuration. From poking around on the forums here, I was able to determine that this is most likely because NodeXL expects the SnapGraphMetricCalculator executable to be at a particular path on the C drive.

I am perfectly willing to dig into the source code to adjust this dependency but I thought I would ask here first if someone has done this already and if there are other problems I should look out for when trying to build a stand-alone no-installer version of NodeXL.

Yes, I know that there will be no NodeXL start menu item and it's OK if everything only works if the workbooks are located inside the NodeXL folder itself. 

Robin Burke
DePaul University

 

Coordinator
Jan 11, 2013 at 5:05 AM

Robin:

The NodeXL installer is one of the more complex, fragile and troublesome parts of the project.  It originated in a version of Visual Studio that is now three generations old.  Although it seems to work for most users, there is a small but significant minority of people who have run into problems with it, some of which I have not been able to solve.  And the installer is definitely not very flexible.  The whole thing (the installer, not NodeXL) really needs to be tossed into the trash and started from scratch in Visual Studio 2012, but we haven't had the time to do that yet.

In the meantime, please take a look at "How to install NodeXL for multiple users" at http://nodexl.codeplex.com/discussions/228638 and see if that solves your problem.

-- Tony

Jan 11, 2013 at 2:54 PM

Maybe my initial post was not clear. I cannot get an administrator to install the software. It would be nice, but that option is not available to me, so the "single user" vs "multiple user" issue does not arise.

What I have done is to install NodeXL on my machine where I do have the right permissions and then copy the folder it creates to distribute to students. This works, although not perfectly, and I can live with most of the problems that arise.

What I cannot live without are the graph metrics, which are run as a separate application. Because that application is expected to reside at a particular path, the users of my copied install folder aren't able to access them, even though the applications are right there in the folder.

In the file GraphMetricCalculatorBase, there is the function 

SetSnapGraphMetricCalculatorPath()

which would seem to allow the path to be set to an alternate value. I am wondering if anyone has tinkered with this to enable a non-default path to the SNAP executables.

I am aware that my life would be easier if I could just run the installer (or get someone else to run the installer) on the machines in question. I can't do that, so I am looking for a work-around. Any advice appreciated. 

Thanks

Robin Burke
DePaul University 

Coordinator
Jan 11, 2013 at 4:25 PM
Edited Jan 11, 2013 at 4:36 PM

Robin:

SetSnapGraphMetricCalculatorPath() was meant for application developers who use the NodeXL Class Libraries to add graphs to their programs.  It wasn't meant to be used the way you're intending, although that might very well work.  I've never tried it.

However, the graph metrics aren't the only feature that depend on NodeXL being in a known subfolder of the %ProgramFiles% or %ProgramFiles(x86)% folder.  (By the way, that is the requirement.  Nothing is tied to the C: drive, and the root folder is not hard-coded but is obtained from Windows API calls.)  Other such features include the help system (NodeXL, Help, Help); the Twitter, YouTube, Flickr and Facebook plugins; the graph pane splash screen; and all features that require NodeXL to find its own Excel template file.

The reason NodeXL needs to know where it's installed is that it's a ClickOnce application that actually runs from an unknown location in the ClickOnce cache, yet it has to be able to find files that are not in the ClickOnce cache.  Because of this requirement, the NodeXL setup program is a hybrid ClickOnce/Windows Installer solution, and that's one of several things that make it annoyingly complicated.

You can try mucking with the source code to work around your lack of admin privileges, so long as you're aware of the features I mentioned that still won't work, and that there may be other roadblocks I haven't thought about.  Offhand, I wouldn't expect your approach to work, and I'm afraid I don't have an alternative suggestion.

-- Tony

Jan 16, 2013 at 2:00 AM

Thanks for the advice. I have now managed to get an acceptable "no-install" installation for NodeXL. I would be happy to share the details with any other folks with similar usage scenarios.

Basically, there was one major change, which was to revert GetApplicationFolder to its behavior from earlier versions, having it return

Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase

This overrides the newer behavior, which is to point to a "Program Files" subdirectory. Some other path-related functions then required patching: GetSnapGraphMetricCalculatorPath in GraphMetricCalculatorBase.cs, TryGetTemplatePath in ApplicationUtils.cs, and TryGetFilesInPlugInFolder in PlugInManager.cs. In each case, the URI prefix "file:\" needed to be removed so that these functions could work with the plain file path minus any URI trappings.

With these changes in place (and your own signing key at the ready), you can build the project. (The ReadMe file really should say something about replacing the signing key.) But instead of distributing the installer, just zip up the NodeXL/ExcelTemplate/bin/Release folder and distribute that. (The release build is quite a bit smaller than the debug build.) Students can unzip the folder and start up NodeXL by opening up the template contained inside. This avoids the complexities of the installer.

The Help system, Import Plug-Ins, Splash screen, and graph metrics all work. There may be other features I didn't test that are broken, though.

Caveats:

* No NodeXL menu item, not a big deal for me

*  NodeXL files must be located inside the Release folder in order to work.

* You have to use Import... to make use of NodeXL files created on other machines. They cannot be opened directly but have to be moved into the Release folder before opening.

These peculiarities are not deal-breakers for me and the benefit is I can actually use NodeXL for my labs as planned. I do encourage students to use the real installer on their own home machines but not all of them have home machines, so this build lets them do their assignments in university labs.

Robin Burke
DePaul University

 

Jan 23 at 5:21 PM
Hi Robin,

I'm finding myself in a similar situatoin. I wonder if you would be willing to share your portable build, or the details about your build.

Best,

Ian
Coordinator
Jan 23 at 6:12 PM
I need to point out that an upcoming release of NodeXL will be using an entirely different setup program, one we hope will reduce the number of problems we've had with the old one. It will be a pure "ClickOnce" solution, where you will run a simple one-time setup program and then let NodeXL update itself automatically as new versions become available.

I don't know if this will help with Robin's original problem, though, which is caused by his computers being locked down. ClickOnce doesn't require adminstrative privileges, but the two prerequisites that the one-time setup program might have to install if they're not already on the computer DO require an administrator.

-- Tony
Jan 23 at 6:28 PM
Sure, I am happy to share the NodeXL build that I have. Please contact me at rburke(at)cs.depaul.edu.