The Vectorworks script plugin files [.vsm, .vso, and .vst] contain the source code. If you are a third-party developer indending to distribute these plugins as features Install Partner Products it's a good idea to obfuscate the code in them.
This process includes packaging of all code inside the plugin, so the plugin can be used by itself. This is what legacy terminology calls "encryption":
-
Pascal VectorScript enryption will expand all
{$INCLUDE}statements and precompile the code into binary bytecode and include it in the .vsm, .vso, or .vst files. -
Python scripts will require an .xml file be placed next to the plugin file [.vsm, .vso, and .vst], with the same name, listing all dependent .py files used by this plugin. This will include the code of the plugin, plus all dependent .pyo files [compiled python files], into the plugin binary. This will allow the .vsm, .vso, or .vst plugin files to execute without additional dependencies.
Here is an example of this satelite file for python scripts:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- This file defines how the corresponding script plug-in should be packaged--> <Plugin> <Package> <File>Common/__init__.py</File> <File>Common/Includes/__init__.py</File> <File>Common/Includes/vsoEventsConstants.py</File> <File>Common/Includes/Vector.py</File> <File>Common/Includes/Utilities_Setup.py</File> </Package> </Plugin>
You can use Vectorworks itself to package/encrypt the plugin binary.
-
Go to the menu
Tools → Plug-ins → Plugin Manager... -
Find your plugin in the
Custom Pluginstab (where all unencrypted/unpackaged plugins are listed)Note: Make sure you have a copy of your plugin [.vsm, .vso, and .vst file], as the operation will change the file
Warning: Make sure you back up your plugin files before proceeding—this operation can result in permanent loss of source code!
-
Select your plugin and click the following key combination:
Mac:
Caps Lock + Shift + Option + CommandWindows:
Shift + Ctrl + Alt -
After confirming the alert dialogs, the plugin will be packaged/encrypted in place.
With Vectorworks 2026, you are required to include developer credentials with your plugins.
More information can be found here: Plugin Credentials
If you have a number of plugins, the manual process can very tedious. Then you can automate the process by using scripts.
First, install the Script Batch Process feature from the Vectorworks Developer section of Help → Install Partner Products... menu command.
This will add a plugin which will provide the following helper script functions. You can write a document script in Vectorworks to mass process plugin files.
Encrypt one VectorScript Plug-in file.
FUNCTION EncryptPlugin(fullPath : STRING): BOOLEAN;def vs.EncryptPlugin(fullPath):
return BOOLEANwill do batch encryption of all VectorScript plug-ins in the Plug-ins folder..
PROCEDURE EncryptAllPlugins;def vs.EncryptAllPlugins():
return Nonewill test do batch encryption of all VectorScript plug-ins in the Plug-ins folder and put the reuslt in a test folder. in the Plug-ins folder..
PROCEDURE EncryptAllPlugins;def vs.EncryptAllPlugins():
return NoneAdds credentials to VectorScript plug-ins. "pluginsPath" expects a full path to a file or the path to a folder containing plug-ins. "credentialFilePath" expects a full path to a .vst credential file. Empty would report the credentials of the plugins. Returns true if no errors and false if any errors were encountered. Actions are logged in "AddCredentialsLog.txt" in the user Plug-ins folder.
FUNCTION AddCredentials(
pluginsPath : STRING;
credentialFilePath : STRING) : BOOLEAN;def vs.AddCredentials(pluginsPath, credentialFilePath):
return BOOLEAN| Name | Type | Description |
|---|---|---|
| pluginsPath | STRING | Full path to a folder or to a specific plugin. When folder, all plugins will be processed |
| credentialFilePath | STRING | Full path to the credentials file. When empty, it will report the status of the plugins |
Note: A file _AddCredentialsLog.txt will be created in the pluginsPath containing the log of the operation.
Make sure you delete the cach of temporary allowed plugins (that still bring up the lauch alert dialog):
Mac: /Users/user_name/Library/Application Support/Vectorworks/2026/Settings/ExceptionsMissingCredentials.bin
Windows: C:\Users\user_name\AppData\Roaming\Nemetschek\Vectorworks\2026\Settings\ExceptionsMissingCredentials.bin