The Malleristic blog has gone unattended for quite some
time, as this has been about the busiest year so far in my career. I suppose that’s good and bad at the same
time. In the midst of that, two things
were happening simultaneously: A few
months ago, Revit 2013 was released; we were planning to purchase 150 new
computers for our users at The Beck Group.
Naturally, this meant timing a LOT of deployments, for all Autodesk
Verticals: All three Revits, AutoCAD Architecture, two verticals of Navisworks,
and two verticals of 3DSMax… All for 6 different offices. Yes, the licensing Gods were not with us, or
the BDS Ultimate cross grades. Cest la
vie.
While this was happening, I was also hard at work making
some big changes to our Revit deployment structure, and it seemed like the
right time to pull the trigger. So- this
post is: What was required, and where
did it have to go. In addition, how the ‘PragmaticReviteer’ Deployment tools helped us get there.
You know I'm not much of one for Product Plugging, but the list of
necessities for successful deployment was substantial, and this tool saved me
hundreds of hours. (I'm focusing on
Revit 2013. I’ll mention how I used the
PR tools to deploy the others, but not about the specific changes to THEIR 2013
deployments.)
2013 saw more file structure changes to Revit, meaning
things that control your software aren’t where they were. Here are the ones I PERSONALLY deem critical
for deployment. Your mileage may vary. I’ll list them all, then explain the “why
do you care” then explain how the PR tools make more of this
possible than a standard Adsk deployment. One asterisk (*) means it’s a file you
place in the Autodesk deployment. Two (**)
means the PR Deployment Tools take care of it for you. Three (***) means it’s your choice (but unanimously
the PR tools are more friendly.) Ill
save you my long winded thoughts on where you should store all these files in
your library.
First, this list:
Revit.ini / inifile.xml*
Revit.exe.config*
RSN.ini***
MaterialUIconfig.xml***
PhysicalMaterial.adsklib**
AECMaterials.adsklib***
UniformatClassifications.txt***
KeyboardShortcuts.xml***
Revit.exe.config*
RSN.ini***
MaterialUIconfig.xml***
PhysicalMaterial.adsklib**
AECMaterials.adsklib***
UniformatClassifications.txt***
KeyboardShortcuts.xml***
Revit.ini / inifile.xml*- 2012 saw a shift from standard
Text edited Revit.ini (which, in 2011, lived in the native Program Files/Revit
Architecture 2012/Program directory) to the ini being seeded in UserProfile/AppData,
but still from the Program Files directory.
2012 also so a shift, that we were now intended to edit an XML file
called “inifile” instead of the INI itself.
The GOOD news about this, is it made things tremendously easier, if you
had to support multiple verticals. Well,
in 2013, they recanted, and decided you could edit the ini text file again, and
just append it in the deployment. Direct
support wasn’t give to editing the XML anymore, however Autodesk Revit Support
was gracious enough to help me through it:
You CAN still use the XML. (with
3 verticals * 6 offices, I wanted to reuse whatever I could. One XML file creates ALL of the verticals
deployments for a given location). This
XML goes INSIDE your deployment. It
lives in 3 locations (I thought it was 4, but I only have three). Which one is the magic one? No idea.
Replace all 3, and it works though.
Haha!
…\AdminImage\x64\RAC2013
…\AdminImage\x64\RAC2013\Program Files\Autodesk\Root\Program\Setup\Cache\sfCache
…\AdminImage\x64\RAC2013\Program Files\Autodesk\Root\Program\Setup\Cache\sfRxCache
Why do you care? Here is what is setup from our inifile.xml (each vertical can be configured differently in one file):
…\AdminImage\x64\RAC2013\Program Files\Autodesk\Root\Program\Setup\Cache\sfCache
…\AdminImage\x64\RAC2013\Program Files\Autodesk\Root\Program\Setup\Cache\sfRxCache
Why do you care? Here is what is setup from our inifile.xml (each vertical can be configured differently in one file):
UI Colors (selection, etc)
Family Templates
Library Locations* (this can be done through Pragmatic Reviteer tools, which works better. I only put one place here in the xml, because you have to)
Project Paths (local files)
Project Templates (BTW... The syntax changed. Again. Sigh)
Allowance for Online content from Autodesk (ours is disabled)
Allowance for users to access Seek (ours is disabled)
Allowance for RSS feeds, email notifications, etc (ours is disabled)
UI changes, including press+Drag, and DisableMPPAutoApply (annoying accidental auto apply of the properties palette)
Family Templates
Library Locations* (this can be done through Pragmatic Reviteer tools, which works better. I only put one place here in the xml, because you have to)
Project Paths (local files)
Project Templates (BTW... The syntax changed. Again. Sigh)
Allowance for Online content from Autodesk (ours is disabled)
Allowance for users to access Seek (ours is disabled)
Allowance for RSS feeds, email notifications, etc (ours is disabled)
UI changes, including press+Drag, and DisableMPPAutoApply (annoying accidental auto apply of the properties palette)
Next
is Revit.exe.Config*. This
lives in your Program Files\Revit Architecture 2013\Program Directory. This also ONLY matters if you are doing what
I am with addins. Once the API opened up
in 2010, I began to get worried about the Black Hole of support that would be
coming, and- sure enough- its starting.
So many addins are coming out, and people want them. Then updates
and changes becomes a management sinkhole.
Well… You have options. Installed
typically, they sit on the users machines.
If you have robust SCCM support, or some other mechanism, you can
auto-push updates to DLL’s on to machines.
We have it, but it’s still cumbersome.
So, we are putting all of the DLL’s (basically installing the addins) on
the Beck Network. We configure those
Shares with Sync Center (formerly Offline Files in WinXP), so disconnected laptops still
work. In 2012, you could do this without
any changes to the program. In 2013
(thanks to .net4.0), you need to edit Revit.exe.config, to add the following
line under the
<loadFromRemoteSources enabled="true"/>
That enables addins to run from non-local places. The end result? The next time an addin sends an updated DLL, I replace one file on the network, instead of 150. Everyone’s is updated, as they sync or work off the network. NOTE: Don’t forget to re-path the locations in your Manifest Files. Also don’t forget to Unblock the DLL’s when you copy them to your network. By the way, this isn’t without side effects:
1.
Its not
supported by Autodesk. Their official
policy is that you shouldn’t do this, and that you should all have SCCM or some
other software copying things to local locations, for performance reasons.
2.
It DOES have a performance hit, but only on
STARTING up Revit. Our start times ARE
slower. From icon click, to Revit UI
responsiveness (past the splash screen), we have 36 seconds. I accept this, as its usually a once or twice
a day occurance. Responsiveness in the
program is completely normal.
3.
You want to configure those networked resources
with offline files, or they wont work when you’re offsite.
RSN.ini***. The
good news is, you only need this If you roll with Revit Server 2013. It goes in ProgramData\Revit Server
2013\Config\. It is a simple text file
listing all of the Host servers on your RSN.
It needs to be there for the workstation to have access to the Revit
Servers. This file (I think) causes a
lot of confusion for new Revit Server users:
When they try to connect, they “see” the servers but cant access
them. Well, you don’t really *see* them,
this file just tells your machine to list them.
We have 5 offices, and we are using all five servers as Hosts and
Accelerators now, so this file just lists all of our servers. It **only** has to list the Hosts (formerly
Central's). So if you are hacking
workstations in to local servers like we are, that doesn’t matter. Getting it on the machines: Supposedly the Deployment tool can do it, but
gosh… It’s too complicated for my simple brain.
So I used the PR_Deployment Tools to put this on every machine in the office. Didn’t even have to think twice.
Why do you care? If you aren’t using RS, you don’t. If you are, because copying it around on to
every machine is a pain in the ass if you have 150 machines.
Next is the Materials debacle, and it’s a doozy. The short version: The Material Editor changed in 2013, and it morphed
in to a raging piece of junk (my opinion).
HOWEVER, the UI of the material editor CAN be made to ALMOST resemble
the one from 2012 (although not the nice one from 2011… But hope is on the
Horizon). Here is where that gets
interesting:
MaterialUIconfig.xml:
This is a file that lives in C:\ProgramData\Autodesk\RAC
2013\UserDataCache. That means it also
gets copied in to the UserProfile’s Appdata\Roaming location, with the
Revit.ini. This, you CAN do with your
deployment, by placing it in the UDC of the Adminimage, but since the PR tools
help you in so many other ways, simplify your deployment and have the PR tools
do it.
Why do you care? If you aren’t aware, this little file does
a lot for you:
It saves the UI state of the Material Editor. (Switch all the mat lists to text style, no
rendered preview, open the Mat Editor and place it next to the Mat selector, then
close it. Then grab this file from your
machine and everyone will see it that way by default. If not?
They are in rendered preview hell.
ALSO, this file is HOW YOU DEPLOY with a NETWORKED OFFICE MATERIAL
LIBRARY. If you have started
an .adsklib for your custom materials, load it on your machine in the mat
editor. Then grab the UIconfig.xml file,
and place that in your deployment, and EVERYONE has your materials. We discussed this in Harlan Brumm’s class at
RTC, and I misspoke, as I thought it wasn’t possible. Thanks to Gordon at Pragmatic Reviteer for
setting me straight.
Now, if you are me
(which you aren’t, and I'm sure that makes you happy) part of setting up
the Material UI is GETTIGN RID OF the Autodesk Materials. And guess what: They made it harder and harder. I'm not sure why ,they are bent on us using
their overly generic materials. Well
here is the deal:
PhysicalMaterial.adsklib-
This is the autodesk materials that you want to vaporize. Trouble is, this file doesn’t EXIST anywhere
in the deployment, it is instantiated later. The Pragmatic Reviteer deployment
tools, however, include an executable that is run post-deployment, to
automatically go in and REPLACE this file with a blank variant. That’s the ONLY way to get rid of the Adsk
materials. (Note: I'm not talking about getting rid of the
render images, or assets. The overall
MATERIALS for revit. If you have your
own, you don’t want users having single click access to these, and the new UI
forces them in your face.)
AECMaterials.adsklib*** - These are the materials called AEC
Materials, which you CAN replace in the deployment if you want to strip them
out and put your own in… But since youre already using the PR tools (if youre
me) its easier to not have to mess with the deployments.
Why do you care? Maybe
you don’t. But trying to tag all
materials intelligently, using QC approved terminology, and getting correct
Quantities from the models, and such, I cant have random junk Materials showing
up in Models just because they are easily accessible in the UI. So they are removed.
And finally, there is User Data.
UniformatClassifications.txt- Now, this one is easy to take
care of. It goes in UDC and User App
Data, with the other stuff above. So you
can handle it in the deployment, OR with the PR tools. Since I have all three verticals to deploy,
using one script to handle it, versus copying it in to all 18 deployments, was
the way to go.
Word of warning: We were years in the making, on pulling
the trigger for this change, but it’s not something to take lightly. You want to do it at a version change, and
you want to make it a year you DON’T force project teams to upgrade. Here is why:
1.
It involves
opening every single file in your library, and redoing assembly codes for Every
Family Type, in every file. A family
Type that has an old assembly code will still work, as long as no one goes in
the type properties. If they do, it will
force them to pick a currently functional assembly code, or it will cancel
their changes. If your users don’t understand
this, they’ll be lost.
2.
A project upgraded from the last year, will have
the old codes. But since Revit 2013 will
have the new text file, the problem above rears its ugly head, unless you keep
switching text files in AppData. Yikes.
Why do we care? For us at The Beck Group, this file is
paramount. In the 2013 release, re
completely rewrote out UniformatClassifications file, and completely discarded
the Autodesk one. This isn’t a slam on
the adsk file, at all: Our Timberline
Cost Database is organized completely different, and in the shorter decimalized
format (B1010.150 instead of the longer old format the Autodesk one is written
in. It was also organized differently (Autodesk’s
has wall finish and backup in one assembly code, we itemize them out.) So it’s a great change to make, as exporting
data OR schedules from Revit can now be mapped easier.
KeyboardShortcuts.xml***- Obviously you know what this
one does: it’s your keyboard shorties. You
can handle it in UDC, either within all of your deployments, or with the PR
deployment tools. But here is one more
place where the PR deployment tools give a massive advantage over standard
deploy: You can tell it to GET the
Shorties from the last version of Revit that’s CURRENTLY on the users
machine. That way, you aren’t just
deploying the OFFICE standard, but that users.
I didn’t get to do this, since we were deploying brand new machines with
new hard drives, but it’s a great feature.
Why do you care? Because users don’t want to start over every
year, making Keyboard Shorts.
More on the Pragmatic Reviteer Deployment Scripts:
You can visit Gordons site, to understand more about how it
works, but the system gives you some other benefits which might seem small, but
have pretty decent returns.
1.
Places (File open, save dialogues). Of course we can handle this with the
Revit.ini, and they end up underneath all of the standard Windows stuff (out of
sight and sometimes out of mind). The PR
tools afford you the ability to place your libraries in the Places, but do so
ABOVE the standard windows things. It’s a nice benefit.
2.
Desktop Cleanup and Taskbar Shortcuts. Again, it’s a quickie, but I like that, since
I place icons in the taskbar to let people know ive installed something new.
3.
Multiple Deployments. This is where the rubber hits the road, for
me. The PR tool is a single click
instantiation, to deploy whatever you have told it to deploy. So with a single click on a Users Workstation,
here is what happens at Beck, in order:
a.
Navisworks Simulate 2013, Navisworks Manage 2013,
RAC2013, RME2013, RST 2013, ACA 2013, RACupdate1, RMEupdate1, RSTupdate1,
3dsmax 2013, 3dsmaxdesign 2013, all installed per deployments.
b.
Kiwicodes Family Browser installed and
configured. Revit DB link, Model Review, eTransmit, hatch22, AaronsGETid, all
installed.
c.
Revit Server Configured
d.
Comm Center disabled (bonus)
e.
Material issues Fixed.
Then the user logs in, and one final script runs
(three minutes) that seeds their user data shortcuts, etc, and they are off to
the races.
Obviously, for this to have a big time save, you need to
disable UAC prompts temporarily through either Group Policy, SCCM, or using an
elevated admin that isn’t subjected to UAC at all (even clicking OK). If UAC prompts exist, you still need to be
there to click OK, which is to be expected.
So we push the single script through SCCM, and UAC never pops up. Literally, from home I can deploy every
Autodesk Product and API addin (something we havent gotten from Autodesk yet,
sigh), and be cooking dinner while 50 machines get 11 installs.
What does it take to use the Pragmatic Reviteer setup? Well, there are some scripts to edit. Here is the thing about that: Writing code is the one class in I actually
failed in school, and these are set up simply enough that I can handle it. That means any of you can, without
hesitation.
Here is what I suggest, though: Sit and talk with Gordon while planning out
your next deployment. File locations,
permissions, and access play an important role in this. As his solution is new, 2013 was my first
year using it, but I am CERTAIN our 2014 deployments will be seamless. And ill remain ever optimistic that 2014
really delivers, to make up for this Material Editor. J Check out his website, he’s got a lot of
interesting solutions in the works.
8 comments:
Holy crap. You are smart.
Smart and $2.74 gets me a cup of coffee at Starbucks. And thats something.
Aaron-
Great post! Something near and dear to my heart. A lot of what you have outlined is the same exact thing I've dealt with (10 offices in 3 different states). I'm curious, you refer throughout to the PR Deployment Tools, but simply link to Gordon's blog. Are you referencing the course on Udemy when you refer to the PR Deployment Tools and if so, does that course contain the scripts you used?
Steve,
I'll chime in, and thanks again Aaron for the shout out! Anyway... Yes, the Udemy course hosts the videos and the script downloads, along with some other reference material and such. Udemy is great for this kind of thing, they handle billing, bandwidth, feeding video to different devices, etc.
That said, I better revise the blog to make everything a little more clear. Gonna go add some info there about their Black Friday deal as well. So off to the other blog. ;)
Thanks!
Gordon
Aaron
First, thank you for posting this - it is extremely helpful! In regards to running Add-Ins off of the network, have you found that some work and some don't? For instance, we have two Ideate Add-Ins, one shows up in the Add-Ins tab and the other doesn't after specifying the network path upon installation.
Kristina- Thanks for the kind words. I have run in to a few apps that wont work correctly when they are set to run on the network, but not many. I dont have any of the Ideate apps, so im not sure what the issue is. Some things to check though:
1. Make sure youve pathed it correctly everywhere. Very simple addins only need the path changed in the addin file, but you might find other .ini files, or config files in the addin that need to be repathed.
2. Make sure the .dll's arent "blocked" in windows explorer. A lot of times when you copy them to the network, they get "blocked" for security purposes. Right Click > Properties. If they say Blocked at the bottom, they wont run.
Yesyes?
Thanks for your input. We discovered it was because the 2 add-ins shared one .addin and one .dll file (that pointed to 2 other .dll files). Initially we were trying to install each add-in to a different subfolder on the network. After placing them in the same subfolder, it worked. Still new to this, but have been learning a lot. Case closed! Thanks again...
Ahh, that will do it. I should have mentioned (if i didnt) i move them to the network by grabbing the entire undisturbed "Program Files" or "Program Files(x86)" directory, and i dont change anythings relative path. That way, any dependancies they have in place should work fine. I still havent done it for all addins (i didnt bother deploying Siteworks in 2013), but i think all of ours run this way now.
Post a Comment