This topic describes the elements that can make up a package XML (PackageContents.xml) file for a 3ds Max plug-in.
Example: <?xml version="1.0" encoding="utf-8"?>
Each PackageContents.xml file must contain an ApplicationPackage element. The ApplicationPackage element's attributes contain general information about the plug-in. It also encapsulates other XML elements (nodes) that help to define the contents of the plug-in.
The <ApplicatonPackage> must have a <CompanyDetails> node.
It can optionally contain a <RuntimeRequirements> node.
It also contains an array of 0 or more <Components> nodes.
| Name | Description |
|---|---|
| AutodeskProduct (required) | Must be set to "3ds Max" |
| ProductType (required) | Must be set to "Application" |
| ProductCode (required) | Unique GUID for the plug-in. A unique GUID must be generated for each unique plug-in, and is used for first run notifications and as the installer ID for Add/Remove Programs in Windows when installed from the Autodesk App Store website. ProductCode should be updated if the AppVersion is changed. This is so upgrade installs work properly. On Windows, you can use the MSI installer ProductCode or generate a GUID using an application such as GuidGen.exe. There are also websites that allow you to generate a GUID. |
| Name (optional) | Plug-in name |
| Description (optional) | Plug-in description |
| AppVersion (optional) | Version string in the form of "MMM.mmm.bbb" (major.minor.build) |
| UpgradeCode (optional) | Identifier user by the installer logic. |
The plug-in will not load if this element is not defined.
All attributes are optional.
| Name | Description |
|---|---|
| Url | URL to reference back to the company |
| E-mail, read as a string, no format required | |
| Phone | Phone, read as a string, no format required |
| Name | Company name |
This element enables the plug-in's host application to quickly process an application plug-in package. It identifies which operating systems, Autodesk products and releases the package is compatible with.
Optional in the <ApplicationPackage> node.
Required in the <Components> nodes.
| Name | Description |
|---|---|
| OS | Must be set to "Win64" |
| Platform | Must be set to "3ds Max" |
| SeriesMin | The minimum 3ds Max release the plug-in is compatible with. Currently this should be the 3ds Max product release number the application is compatible with. For example, it might be "2019". |
| SeriesMax | The maximum 3ds Max release the plug-in is compatible with. Currently this should be the 3ds Max product release number the application is compatible with. For example, it might be "2019". |
Recommend practice:
When creating a DLL that is compiled with the 3ds Max SDK, "SeriesMin" and "SeriesMax" should specify the "release year" range the plug-in is compatible with.
The plug-in DLL should be binary compatible with all the application releases that fall between the values specified in "SeriesMin" and "SeriesMax".
3ds Max will detect if the series specified is binary compatible with the running version, and load the plug-in if it is. For example, if the SeriesMin and SeriesMax is 2015, 3ds Max 2016 is binary compatible, and will load the plug-in.
<Components Description="xxx"> ... </Components>
This node describes a component, its runtime requirements, and a list of component entries. The "Description" attribute defines how to load the component entries. Possible valid values are listed below.
| Name | Description |
|---|---|
| <RuntimeRequirements> (required) | See above table for runtime requirements which can be specified for more specific modules here. For example, SeriesMin and SeriesMax may be different for a specific component. |
| <ComponentEntry ModuleName="XXX" /> | List of ComponentEntry nodes. At least one needs to be present. Each defines a file to be loaded through its "ModuleName" attribute, which can be absolute or relative file path to the package XML file. |
| Tag | Description |
|---|---|
| plugins parts | Loads the file defined by ModuleName attribute of ComponentEntry element as a 3ds Max plug-in DLL |
| assemblies parts | Loads the file defined by ModuleName attribute of ComponentEntry element as a managed assembly DLL |
| ui schemes parts | The file defined by ModuleName attribute of ComponentEntry element defines a UI scheme file that can be used by the defaults switcher |
| default setting paths parts | The Loads the file defined by ModuleName attribute of ComponentEntry element defines a folder where defaults are stored |
| pre-start-up scripts parts | Loads the file defined by ModuleName attribute of ComponentEntry element as a plug-in script. This is done after plug-in DLLs are loaded. The UI system is not yet in place so scripts have "limited" functionality |
| macroscripts parts | Loads the file defined by ModuleName attribute of ComponentEntry element as macro scripts |
| post-start-up scripts parts | Loads the file defined by ModuleName attribute of ComponentEntry element as a startup script. The UI system is fully in place. |
| light icon paths parts | Loads the path defined by ModuleName attribute of ComponentEntry element will be added as a path to the CUI frame manager to load light icons from |
| dark icon paths parts | Loads the path defined by ModuleName attribute of ComponentEntry element will be added as a path to the CUI frame manager to load dark icons from |
See Example Plug-in Package for an example of how to use <ComponentEntry>.