We require everyone on the team to launch their tools using an in house tool launching app. This app starts off by launching a separate configuration app that insures your computer is configured correctly and has all the required software installed. (including Maya). If the required tools are not installed, it installs them. Both of these tools are written in C#. We just fixed the main tool launching app to run on Mac under Mono.
Any tool launched has its environment controlled. In the case of Maya we set up some environment variables, some paths and tell it to run a specific startup script at launch. This script and the entire scripting environment comes from one of 4 places: Three of these copy tools to a local cache location on your local hard drive. They copy from our “release” network share (the default), our “beta” network share, or out of your local version control (Perforce in our case) directories. We sync perforce automatically before copying the tools out of it. The 4th option is to run tools live from version control (Perforce). This is what our TAs do when they’re working on scripts. No one else is supposed to use this mode. TAs can publish tools to the Beta and Release network shares to have artists test it and/or once they trust the code they’ve written. The reason we copy tools for the end users is so that Maya’s file locks won’t interfere with deploying new versions of the tools, or pulling files to your machine (syncing) in Perforce. This system allows us a great deal of flexibility. For instance, an external outsourcing vendor can pull their tools directly out of Perforce (they don’t have access to our network shares), or they can set up their own network share and we can push tools to that. Since almost everything automatically configures itself, we have reduced new user setup support to almost 0.
I said “everyone on the team” uses this tool launcher, and this holds true. For instance our engineers enjoy the same system, and know that when they launch Visual Studio they will have the correct version with the correct options and add-on tools installed.
EDIT: I forgot to mention: our Maya environment is completely vanilla. We don’t touch any of the default startup scripts. This avoids conflicts with 3rd party tools and scripts that muck around with these. Our artists aren’t allowed to run externally created scripts without previous vetting, but we can’t always police this. Our system just makes sure that anything they’ve done in this area doesn’t pollute or interfere with our production environment.