Abelton Live - Anyone Deployed this??

kerouak
Valued Contributor

Before I go through the pain myself, I like to take the lazy route....

Anyone ???

Thanks

9 REPLIES 9

allanp81
Valued Contributor

Yes, I have...

It's a bit of a pain though as the licensing part has to be activated per account (this may vary depending on how you can licence it).

I basically just created a DMG of the .app directory in /Application and then I think you have to edit the file in /Library/Preferences to make sure that the libraries are pointing at %%USERNAME%% (there's documentation for this on their site).

Once installed it has to be manually activated. I then created a simple application that checks for the licence file and distributes to all users and adds to the user template for new users.

allanp81
Valued Contributor

https://help.ableton.com/hc/en-us/articles/209775405-Centralized-administration-of-Live-in-a-multi-user-environment-with-Sassafras-

blackholemac
Valued Contributor III

Was there just recently...my problem with it was twofold:

  1. @allanp81 described perfectly...every user who logs into the machine to use it has to perform an activation. I tried using Composer techniques with the activation portion but not a good result.

  2. From their website, they insisted that a single named user with valid email activate the thing. That's a no go for us because staff comes and goes, but our assets don't. What I finally had to do was activate it as me...then contact them by phone and change a bunch of crap after persuasion.

My advice...if Sassafras works and you have it use it...if not...have fun with getting this one out. Ultimately, I uploaded the package to Jamf Admin, but I am aware that when it deploys, I must deal with the manual activation. Basically I would have you imagine deploying Finale without the free site license monitor that they provide. They too can use Sassafras.

allanp81
Valued Contributor

I created a self service tool that any user can run (scoped to a smart group on machines that Ableton is installed on). It still relies on it being authorised at least once though.

#!/bin/bash
#check if Ableton has been authorised and copy unlock.cfg to all users and user template
#give user an error is it hasn't so far been authorised

cfgcheck=$( find /Users/ -name "Unlock.cfg" -print | grep -i "ableton" )

if [[ -z $cfgcheck ]]; then

    echo "No authorisation files have been created so Ableton must need to be activated still"

    /usr/bin/osascript <<-EOF
    set theDialogueText to "No Ableton authorisation files have been found.

    Please launch Ableton, authorise the software when prompted and then run this tool."
    display dialog theDialogueText buttons {"OK"}
    EOF

    echo "Now exit the application, user will receive an error saying installation failed"
    exit 1

else

    echo "Let's check for authorisation file(s)"

    #get the first path
    path=$( echo "$cfgcheck" | head -1 )

    echo $path

    UserList=`ls /Users | grep -v "Shared" | grep -v -i "admin" | grep -v -i ".localized" | grep -v -i "administrator" | grep -v -i "arduser"`

    for u in $UserList ; do
        echo "Copying Unlock.cfg to" $u
        mkdir -p /Users/$u/Library/Application Support/Ableton/Live 10.0.2/Unlock/
        cp "$path" /Users/$u/Library/Application Support/Ableton/Live 10.0.2/Unlock/
    done

    echo "Copying file to User Template"
    mkdir -p /System/Library/User Template/English.lproj/Library/Application Support/Ableton/Live 10.0.2/Unlock/
    cp "$path" /System/Library/User Template/English.lproj/Library/Application Support/Ableton/Live 10.0.2/Unlock/

    /usr/bin/osascript <<-EOF
    set theDialogueText to "The following users are now authorised:

    $UserList

    The authorisation has also been added to the user template so new users will be already authorised."
    display dialog theDialogueText buttons {"OK"}
    EOF

    exit 0  
fi

erowan
New Contributor III

I just deployed Ableton Live 10 Standard this week, following these instructions:

https://help.ableton.com/hc/en-us/articles/209073209-Centralized-administration-of-Live-in-a-multi-user-environment-without-Sassafras-
https://help.ableton.com/hc/en-us/articles/209772865-Options-txt-file-for-Live

Application:
Downloaded the .dmg from here: https://help.ableton.com/hc/en-us/articles/211934625-Latest-Live-Version

Factory Packs:
Installed the Live Packs on one workstation, then created a .dmg of the Factory Packs folder for deployment to a shared location on each workstation.

Configuration:
Authorized the license on each device, then created a per-device .dmg of these files:
1. Unlock.cfg - unique per authorized device
2. Library.cfg - same for each device (shared preferences)
3. Options.txt - same for each device (shared preferences)

Afterwards, I did a clean OS install of each device and deployed Live fine without needing to reauthorize. Control surfaces were automatically recognized / configured by Live. One item I need to follow up on: I included -_DisableAutoUpdates in the Options.txt file, but Live's preferences show that automatic updates are still enabled.

Adminham
New Contributor III

Old post - but if this helps anyone... You can 'globalise' license authorisation file by moving it from the User Library to /Library.
I went a step further & attempted to automate the process, which worked in earlier macOS versions, but seems broken now & haven't had the time to fix the keychain issues.. See my messy WIP script below:

#!/bin/bash

# Script to Setup Ableton Live for multiple users on Mac:
# https://www.ableton.com/en/help/article/authorize-all-users-osx/

# Using an admin account, open Ableton Live.
# When the dialog box appears to authorise, select authorise online.
# You will be redirected to a web browser.
# If the pre-loaded Keychain details haven't stuck, 
# login to the Ableton webstite with your Ableton account
# Once the software is authorised, take the authorisation file to the next computer & repeat the above steps if you want to generate a master file for multiple computers, else continue on with the steps below for single computers:

user=$(defaults read /Library/Preferences/com.apple.loginwindow.plist lastUserName)
# Ableton account login details
abletonaccount="xxxx"
password="xxxx"
# activation site
activationsite="http://www.ableton.com/en/account/authorize/?Language=EN&InstallationMedium=Download&InstallationVariant=Suite&Version=10.1.3&BaseProductId=02&Page=authorize&InstallationIsDemo=false"
# enter an email address if you want a copy of the authorization file emailed
emaillic_backup="xxxx"
JAMFHELPER='/Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper'
homepath=`finger "$user" | awk '/^Directory/ {print $2}'`

logfile=/var/log/AbletonLicensor-$(date +%Y%m%d-%H%M).log
exec >$logfile
exec 2> >(tee -a $logfile >&2)

echo "current user:" $user
echo "current homepath:" $homepath

if [ -e /Library/Application Support/Ableton/Live 10.1.3/Unlock/Unlock.cfg ]; then
echo "global license file already exists, displaying UI options"
    # Get the user's selection
    ALERTRESULT=`"$JAMFHELPER" -windowType utility -title "ALERT" -heading "Global license file alreay exists" -description "are you sure you want to re-license?" -icon "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Sync.icns" -button1 "OK" -button2 "Cancel"`

    if [ $ALERTRESULT == 0 ]; then
       # do button1 stuff
       echo "continue licensing.."
       rm -rf /Library/Application Support/Ableton/Live 10.1.3/Unlock/
    elif [ $ALERTRESULT == 2 ]; then
      # do button2 stuff
       echo "Cancel was pressed!"
       exit 1
    fi
fi

# add keychain password to automate login to activation website
#security add-internet-password -a "$abletonaccount" -s "https://www.ableton.com" -w $password -D "Internet Password" -U -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthSysAgent" -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthAgent" ~/Library/Keychains/login.keychain
#security add-internet-password -a "$abletonaccount" -l "www.ableton.com ($abletonaccount)" -s "www.ableton.com" -r "http" -w "$password" -t "ntlm" -j "default" -U -T "/Applications/Safari.app" -T "/Applications/Safari.app/Contents/MacOS/Safari" -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthSysAgent" -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthAgent" -T "/usr/bin/security" "$homepath"/Library/Keychains/login.keychain
sudo -u "$3" security add-internet-password -a "$abletonaccount" -l "www.ableton.com ($abletonaccount)" -s "https://www.ableton.com" -D "Web form password" -r "http" -w "$password" -t mrof -j "default" -T "/Applications/Safari.app" -T "/Applications/Safari.app/Contents/MacOS/Safari" -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthSysAgent" -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthAgent" -T "/usr/bin/security" "$homepath"/Library/Keychains/login.keychain

#echo "New keychain item added:"
sudo -u "$3" security find-internet-password -l "https://www.ableton.com" "$homepath"/Library/Keychains/login.keychain

killall cfprefsd
sleep 2
# perform activation
open "$activationsite"
#sleep 10


# loop here till license file is created
exec 3>&2
exec 2>>$logfile
while [[ `find "$homepath"/Library/Application Support/Ableton/Live 10.1.3/Unlock/Unlock.cfg` -eq 0 ]]; do
    echo '--- waiting for license...'
    "$JAMFHELPER" -windowType hud 
    -title 'waiting for license...'
    -heading 'Activating Ableton Live'
    -description 'login to ableton website to finish'
    -timeout 15 
    -icon '/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Sync.icns' -startlaunchd &
    sleep 15
    find "$homepath/Library/Application Support/Ableton/Live 10.1.3/Unlock/Unlock.cfg"
done
exec 2>&3
exec 2> >(tee -a $logfile >&2) # error log back to console


# create global license folder structure
echo "creating license structure & copying license.."
sudo mkdir /Library/Application Support/Ableton
sudo mkdir /Library/Application Support/Ableton/Live 10.1.3
sudo cp -r "$homepath"/Library/Application Support/Ableton/Live 10.1.3/Unlock /Library/Application Support/Ableton/Live 10.1.3/
sleep 5

# remove license directory from all previous users home folders
# as this can cause the global license to fail
echo "removing any license details from existing users.."
for USER_HOME in /Users/*
    do
        USER_UID=`basename "${USER_HOME}"`
        if [ ! "${USER_UID}" = "Shared" ]; then
            if [ -d "${USER_HOME}"/Library/Application Support/Ableton/Live 10.1.3/Unlock ]; then
                rm -rf "${USER_UID}" "${USER_HOME}"/Library/Application Support/Ableton/Live 10.1.3/Unlock
            fi
    fi
done

if [ -d "$homepath"/Library/Application Support/Ableton/Live 10.1.3/Unlock ]; then
    rm -rf "$homepath"/Library/Application Support/Ableton/Live 10.1.3/Unlock
fi

# email backup copy of license (so it can be restored)
echo "emailing license"
uuencode "/Library/Application Support/Ableton/Live 10.1.3/Unlock/Unlock.cfg" `hostname`-Ableton_Unlock.cfg | mail -s "Ableton license for `hostname`" email@org.com

# remove keychain
if [[ `security find-internet-password -l "www.ableton.com ($abletonaccount)" "$homepath"/Library/Keychains/login.keychain | grep "http://www.ableton.com"` == *"http://www.ableton.com"* ]]; then
    echo "found existing item, delete it"
    security delete-internet-password -l "www.ableton.com ($abletonaccount)" "$homepath"/Library/Keychains/login.keychain

else
    echo "no keychain item to delete"
fi

exit 0

Qwheel
Contributor II

Wow there's some really elaborate responses here...

For Ableton 9.7.7 (Pre-Catalina)

I did a snapshot.
I did a full Ableton installation.
I then updated the local admins preferences to relocate installed libraries to /Users/Shared.
I then installed the select libraries.
Ended snapshot and created a big PKG.
With the memory of it in Composer, I could break the big PKG into more digestible parts that could be deployed incrementally by JAMFCloud. This was done by passing the big PKG back into Composer and converting to source each time.

If you successfully managed to get items to upload and distribute on JAMFadmin.
You can then set about creating a login script to give newly logged in users the files they need.

I essentially duplicate the license files, and the premade ableton.plist, into the users account and then I changed the ownership of the files and folders.

So you can do something like this....

#!/bin/bash

#Required to reassign current users username to a variable.
CURRENT_USER=$(/usr/bin/python -c 'from SystemConfiguration import SCDynamicStoreCopyConsoleUser; import sys; username = (SCDynamicStoreCopyConsoleUser(None, None, None) or [None])[0]; username = [username,""][username in [u"loginwindow", None, u""]]; sys.stdout.write(username + "
");')
echo "Current users username is : $CURRENT_USER"

echo "Creating a directory to duplicate licensing contents to..."
sudo mkdir /Users/Shared/Ableton Licensing/Ableton

echo "Copying the contents of licensed accounts Ableton folder, to shared directory."
sudo ditto -rsrc /Users/LOCALADMIN/Library/Application Support/Ableton /Users/Shared/Ableton Licensing/Ableton

echo "Changing the owner of the shared directories"
sudo chown -R $CURRENT_USER:staff /Users/Shared/Ableton Licensing

echo "Copying the license files to $CURRENT_USER library"
sudo ditto -rsrc /Users/Shared/Ableton Licensing/Ableton /Users/$CURRENT_USER/Library/Application Support/Ableton

echo "Changing the owner of the shared preferences directories"
sudo chown -R $CURRENT_USER:staff /Users/Shared/Ableton Preferences

echo "Copying the preference files to $CURRENT_USER library"
sudo ditto -rsrc /Users/Shared/Ableton Preferences/ /Users/$CURRENT_USER/Library/Preferences

echo "Ableton License script finishing"

This was some really early work... not the most practical and the script isn't great to be honest.

I would suggest using...

ref="LOCALADMIN"

if [ $CURRENT_USER = $ref ]
then
  echo "current user $CURRENT_USER, = reference $ref"
  exit
else

fi

...instead and forgoing moving everything to /Users/Shared. I was still learning and was just trying to overcome a problem!
I can't remember off hand if this script had to run at every log-in or not either.

Just wanted to offer my two cents.

stephenb
New Contributor III

@erowan I think the UI not updating to reflect the preferences is just a bug. From my experience, once this is set in the Options.txt file, it won't autoupdate, regardless of the state of the UI.

mdaly
New Contributor II

Sassafras keyserver was the way to go for computer lab licensing.