How do I set up a complicated rig correctly for linking? (Advanced) 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
Take a look at this:

Rigging question about Spline IK and having all controls on one armature

It's an example of rig structure with multiple armatures inside parented, to avoid dependency issues.

The trick is to have all the controls the animator will interact with inside one master armature, and to copy these bones with constraints to the other armatures where they do things. This way, you only need to make a proxy of this master armature when the rig is linked and everything else becomes inner workings of the rig.

This should remedy any parent breaking problems when creating proxy rigs.