Cinema 4D R20 – Using a centralized plugin repository


Maxon has released Release 20 of Cinema 4D and it comes with a bunch of new features (amongst them plugin breaking API changes, which is a bit of a bummer, but it needed to be done…). One of the lesser talked about features is the ability to set up multiple Plugin Search Paths. Previously you had you AppData plugin path and the system-wide plugin path in the Cinema 4D Rxx/plugins folder. The latter does not exist any more by default. Instead you are told to use your AppData plugin folder instead. This works fine if you are the only person working on your Workstation. It’s a pain if you are not.

New PluginPath feature in R20

Luckily you can still create your own Cinema 4D R20/plugins if you are so inclined. However, the big thing here (at least for me) is: the Search Paths also support UNC paths! Which means you can set up a shared network folder and have all your Cinema 4D R20 installations point to this folder and magically manage all your plugins through a single folder.

Licensing plugins

Using a shared folder works great for plugins that do not require a license to begin with or those that use the licensing system provided by Cinema itself (via its serial number). These licenses are stored in your workstation’s registry and are thus independent from the plugin folder location.

A problem occurs when you are dealing with plugins that require license files. Unfortunately those you will still have to install in your local plugin folder (e.g. the AppData one). But since you can combine multiple plugin folder paths, this is not a big issue.

Multi-User Environments

Cinema store the plugin paths in a file called plugins.json, located in the AppData folders. This means it stores the setting per-User. Which also means it’s tricky to centrally manage the setting for all users in a domain. You can of course pre-create a plugins.json file and just copy it over the existing (or non-existing-yet) one per user-login. But this will remove any custom setting that user may have made. Instead I decided to write a small Python script, since this is plain JSON and easy to parse. If you’re interested, I’ve put the script on Github.

Leave a Reply

Your email address will not be published. Required fields are marked *

I confirm