Packaging Maya 2025

LaszloTarnai
New Contributor II

Hi,

I would like to create a deployment for Maya 2025 based on the topic for 2024:
https://community.jamf.com/t5/jamf-pro/packaging-autodesk-maya-2024-with-redundant-license-servers/m...

I've found a .app installer in the Contents of the installer:
/tmp/maya2025/AdskIdentityManager/AdskIdentityManager-Installer.app 

This app opens an installation wizard. How can I execute this (after the PKG installs) in silent mode?

Thank you.

1 ACCEPTED SOLUTION

LaszloTarnai
New Contributor II

My solution is the following (only the installation part):

pkgpath="/tmp/InstallMaya2025.app"

installMaya() {
	for PKG in $(find "$pkgpath" -name "*.pkg"); do
		echo "Installing $PKG"
		installer -pkg ${PKG} -target /
	done
	echo "Maya 2025 installed"
	
	sleep 3

	# Run the AdskIdentityManager-Installer.app in silent mode
	"$pkgpath"/Contents/Helper/Packages/AdskIdentityManager/AdskIdentityManager-Installer.app/Contents/MacOS/installbuilder.sh --mode unattended
	echo "Autodesk Identity Manager installed"
}

View solution in original post

18 REPLIES 18

RaGL
New Contributor III

In general to execute an installer silently you can use:

installer -pkg /tmp/maya2025/AdskIdentityManager/AdskIdentityManager-Installer.app -target /

LaszloTarnai
New Contributor II

Unfortunately no luck with this command.

installer: Error - the package path specified was invalid: '/tmp/InstallMaya2025.app/Contents/Helper/Packages/AdskIdentityManager/AdskIdentityManager-Installer.app'.

I believe the installer commands the XCLI version of the installer.app GUI and as such will only work with .pkg type files; if what you are attempting to install is a .app it could in theory, be opened with the CLI vi the 'open' command, but then you'd still have to deal with its GUI prompts. 

Been awhile since I felt with Maya, but if the installer doesn't come packaged as a .pkg, run the installer, and then use composer to package Maya as a .pkg, then the JAMF native options or the above command would work. 

As I saw that, AdskIdentityManager-Installer.app writes files inside Maya.app, so maybe it's not the best approach to create a PKG from my installation.

Is it a possibility to run "Install Maya 2025.app" in silent mode via Jamf?

I guess I've found a solution, but I'm gonna test via Jamf:

sudo /Volumes/Install\ Maya\ 2025/Install\ Maya\ 2025.app/Contents/Helper/Packages/AdskIdentityManager/AdskIdentityManager-Installer.app/Contents/MacOS/installbuilder.sh --mode unattended

cgeorge
New Contributor III

AdskIdentityManager doesn't install the full Maya software, only a component. I'm working to update the 2024 script for 2025 today.

cgeorge
New Contributor III

this has successfully tested for me:

 

#!/bin/sh

#Application Info (For each AutoDesk app, change the app/year/pKey/package)
app="Maya"
year="2025"
pKey="#####"

#Location where the application file is going to sit (REMOVE THE SPACES IN NAME)
pkgpath="/private/tmp/InstallMaya2025.app"

#For Redundant Servers, have a space between them rather than a comma ex: networkServer="IPaddress1 IPaddress2 IPaddress3"
networkServer="##.##.##.###"

#Identify where the license file will be generated at
licPath="/Library/Application Support/Autodesk/AdskLicensingService/${pKey}_${year}.0.0.F"
licFile="licpath.lic"

#All packages that exist within the Package Contents, conduct install
runInstaller ()
{
for PKG in $(find "$pkgpath" -name "*.pkg"); do
	echo "Installing $PKG"
	installer -pkg ${PKG} -target /
done
}

#Creates and appends servers identified into 'new' license file, 'for each' server that exists, write to file
createLicenseFile ()
{
    /bin/mkdir -p "${licPath}"
    /usr/bin/touch "${licPath}/${licFile}"
    for server in ${networkServer}; do
        echo "Accounting for server $server"
        /bin/echo "SERVER ${server} 000000000000" >> "${licPath}/${licFile}"
    done
        /bin/echo "USE_SERVER" >> "${licPath}/${licFile}"
        /bin/echo "_NETWORK" >> "${licPath}/${licFile}"
}

#Append the license servers to the products installed, 'ls' is list servers based on @IP,@IP... distinction
LicenseHelper ()
{
	### based off Onkstons's terrific work (I think they we're the first?) but simplified for 2023.
	### see also, addl details at the end of script for alternative 'legit' licensing method.
	licPath="/Library/Application Support/Autodesk/AdskLicensingService/${pKey}_${year}.0.0.F"
	/bin/mkdir -p "${licPath}"
	/usr/bin/touch "${licPath}/licpath.lic"
	/bin/echo "SERVER ${networkServer} 000000000000" > "${licPath}/licpath.lic"
	/bin/echo "USE_SERVER" >> "${licPath}/licpath.lic"
	
	/Library/Application\ Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper change --pk "${pKey}" --pv "${year}.0.0.F" --lm NETWORK --ls "${networkServer}"
}

#All files leveraged during installation will be cleaned from system package path and temporary files

cleanUp ()
{
     /bin/rm -rf "{$pkgpath}"
}

#Run script (1st Pass)
echo "Starting 1st Pass"
runInstaller
createLicenseFile
LicenseHelper

#Run script (2nd Pass), the licensing portion doesn't always install/engage during first run
echo "Starting 2nd Pass"
runInstaller
LicenseHelper

#Cleanup Files
echo "Executing Cleanup"
cleanUp

#################################################

### Verify license details - not required, but kind of nice to see.
/Library/Application\ Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper list
echo "Autodesk network licensing complete"


##################################################

 

why does the second run call the app installs again, if it's to double check licensing doesn't it just need to run the licensing function?

I can confirm that Autodesk installations, even when done exactly per their instructions, are unreliable at best. I don't have mine set to repeat the installation, but I do have my policy set to ongoing with a smart group of "Maya installed" as an exclusion.

Then to keep it from installing every 30 minutes (on check-in), I simply set the install policy to run every night.

@kacey3 @ianatkinson fwiw - most of the script above posted by @cgeorge is from my older work, but running the app installers a 2nd time in the script is not.  My original script just re-ran the license function for good measure, as is noted in the comment.  Additionally, this script still uses a mashup of old license file hackery techniques alongside official Autodesk workflows, which works but isn't ideal in my opinion.

Also fwiw- my new script/process down thread (dated 2024.07.19) uses official workflows for everything and has been flawless going out to ~200 lab computers for the past two years (including the ODIS curveball they hit us with this year).  Feel free to use any or all of it - my point being that despite the PITA Autodesk can be, I can say for now at least a 100% success rate in deployments with network licensing is obtainable.

Thanks I'm going to give your script a go today, I wrestled with this all yesterday afternoon and thought I'd got the licensing working ... pushed the policy and they've all failed :/

This was a lot simpler years ago when all you had was the one file telling it where the flex server was, this local licensing daemon that it seems to run now is what's causing the problems. Grrr!

OK having spent a bit more time on this I think my issue was that the local licensing daemon wasn't always running. If it's not running then the file `

/Library/Application Support/Autodesk/AdskLicensingService/AdskLicensingService.data` will not be present and the calls to register the apps fail saying it can't find that file (rather than saying the service is down which would be more useful.
 
I've knocked up my own script from bits on here and my own stuff and this includes a check on the daemon, if it's not running it has a go at bringing it to life and this seems to be working OK for me. I'll include it below in case it's of use for anyone else.
 
#!/usr/bin/env zsh

function start()
{
	echo
	echo "====================================================="
	echo "| $1"
	echo "====================================================="
}

function uninstall()
{
    # https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Clean-uninstall-of-Autodesk-programs-on-a-Mac.html
    start "Removing old Autodesk Files"

    rm -rf /Applications/Autodesk
    rm -rf /Library/Logs/Autodesk
    rm -rf /Library/Application\ Support/Autodesk
    rm -rf /Library/LaunchDaemons/com.autodesk*
}

function runInstaller()
{
    start "Installing $app"
	for PKG in $(find "$pkgpath" -name "*.pkg"); do
		installer -pkg ${PKG} -target /
	done
}

function createLicenseFile()
{
	licPath="/Library/Application Support/Autodesk/AdskLicensingService/${pKey}_${year}.0.0.F"
	licFile="licpath.lic"

    if [[ ! -f "${licPath}/${licFile}" ]] ; then
        start "Making license file"
        /bin/mkdir -p "${licPath}"
        /usr/bin/touch "${licPath}/${licFile}"

        for server in ${networkServer}; do
            echo "Accounting for server $server"
            /bin/echo "SERVER ${server} 000000000000" >> "${licPath}/${licFile}"
        done
            /bin/echo "USE_SERVER" >> "${licPath}/${licFile}"
            /bin/echo "_NETWORK" >> "${licPath}/${licFile}"
    fi
}

function licenseProperly()
{
	start "Licensing $app"
	kills=0

	# make sure daemon is running to accept registration
	while [[ ! -f "/Library/Application Support/Autodesk/AdskLicensingService/AdskLicensingService.data" ]] ; do
		echo "...kicking Autodesk licensing daemon"
		killall -HUP AdskLicensingService
		((kills++))

		if [[ $kills -gt 5 ]] ; then
			echo "FATAL: failed to get Autodesk Licensing daemon running"
			exit 1
		fi

		sleep 3
	done

	# register app
    "/Library/Application Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper" register \
    --pk "${pKey}" \
    --pv "${year}.0.0.F" \
    --cf "/Library/Application Support/Autodesk/Adlm/PIT/$year/${app}Config.pit" \
    --lm NETWORK \
    --ls "${networkServer}"

	# check
	if ! /Library/Application\ Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper list | grep -qi $pKey ; then  
		echo "ERROR, $app Licensing Failed"
	else
		echo "$app Licensing Complete"
	fi
}

# COMMON
networkServer="licensing.foo"
year="2025"
uninstall
createLicenseFile

# MAYA
pkgpath="/tmp/InstallMaya2025.app"
pKey="657Q1"
app="Maya"
runInstaller
licenseProperly

# MUDBOX
pkgpath="/tmp/InstallMudbox2025.app"
pKey="498Q1"
app="Mudbox"
runInstaller
licenseProperly

# TIDY
chown -R root:wheel /Applications/Autodesk
chmod -R 755 /Applications/Autodesk
# /bin/rm -rf "{$pkgpath}"
exit 0

LaszloTarnai
New Contributor II

My solution is the following (only the installation part):

pkgpath="/tmp/InstallMaya2025.app"

installMaya() {
	for PKG in $(find "$pkgpath" -name "*.pkg"); do
		echo "Installing $PKG"
		installer -pkg ${PKG} -target /
	done
	echo "Maya 2025 installed"
	
	sleep 3

	# Run the AdskIdentityManager-Installer.app in silent mode
	"$pkgpath"/Contents/Helper/Packages/AdskIdentityManager/AdskIdentityManager-Installer.app/Contents/MacOS/installbuilder.sh --mode unattended
	echo "Autodesk Identity Manager installed"
}

jonw
Contributor

Hi All,

Here's my solution for installing 2025 (and 2024) versions Autodesk Maya, Mudbox, and AutoCAD with edu network licenses.

    • Uses stock DMG's from Autodesk - no pkg hacking or repacking required!
    • Silently installs apps and licenses - no user interaction required
    • Works at loginwindow for multi-user lab/classroom deployment
    • Tested on both 2024 & 2025 app versions (macOS 13 & 14) AutoCAD, Maya & MudBox
    • Addresses this ODIS update issue - if you're unaware, GO READ THIS NOW, thank me later...
      https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/The-application-wi... 
    • My scripts still needs some error checking, logging etc.  I just wanted to provide the bare bones for what is working really well for me right now (knock on wood).
    • I'm seeing bits and pieces of my older scripts floating around, incorporated into other solutions, etc... this is not that, quite different, and in my opinion, much easier than the ways of past.
    • More details in the script notes - but I tried to make things easy to parse & modify. 
    • I hope it helps!


Steps are:

  1. Upload stock install dmg's to Jamf... don't forget the ODIS patch: Darwin.dmg!
  2. Create a policy to cache dmg's to clients
  3. Create a policy to run the script - or add to the cache policy, your call.

 

#!/bin/zsh

### Install Autodesk Apps and Licenses
### AutoCAD, Maya & MudBox (2025)

### 2025.07.19 -JonW


### Silently installs apps and licenses - no user interaction required
### Uses stock DMG's from Autodesk - no pkg hacking or repacking required!
### Works at loginwindow for multi-user lab/classroom deployment
### Tested on both 2024 & 2025 app versions (macOS 13 & 14) AutoCAD, Maya & MudBox
### A complete uninstall of previous versions is recommended but may not be necessary, ymmv
### Script could use some error checking, logging and fine tuning ... will get that on a slower day



### Ensure stock Autodesk install DMG's are set to CACHE (not INSTALL) via Jamf policy
### Update script variables in each of the 'app blocks' below
###   - fyi check PIT (app config file) paths every year!  Will need to perform a temporary manual installation to determine if they change or not.
###   - fyi more info on license options: /Library/Application\ Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper register --help



### !!! Important !!! 
### !!! 2025 Silent install patch info - aka ODIS update !!!
### https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/The-application-with-bundle-ID-com-autodesk-install-is-running-setugid-which-is-not-allowed-Exiting.html

###   I had to tweak the ODIS patcher... It sort of defeats the purpose if the patcher itself doesn't work silently! C'mon Autodesk!
###   (at least as of 2024.07.19) tweaks:
### - the /Volumes/Darwin/ path in the article is wrong!  For me it's loading as: /Volumes/Macintosh\ HD\ 1/
### - this thing will throw Apple quarantine issues - resolving with xattr (i.e. just ignore the article instructions!)
### - the article makes no mention of the patch .sh script flag --mode unattended !!!  
###   I found it by digging around in the patch files!  But hey, at least it's there right?  It's always something isn't it!? 




##############################################################################################
### Function
installApp ()
{
	if [[ -e "${dmg}" ]]; then
		### Mount dmg, install silently & unmount
		echo "installing: ${dmg}"
		hdiutil attach -nobrowse "${dmg}"
		"${Setup}" --silent
		hdiutil detach "${Volume}"
	else
		echo "cannot locate dmg for: ${dmg}"
		echo "skipping install attempt"
	fi
}



##############################################################################################
### Function
applyLicense ()
{
	if [[ -e "${ConfigFile}" ]]; then
		### Apply License
		### details: /Library/Application\ Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper register --help
		/Library/Application\ Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper register --pk "${ProductKey}" --pv "${ProductVersionYear}${productVersion}" --cf ${ConfigFile} --lm NETWORK --ls "${networkLicenseServer}"
	else
		echo "license attempt failed, for product: ${ProductKey}"
		echo ".pit config file could not be located"
	fi	
}



##############################################################################################
### Function
silentInstallPatchODIS ()
{
	### See notes above!!
	### Tweaks as of 2025.07.19 - be aware Autodesk could change this at any time!
	
	### This is the ODIS Update dmg
	hdiutil attach -nobrowse /private/tmp/Darwin.dmg 
	
	### Let's move contents out of DMG to a tmp dir
	mkdir -p /tmp/Autodesk_ODIS_Update_Contents
	cp -R /Volumes/Macintosh\ HD\ 1/* /tmp/Autodesk_ODIS_Update_Contents
	
	### Detach volume
	hdiutil detach /Volumes/Macintosh\ HD\ 1
	
	### fix quarantine issues - probably just need 2nd command, but let's go wild
	xattr -rd com.apple.quarantine /tmp/Autodesk_ODIS_Update_Contents
	xattr -rc /tmp/Autodesk_ODIS_Update_Contents
	
	### run patch script - note, found ref to the --mode unattended flag buried in one of the supporting files, not in article?!?
	/tmp/Autodesk_ODIS_Update_Contents/AdODIS-installer.app/Contents/MacOS/installbuilder.sh --mode unattended
}




##############################################################################################
##############################################################################################

### Begin script

##############################################################################################
##############################################################################################



#############################################################
### Move cached DMG's from Jamf staging area to /private/tmp/
mv /Library/Application\ Support/JAMF/Waiting\ Room/Autodesk* /private/tmp
mv /Library/Application\ Support/JAMF/Waiting\ Room/Darwin* /private/tmp



############################################
### Apply ODIS update - aka Silent install patch
silentInstallPatchODIS



##############################
### AutoCAD - install & license
networkLicenseServer="your.license.server.com"
ProductKey="777Q1" ### note, ProductKey may differ!
productVersion=".0.0.F" ### note, ProductVersion may differ!
ProductVersionYear="2025"
dmg=/private/tmp/Autodesk_AutoCAD_2025_macOS.dmg ### full path to install dmg in /tmp
Volume=/Volumes/Installer ### attached dmg volume
Setup=/Volumes/Installer/Install\ Autodesk\ AutoCAD\ 2025\ for\ Mac.app/Contents/Helper/Setup.app/Contents/MacOS/Setup ### full path of setup app
ConfigFile=/Library/Application\ Support/Autodesk/ADLM/.config/ProductInformation.pit ### full path of installed config file - used by license function
installApp
applyLicense



##############################
### Maya - install & license
networkLicenseServer="your.license.server.com"
ProductKey="657Q1" ### note, ProductKey may differ!
productVersion=".0.0.F" ### note, ProductVersion may differ!
ProductVersionYear="2025"
dmg=/private/tmp/Autodesk_Maya_2025_1_Update_macOS.dmg ### full path to install dmg in /tmp
Volume=/Volumes/Install\ Maya\ */  ### attached dmg volume
Setup=/Volumes/Install\ Maya\ 2025/Install\ Maya\ 2025.app/Contents/Helper/setup.app/Contents/MacOS/Setup ### full path of setup app
ConfigFile=/Library/Application\ Support/Autodesk/ADLM/PIT/2025/MayaConfig.pit ### full path of installed config file - used by license function
installApp
applyLicense



##############################
### Mudbox - install & license
networkLicenseServer="your.license.server.com"
ProductKey="498Q1" ### note, ProductKey may differ!
productVersion=".0.0.F" ### note, ProductVersion may differ!
ProductVersionYear="2025"
dmg=/private/tmp/Autodesk_Mudbox_2025_macOS.dmg ### full path to install dmg in /tmp
Volume=/Volumes/Install\ Mudbox\ */ ### attached dmg volume
Setup=/Volumes/Install\ Mudbox\ 2025/Install\ Mudbox\ 2025.app/Contents/Helper/setup.app/Contents/MacOS/Setup ### full path of setup app
ConfigFile=/Library/Application\ Support/Autodesk/ADLM/PIT/2025/MudboxConfig.pit ### full path of installed config file - used by license function
installApp
applyLicense



###########################################################################
### Verify license details for all apps - optional, but nice to see in logs
/Library/Application\ Support/Autodesk/AdskLicensing/Current/helper/AdskLicensingInstHelper list
echo "-------------------------"
echo "Autodesk install complete"
echo "-------------------------"



###########################################################################
### Ensure dmg volumes are detached
### Temporary script step, added last minute.  Still need to flesh this out
hdiutil detach /Volumes/Macintosh\ HD\ 1 > /dev/null 2>&1 ### This is the 'Darwin' ODIS Update dmg NOT the system volume
hdiutil detach /Volumes/Darwin* > /dev/null 2>&1
hdiutil detach /Volumes/Installer > /dev/null 2>&1
hdiutil detach /Volumes/Install\ Maya\ */ > /dev/null 2>&1
hdiutil detach /Volumes/Install\ Mudbox\ */ > /dev/null 2>&1




###########################################################################
### Clean up installers - optional, /private/tmp should auto purge on reboot
### rm -rf /private/tmp/Autodesk*
### rm -rf /private/tmp/Darwin*


	




kacey3
Contributor II

I had just discovered the issue with the AdODIS patch and was trying to incorporate that fix into my own install script and stumbled upon this. Thank you so much for including the "--mode unattended" key in your script. This was the exact piece I was missing.

MCerano
New Contributor II

Hey @jonw,

A few days ago I had managed to get this whole process working on my end, however now that I've updated the location of our license server I keep getting this error. I suspect that it has to do with the server update, but this same error happened when I changed it back to the original address. Any help would be appreciated!

 

  1. Executing Policy Install Maya 2025
  2. Caching package Install Darwin for Maya...
  3. Downloading https://avc.jamfcloud.com/jcds/downloads/Darwin.dmg...
  4. Verifying DMG...
  5. Caching package Install Maya 2025...
  6. Downloading https://avc.jamfcloud.com/jcds/downloads/Autodesk_Maya_2025_macOS.dmg...
  7. Verifying DMG...
  8. Running script Maya 2025 Install...
  9. Script exit code: 1
  10. Script result: expected CRC32 $8C6AF337
    /dev/disk4 GUID_partition_scheme
    /dev/disk4s1 Apple_APFS
    /dev/disk5 EF57347C-0000-11AA-AA11-0030654
    /dev/disk5s1 41504653-0000-11AA-AA11-0030654 /Volumes/Macintosh HD 1
    "disk4" ejected.
    installing: /private/tmp/Autodesk_Maya_2025_macOS.dmg
    expected CRC32 $D5C10959
    /dev/disk4 /Volumes/Install Maya 2025 2
    2024-08-08 09:00:17.735 Setup[28911:318069] The application with bundle ID com.autodesk.install is running setugid(), which is not allowed. Exiting.
    hdiutil: detach failed - No such file or directory
    [
    {
    "feature_id": "ARNOL",
    "def_prod_key": "C0PQ1",
    "def_prod_ver": "2025.0.0.F",
    "sel_prod_key": "C0PQ1",
    "sel_prod_ver": "2025.0.0.F",
    "lic_method": 4,
    "supported_lic_methods": [
    2,
    1,
    4
    ],
    "serial_number_sa": "000-00000000",
    "serial_number_nw": "000-00000000",
    "def_prod_code": "ARNOL",
    "sel_prod_code": "ARNOL"
    },
    {
    "feature_id": "MAYA",
    "def_prod_key": "657Q1",
    "def_prod_ver": "2025.0.0.F",
    "sel_prod_key": "657Q1",
    "sel_prod_ver": "2025.0.0.F",
    "lic_method": 1,
    "supported_lic_methods": [
    2,
    1,
    4
    ],
    "lic_servers": [
    "my license server here"
    ],
    "serial_number_sa": "000-00000000",
    "serial_number_nw": "000-00000000",
    "def_prod_code": "MAYA",
    "sel_prod_code": "MAYA"
    }
    ]
    -------------------------
    Autodesk install complete
    -------------------------
    /Library/Application Support/JAMF/tmp/Maya 2025 Install:150: no matches found: /Volumes/Darwin*
  11. Error running script: return code was 1.

The error "com.autodesk.install is running setugid(), which is not allowed" is definitely related to the AdODIS patch, but I have no idea of how it plays into this situation. Did you uninstall everything before the re-install attempt? Or at least unload the Autodesk Daemons and remove anything relevant in /Library/Application Support/FLEXnet Publisher/Service (careful other apps may use FLEXnet)?

launchctl bootout system /Library/LaunchDaemons/com.autodesk.AdskLicensingService.plist
launchctl bootout system /Library/LaunchDaemons/com.autodesk.adskaccessservicehost.plist

### the two Autodesk related directories I currently (yours may differ)
rm -rf /Library/Application\ Support/FLEXnet\ Publisher/Service/11.16.6
rm -rf /Library/Application\ Support/FLEXnet\ Publisher/Service/11.18.3

 

fwiw- you should be able to whip up a new script to just re-run the licensing bits with uninstalling apps.