Posted on 07-08-2024 04:45 AM
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.
Solved! Go to Solution.
Posted on 07-10-2024 01:19 AM
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"
}
Posted on 07-08-2024 05:13 AM
In general to execute an installer silently you can use:
installer -pkg /tmp/maya2025/AdskIdentityManager/AdskIdentityManager-Installer.app -target /
Posted on 07-08-2024 11:20 AM
Unfortunately no luck with this command.
installer: Error - the package path specified was invalid: '/tmp/InstallMaya2025.app/Contents/Helper/Packages/AdskIdentityManager/AdskIdentityManager-Installer.app'.
Posted on 07-08-2024 11:50 AM
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.
Posted on 07-09-2024 02:42 AM
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?
Posted on 07-09-2024 04:04 AM
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
Posted on 07-09-2024 09:55 AM
AdskIdentityManager doesn't install the full Maya software, only a component. I'm working to update the 2024 script for 2025 today.
Posted on 07-09-2024 10:43 AM
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"
##################################################
3 weeks ago
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?
3 weeks ago
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.
3 weeks ago
@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.
3 weeks ago
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!
2 weeks ago - last edited 2 weeks ago
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 `
#!/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
Posted on 07-10-2024 01:19 AM
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"
}
Posted on 07-22-2024 11:42 AM
Hi All,
Here's my solution for installing 2025 (and 2024) versions Autodesk Maya, Mudbox, and AutoCAD with edu network licenses.
Steps are:
#!/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*
Posted on 07-22-2024 12:20 PM
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.
a month ago
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!
a month ago
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
a month ago
fwiw- you should be able to whip up a new script to just re-run the licensing bits with uninstalling apps.