I have recently completed a complicated rig, and within its own file it works brilliantly. (Yay, me).
My problem comes when I Link it into another file.
Everything is Grouped, and I link its Group from the new file.
Everything gets linked in, however... apart from the base armature a lot of the wonderful additions I've given the rig no longer work, such as the Hide Menu, or the extra armatures for the damaged state.
My question is this: How do I properly set up my rig so that, when I link it, everything works?
I'll go through my process step-by-step, below.
Firstly, here's how I understand simple rigs to work when linked:

When the Amature, Mesh and extra Controllers are Grouped together the Linking process goes swimmingly:

Using the above diagrams as a basis, here's how my new rig differs:
(FYI: my actual rig is a tank, not a person).
There is an extensive Hide Menu which is used to switch on/off various controllers, meshes, damaged states, etc.

Because there is different state changes to the rig, it uses three other armatures parented to the main armature.
There is also Deformer cages over different parts of the mesh which have various controllers "hooked" to it.
So, not simple, but not SUPER advanced either. Here's what happens when I Link this rig to a new file:

Essentially, all the parenting breaks, and my list of Proxy options balloon out, forcing me to set things individually:

The Hide Menu is the one that kills me the most because I had a terrific Location Constraint placed on each of the switches, and once the proxies have been pulled in the visibility drivers still work (which is excellent), but the Location Constraints do not (meaning that the little switch can now be dragged far from the menu)> The Damped Track and Copy Rotation of the Hide Menu also doesn't work, which means that it won't automatically face the camera anymore. Not to mention that all the elements (50+) need to have each of their proxies set individually, which is an unworkable solution.
Right now my Outliner of the Rig's file looks like this:

00_GUI = All the GUI elements for the Hide Menu.
00_RIG= The armature containing the entire rig elements.
STG_ = Stage elements
ZZZ_JNK = Mostly just the custom controllers for the bone shapes.
All of the Rig's elements (including the Hide Menu) are Grouped together, which is what I've been linking from the new file.
I would be very appreciative if someone could set me in the right direction in terms of setting up an advanced rig properly so that when it is linked in to a new file it works as it does in its original file.
Cheers,
Mat

You mentioned drawing a rig UI to the viewport using open gl. If you could point me in the right direction for learning that, I will get myself the rest of the way.
Lastly, yes, linking in Maya is not comparable, or free, but I was able to propose something radically new directly to a Blender dev, and he responded. This is something that would NEVER happen with any Maya dev, ever. Blender can change. Maya will only atrophy. I'll stick with Blender because it's the future.
– Mat Brady Apr 29 '18 at 23:58bpy.app.handlersrequires less effort to implement. – Jaroslav Jerryno Novotny Apr 30 '18 at 15:49Through the process of making my Mr.Tapll proposal I spoke with one of the devs on the 2.8 Code Quest. He told me that many, if not all of the issues I have with the rig will be solved in 2.8. Whether that’s true or not, it means that I will get back to modellling and texturing other assets until that happens.
You’ve been an EXCELLENT help though, and I thank you again for your efforts. :)
– Mat Brady May 01 '18 at 19:09