Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions conda_recipes/3dsmax-2025/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Autodesk 3ds Max 2025 conda build recipe

> **Autodesk Cloud Rights:** Autodesk 3ds Max has its own licensing requirements separate from AWS.
> Confirm you have the appropriate licenses before proceeding. See additional details on
> [Autodesk Cloud Rights for 3ds Max](https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Subscription-Benefits-FAQ-Cloud-Rights.html).

## Creating an archive file for Windows

The Windows installer requires Administrator permissions that are not available in most conda package
build environments, such as on Deadline Cloud service-managed fleets. Follow these instructions to
install 3ds Max 2025 on a freshly created EC2 instance as Administrator, and create an archive file
for use by the conda build recipe.

1. Launch a fresh Windows Server 2022 instance (any current Windows Server AMI with enough vCPUs and RAM works).
1. From the AWS EC2 management console, select the option to Launch instance.
2. Enter instance name "Create Windows 3ds Max archive".
3. Select "Microsoft Windows Server 2022 Base" for the AMI.
4. Select an instance type with enough vCPUs and RAM, for example c5.4xlarge has 8 vCPUs and 16 GiB RAM.
5. Select "Proceed without a key pair" for the "Key pair (login)" option.
Comment thread
leongdl marked this conversation as resolved.
6. We will use SSM port forwarding to avoid sending RDP protocol traffic directly over the internet.
1. Make sure that "Allow RDP traffic" is unchecked.
2. Make sure the security group does not allow any inbound traffic.
3. Make sure to remove any public IP addresses from the instance.
7. Set the storage to at least 64 GiB. Adjust other settings as you like, e.g. if you want an encrypted volume of type gp3.
8. Select "Launch instance."
9. If it asks, select "Proceed without key pair" and proceed with the launch.
10. Once it launched, navigate to the instance detail page. Select "Connect," and with "Session manager" selected, again select "Connect."
If it says "SSM Agent is not online," you may have to wait a few minutes for it to initialize.
11. Create a secure password for the Administrator account. From the Administrator PowerShell window that session manager,
enter the following command with your secure password substituted to change the password.
1. `net user Administrator MY_SECURE_PASSWORD`
2. Connect to the instance with SSM port forwarding and RDP.
1. Install or update the AWS CLI v2 from https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html.
2. Install or update the Session Manager plugin from https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html.
3. Run the following command, using AWS credentials that have suitable permissions, to start the SSM port forwarding. Replace INSTANCE_ID with the one you launched.
1. `aws ssm start-session --document-name AWS-StartPortForwardingSession --parameters "localPortNumber=3389,portNumber=3389" --target INSTANCE_ID`
4. Open RDP, and enter the following connection details:
1. Computer: `localhost:3389`
2. User name: `Administrator`
5. Enter the password you set for Administrator after you created the instance. You should now have a remote desktop session to your instance.
3. Install 3ds Max 2025 on the instance.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or any other instance actually

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a note that any current Windows Server AMI with sufficient vCPUs/RAM works - d14eac1.

1. Download the 3ds Max 2025 installer for Windows from Autodesk (for example via Autodesk Access).
2. Run the installer on the EC2 instance and complete installation using the default settings.
3. *(Optional)* Install the `deadline-cloud-for-3ds-max` Python package inside 3ds Max if you want the Deadline Cloud
integration baked into the package. Note that doing so pins the adaptor at archive-creation time and skips runtime
upgrades that the Deadline Cloud conda channel would otherwise provide; for production fleets, prefer letting the
channel deliver the adaptor at job-init time.
4. From an Administrator PowerShell window, create the archive from the installed files and capture its hash.
1. `Compress-Archive -Path 'C:\Program Files\Autodesk\3ds Max 2025' -DestinationPath Autodesk_3dsMax_2025_Windows_installation.zip`
2. `(Get-FileHash -Path "Autodesk_3dsMax_2025_Windows_installation.zip" -Algorithm SHA256).Hash.ToLower()`
5. Upload the zip to your private S3 bucket. You can use a PowerShell command like
`Write-S3Object -BucketName MY_BUCKET_NAME -Key Autodesk_3dsMax_2025_Windows_installation.zip -File Autodesk_3dsMax_2025_Windows_installation.zip`.
6. Terminate the EC2 instance.
7. Download the zip file to the `conda_recipes/archive_files` directory in your git clone of the
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you tried rattler build? We are migrating all of our recipes.

https://github.com/prefix-dev/rattler-build

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call. Essentially I re-used a lot of the methodology of the maya-2025 recipe which used conda-build for the Win-build I'll check and test it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Rattler should work on Windows.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracking rattler-build migration as a follow-up to keep this PR scoped. Mentioned that explicitly in the README under the new "Build tool" section in d14eac1. Will open a separate branch/PR with the rattler translation once we have testing capacity.

[deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples) repository for
submitting package build jobs, and update the Windows source artifact hash in `meta.yaml`.

The build script installs `pywin32` into 3ds Max's embedded Python to enable automation and exports
environment variables (`ADSK_3DSMAX_*`) so jobs can find both the GUI (`3dsmax.exe`) and batch
(`3dsmaxbatch.exe`) executables. See the *Notes on environment variables* section below for details.

## Build tool

This recipe uses `conda-build` to stay consistent with the existing 3ds Max test pipeline. Migration to
[`rattler-build`](https://github.com/prefix-dev/rattler-build) (already adopted by `blender-5.1`,
`maya-2026`, and others in this repository) is tracked as a follow-up — feel free to open an issue or PR.

## Notes on environment variables

The activation script exports the following variables so jobs and the
[`deadline-cloud-for-3ds-max`](https://github.com/aws-deadline/deadline-cloud-for-3ds-max) adaptor can
locate the right executable:

| Variable | Path | When to use |
| --- | --- | --- |
| `ADSK_3DSMAX_BATCH_EXE` | `…/3ds Max 2025/3dsmaxbatch.exe` | **Default.** Non-GUI batch render. Compliant with Autodesk Cloud Rights, which allow up to 10 batch render licenses per GUI subscription seat. |
| `ADSK_3DSMAX_EXECUTABLE` | `…/3ds Max 2025/3dsmax.exe` | GUI executable. Use only if your Autodesk subscription's GUI seats cover the rendering workload. |
| `3DSMAX_EXECUTABLE` (`.bat` only) | `…/3ds Max 2025/3dsmaxbatch.exe` | Legacy variable consumed by the current adaptor; kept pointing at the batch exe so existing jobs render with the safer default. |

Limitations:

- POSIX shells cannot export variable names that begin with a digit, so `3DSMAX_EXECUTABLE` is set
only by the `.bat` activation script. Bash activation relies on the `ADSK_*` variables.
- The current adaptor reads `3DSMAX_EXECUTABLE` only. Until
[deadline-cloud-for-3ds-max#190](https://github.com/aws-deadline/deadline-cloud-for-3ds-max/issues/190)
ships, jobs that need to switch between batch and GUI explicitly will require either a small adaptor
hot-patch or a fleet-level override of `3DSMAX_EXECUTABLE`. Once that adaptor change lands, the
adaptor will read both `ADSK_3DSMAX_BATCH_EXE` and `ADSK_3DSMAX_EXECUTABLE` and pick the right one
for the job.

## Renderer plug-ins (e.g., Corona)

If you intend to render with Corona or other third-party renderers, ensure their DLLs are present in the
3ds Max plug-in search path (e.g., `Autodesk/3ds Max 2025/Plugins`). The main `3dsmax` package does not
carry Corona binaries; use the `3dsmax-corona` package to place the real Corona DLLs into the
environment. Without that package (or manually copied DLLs), Max will warn about missing plug-ins and
the adaptor will fail.
7 changes: 7 additions & 0 deletions conda_recipes/3dsmax-2025/deadline-cloud.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
condaPlatforms:
- platform: win-64
defaultSubmit: true
sourceArchiveFilename:
- Autodesk_3dsMax_2025_Windows_installation.zip
sourceDownloadInstructions: 'Follow the README instructions to create the Windows archive from an installed 3ds Max 2025.'
buildTool: conda-build
2 changes: 2 additions & 0 deletions conda_recipes/3dsmax-2025/recipe/bld.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bash %RECIPE_DIR%/build_win.sh
if errorlevel 1 exit 1
123 changes: 123 additions & 0 deletions conda_recipes/3dsmax-2025/recipe/build_win.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
#!/bin/sh

set -xeuo pipefail

# The version without the update number
MAX_VERSION=${PKG_VERSION%.*}
AUTODESK_ROOT="Autodesk"
INSTALL_DIR="$PREFIX/$AUTODESK_ROOT/3ds Max $MAX_VERSION"

mkdir -p "$PREFIX/$AUTODESK_ROOT"

# Locate the extracted 3ds Max root (zip contents may include an extra top-level folder).
SRC_ROOT="$SRC_DIR/3dsmax"
Comment thread
leongdl marked this conversation as resolved.
if [ ! -f "$SRC_ROOT/3dsmax.exe" ]; then
FOUND_PATH=$(find "$SRC_DIR" -maxdepth 4 -type f -name "3dsmax.exe" | head -n 1 || true)
if [ -n "$FOUND_PATH" ]; then
SRC_ROOT=$(dirname "$FOUND_PATH")
fi
fi

# Copy the extracted files into the install location (robust against read-only flags and file/dir collisions).
# robocopy ships with Windows by default (in System32) so no extra install is required for conda-build on Windows.
# /COPY:DAT /DCOPY:DAT skips ACL/owner copying which often fails in conda-build/CI; robocopy uses 0-7 for "success
# with minor differences" so we treat exit codes < 8 as success.
rm -rf "$INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
cmd <<EOF
setlocal
robocopy "$(cygpath -w "$SRC_ROOT")" "$(cygpath -w "$INSTALL_DIR")" /E /COPY:DAT /DCOPY:DAT /R:1 /W:1 /NFL /NDL >nul
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the builder need to install robocopy?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. robocopy ships with Windows (in System32) and is available by default in Windows environments, including conda-build on Windows.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No install step required - robocopy ships with Windows in System32 and is on PATH by default in conda-build on Windows. Added that note inline in d14eac1.

set RC=%ERRORLEVEL%
echo Robocopy exit code: %RC%
if %RC% GEQ 8 exit /b %RC%
exit /b 0
EOF

# The conda-build environment sets pip to offline/no-deps by default; allow installs for 3ds Max Python.
unset PIP_NO_DEPENDENCIES
unset PIP_IGNORE_INSTALLED
unset PIP_NO_INDEX

# Ensure 3ds Max's bundled Python has pip and pywin32 available for automation.
"$INSTALL_DIR\\Python\\python.exe" -m ensurepip
"$INSTALL_DIR\\Python\\python.exe" -m pip install pywin32
"$INSTALL_DIR\\Python\\python.exe" -m pip install deadline-cloud-for-3ds-max --upgrade

mkdir -p "$PREFIX/etc/conda/activate.d"
mkdir -p "$PREFIX/etc/conda/deactivate.d"

# See https://docs.conda.io/projects/conda/en/latest/dev-guide/deep-dives/activation.html
# for details on activation. The Deadline Cloud sample queue environments use bash
# to activate environments on Windows, so always produce both .bat and .sh files.

# Environment variables exposed to jobs.
#
# ADSK_3DSMAX_BATCH_EXE -> 3dsmaxbatch.exe (non-GUI, the safe default for cloud rendering;
# Autodesk Cloud Rights allow ~10 batch render licenses per GUI seat).
# ADSK_3DSMAX_EXECUTABLE -> 3dsmax.exe (GUI). Use only when your subscription's GUI seats
# cover the rendering workload (see Autodesk Cloud Rights FAQ).
# 3DSMAX_EXECUTABLE -> 3dsmaxbatch.exe (legacy variable still consumed by the current
# deadline-cloud-for-3ds-max adaptor; kept on the .bat side for now).
# See https://github.com/aws-deadline/deadline-cloud-for-3ds-max/issues/190 for the
# planned adaptor change that will let users select GUI vs batch explicitly.
cat <<EOF > "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.sh"
export ADSK_3DSMAX_VERSION=$MAX_VERSION
export ADSK_3DSMAX_LOCATION="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"
export ADSK_3DSMAX_PYTHON="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/python.exe"
export ADSK_3DSMAX_BATCH_EXE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmaxbatch.exe"
export ADSK_3DSMAX_EXECUTABLE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmax.exe"
export ADSK_3DSMAX_ROOT="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"
export ADSK_3DSMAX_PLUGINS_ADDON_DIR="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Plugins"
export ADSK_APPLICATION_PLUGINS="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Plugins"
export PATH="\$(cygpath "\$CONDA_PREFIX/bin"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):\$PATH"
Comment thread
leongdl marked this conversation as resolved.
export PYTHONPATH="\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):\$PYTHONPATH"
EOF
cat "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.sh"

cat <<EOF > "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.bat"
set "ADSK_3DSMAX_VERSION=$MAX_VERSION"
set "ADSK_3DSMAX_LOCATION=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION"
set "ADSK_3DSMAX_PYTHON=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\python.exe"
set "ADSK_3DSMAX_BATCH_EXE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe"
set "ADSK_3DSMAX_EXECUTABLE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmax.exe"
set "ADSK_3DSMAX_ROOT=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION"
set "ADSK_3DSMAX_PLUGINS_ADDON_DIR=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Plugins"
set "ADSK_APPLICATION_PLUGINS=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Plugins"
set "3DSMAX_EXECUTABLE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe"
set "PATH=%CONDA_PREFIX%\\bin;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\Scripts;%PATH%"
set "PYTHONPATH=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python;%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\Scripts;%PYTHONPATH%"
EOF
cat "$PREFIX/etc/conda/activate.d/$PKG_NAME-$PKG_VERSION-vars.bat"

cat <<EOF > "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.sh"
export PATH="\${PATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):/}"
export PATH="\${PATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):/}"
export PATH="\${PATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION"):/}"
export PYTHONPATH="\${PYTHONPATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/Scripts"):/}"
export PYTHONPATH="\${PYTHONPATH/\$(cygpath "\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python"):/}"
unset ADSK_3DSMAX_EXECUTABLE
unset ADSK_3DSMAX_BATCH_EXE
unset ADSK_3DSMAX_PYTHON
unset ADSK_3DSMAX_LOCATION
unset ADSK_3DSMAX_VERSION
unset ADSK_3DSMAX_ROOT
unset ADSK_3DSMAX_PLUGINS_ADDON_DIR
unset ADSK_APPLICATION_PLUGINS
EOF
cat "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.sh"

cat <<EOF > "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.bat"
set "PATH=%PATH:%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION;=%"
set "PYTHONPATH=%PYTHONPATH:%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python;=%"
set "PYTHONPATH=%PYTHONPATH:%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\Scripts;=%"
set 3DSMAX_EXECUTABLE=
set ADSK_3DSMAX_BATCH_EXE=
set ADSK_3DSMAX_EXECUTABLE=
set ADSK_3DSMAX_ROOT=
set ADSK_3DSMAX_PLUGINS_ADDON_DIR=
set ADSK_APPLICATION_PLUGINS=
set ADSK_3DSMAX_PYTHON=
set ADSK_3DSMAX_LOCATION=
set ADSK_3DSMAX_VERSION=
EOF
cat "$PREFIX/etc/conda/deactivate.d/$PKG_NAME-$PKG_VERSION-vars.bat"
29 changes: 29 additions & 0 deletions conda_recipes/3dsmax-2025/recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{% set name = "3dsmax" %}
{% set display_name = "3ds Max" %}
{% set major_version = "2025" %}
{% set minor_version = "3" %}
{% set version = major_version + "." + minor_version %}

package:
name: {{ name }}
version: {{ version }}

source:
- url: archive_files/Autodesk_3dsMax_{{ major_version }}_Windows_installation.zip # [win64]
Comment thread
leongdl marked this conversation as resolved.
sha256: 0064a976aef6f61b66d42272322dacd77caebb233b41f8a71f3def33b8a1154e # [win64]
folder: 3dsmax

build:
skip: true # [not win64]
number: 0
# These build options for repackaging an application
# https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html
binary_relocation: False
detect_binary_files_with_prefix: False
missing_dso_whitelist:
- "**"

about:
home: https://www.autodesk.com/products/3ds-max/overview
license: LicenseRef-AutodeskEULA
summary: 3ds Max is professional 3D modeling, animation, and rendering software from Autodesk.
27 changes: 27 additions & 0 deletions conda_recipes/3dsmax-corona/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 3dsmax-corona conda package

This package repackages the Corona Renderer plug-in for Autodesk 3ds Max into a conda-installable bundle. It should be installed alongside the matching `3dsmax` conda package.

> **Licensing:** Corona Renderer is distributed under the Chaos EULA. You must hold a valid Corona
> license that covers your rendering workload before deploying this package on a fleet. See the
> [Chaos website](https://www.chaos.com/corona) for licensing details.

## Contents
- Corona Renderer payload for 3ds Max (version 13.2) sourced from `archive_files/3dsmax-corona-2025-13-2/win-64`.
- Windows-only build that copies the plug-in files into the 3ds Max installation inside the conda prefix.

## Usage
1. Ensure the `3dsmax` conda package for the matching major version is installed.
2. Install this package via your conda channel (e.g., `conda install 3dsmax-corona-2025`).
3. Activate the environment; the plug-in will live under the 3ds Max plug-ins directory.

## Building the archive payload
If you need to refresh the archive payload:
1. Run the Corona installer `.exe` for 3ds Max on a Windows OS.
2. After install, copy the Corona files from `C:\Program Files\Chaos\Corona\Corona Renderer for 3ds Max\2025` (or matching year) into `archive_files/3dsmax-corona-2025-13-2/win-64/` in this repo.
3. Build the conda package (`conda build conda_recipes/3dsmax-corona/recipe`).

## Notes
- Platform: `win-64` only.
- License: Chaos EULA (see vendor site).
- Documentation: https://docs.chaos.com/display/CRMAX
5 changes: 5 additions & 0 deletions conda_recipes/3dsmax-corona/deadline-cloud.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
condaPlatforms:
- platform: win-64
defaultSubmit: true
sourceArchiveDirectory: 3dsmax-corona-2025-13-2/win-64/
buildTool: conda-build
38 changes: 38 additions & 0 deletions conda_recipes/3dsmax-corona/recipe/bld.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
@echo off
setlocal enableextensions enabledelayedexpansion

set "MAX_VERSION=2025"

rem Install Corona to the expected Chaos path under the conda prefix.
set "TARGET=%PREFIX%\Program Files\Chaos\Corona\Corona Renderer for 3ds Max\%MAX_VERSION%"
if not exist "%TARGET%" mkdir "%TARGET%"

rem /E recursive, /I assume destination is a directory, /H copy hidden, /Y overwrite
xcopy "%SRC_DIR%" "%TARGET%" /E /I /H /Y >nul
if errorlevel 1 exit /b 1

rem Add activation hooks to expose the Corona load path
set "ACTIVATE_DIR=%PREFIX%\etc\conda\activate.d"
set "DEACTIVATE_DIR=%PREFIX%\etc\conda\deactivate.d"
if not exist "%ACTIVATE_DIR%" mkdir "%ACTIVATE_DIR%"
if not exist "%DEACTIVATE_DIR%" mkdir "%DEACTIVATE_DIR%"

set "ACTIVATE_SH=%ACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.sh"
set "DEACTIVATE_SH=%DEACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.sh"
set "ACTIVATE_BAT=%ACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.bat"
set "DEACTIVATE_BAT=%DEACTIVATE_DIR%\%PKG_NAME%-%PKG_VERSION%-vars.bat"

(
echo #!/bin/sh
echo export CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH=\"$(cygpath "%TARGET%")\"
) > "%ACTIVATE_SH%"

(
echo #!/bin/sh
echo unset CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH
) > "%DEACTIVATE_SH%"

echo set "CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH=%TARGET%" > "%ACTIVATE_BAT%"
echo set CORONA_3DSMAX_%MAX_VERSION%_LOAD_PATH= > "%DEACTIVATE_BAT%"

exit /b 0
32 changes: 32 additions & 0 deletions conda_recipes/3dsmax-corona/recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{% set name = "3dsmax-corona-2025" %}
{% set version = "13.2" %}

package:
name: {{ name }}
version: {{ version }}

source:
# Plugin payload extracted under archive_files/3dsmax-corona/win-64
- path: ../../archive_files/3dsmax-corona-2025-13-2/win-64 # [win64]

build:
skip: true # [not win64]
number: 0
binary_relocation: false
detect_binary_files_with_prefix: false
missing_dso_whitelist:
- "**"

requirements:
run:
- 3dsmax >=2025,<2026

about:
home: https://www.chaos.com/corona
documentation: https://docs.chaos.com/display/CRMAX
license: LicenseRef-ChaosEULA
summary: Corona Renderer plug-in for Autodesk 3ds Max
description: |
Packages the Corona Renderer for 3ds Max (13.2) into the conda environment.
The plug-in payload is copied into the 3ds Max plugins folder; the package
should be installed alongside the matching 3dsmax conda package.