Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Adobe Offline Package Generator v0.1.2 (macOS only) --- No longer being updated.
#!/bin/bash
CYAN="$(tput bold; tput setaf 6)"
RESET="$(tput sgr0)"
clear
if command -v python3 > /dev/null 2>&1; then
if [ $(python3 -c "print('ye')") = "ye" ]; then
clear
echo "${CYAN}python3 found!${RESET}"
else
clear
echo "python3 found but non-functional" # probably xcode-select stub on Catalina+
echo "${CYAN}If you received a popup asking to install some tools, please accept.${RESET}"
read -n1 -r -p "Press [SPACE] when installation is complete, or any other key to abort." key
echo ""
if [ "$key" != '' ]; then
exit
fi
fi
else
echo "${CYAN}installing python3...${RESET}"
if ! command -v brew > /dev/null 2>&1; then
echo | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
fi
brew install python
fi
python3 -c 'import requests' > /dev/null 2>&1
if [ $? == 0 ]; then
echo "${CYAN}requests found!${RESET}"
else
echo "${CYAN}installing requests...${RESET}"
python3 -m pip install requests --user
fi
clear
echo "${CYAN}starting ccdl${RESET}"
python3 <(curl -s https://gist.githubusercontent.com/ayyybe/a5f01c6f40020f9a7bc4939beeb2df1d/raw/ccdl.py)
#!/usr/bin/env python3
# CHANGELOG (0.1.2-hotfix1)
# + updated script to work with new api (newer downloads work now)
# + added workaround for broken installer on big sur
# + made everything even more messy and disgusting
import os
import json
import argparse
import requests
session = requests.Session()
import shutil
from xml.etree import ElementTree as ET
from collections import OrderedDict
from subprocess import Popen, PIPE
VERSION = 4
VERSION_STR = '0.1.2-hotfix1'
CODE_QUALITY = 'FUCKING_AWFUL'
INSTALL_APP_APPLE_SCRIPT = '''
const app = Application.currentApplication()
app.includeStandardAdditions = true
ObjC.import('Cocoa')
ObjC.import('stdio')
ObjC.import('stdlib')
ObjC.registerSubclass({
name: 'HandleDataAction',
methods: {
'outData:': {
types: ['void', ['id']],
implementation: function(sender) {
const data = sender.object.availableData
if (data.length !== '0') {
const output = $.NSString.alloc.initWithDataEncoding(data, $.NSUTF8StringEncoding).js
const res = parseOutput(output)
if (res) {
switch (res.type) {
case 'progress':
Progress.additionalDescription = `Progress: ${res.data}%`
Progress.completedUnitCount = res.data
break
case 'exit':
if (res.data === 0) {
$.puts(JSON.stringify({ title: 'Installation succeeded' }))
} else {
$.puts(JSON.stringify({ title: `Failed with error code ${res.data}` }))
}
$.exit(0)
break
}
}
sender.object.waitForDataInBackgroundAndNotify
} else {
$.NSNotificationCenter.defaultCenter.removeObserver(this)
}
}
}
}
})
function parseOutput(output) {
let matches
matches = output.match(/Progress: ([0-9]{1,3})%/)
if (matches) {
return {
type: 'progress',
data: parseInt(matches[1], 10)
}
}
matches = output.match(/Exit Code: ([0-9]{1,3})/)
if (matches) {
return {
type: 'exit',
data: parseInt(matches[1], 10)
}
}
return false
}
function shellescape(a) {
var ret = [];
a.forEach(function(s) {
if (/[^A-Za-z0-9_\\/:=-]/.test(s)) {
s = "'"+s.replace(/'/g,"'\\\\''")+"'";
s = s.replace(/^(?:'')+/g, '') // unduplicate single-quote at the beginning
.replace(/\\\\\'''/g, "\\\\'" ); // remove non-escaped single-quote if there are enclosed between 2 escaped
}
ret.push(s);
});
return ret.join(' ');
}
function run() {
const appPath = app.pathTo(this).toString()
//const driverPath = appPath.substring(0, appPath.lastIndexOf('/')) + '/products/driver.xml'
const driverPath = appPath + '/Contents/Resources/products/driver.xml'
const hyperDrivePath = '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Setup'
// The JXA Objective-C bridge is completely broken in Big Sur
if (!$.NSProcessInfo && parseFloat(app.doShellScript('sw_vers -productVersion')) >= 11.0) {
app.displayAlert('GUI unavailable in Big Sur', {
message: 'JXA is currently broken in Big Sur.\\nInstall in Terminal instead?',
buttons: ['Cancel', 'Install in Terminal'],
defaultButton: 'Install in Terminal',
cancelButton: 'Cancel'
})
const cmd = shellescape([ 'sudo', hyperDrivePath, '--install=1', '--driverXML=' + driverPath ])
app.displayDialog('Run this command in Terminal to install (press \\'OK\\' to copy to clipboard)', { defaultAnswer: cmd })
app.setTheClipboardTo(cmd)
return
}
const args = $.NSProcessInfo.processInfo.arguments
const argv = []
const argc = args.count
for (var i = 0; i < argc; i++) {
argv.push(ObjC.unwrap(args.objectAtIndex(i)))
}
delete args
const installFlag = argv.indexOf('-y') > -1
if (!installFlag) {
app.displayAlert('Adobe Package Installer', {
message: 'Start installation now?',
buttons: ['Cancel', 'Install'],
defaultButton: 'Install',
cancelButton: 'Cancel'
})
const output = app.doShellScript(`"${appPath}/Contents/MacOS/applet" -y`, { administratorPrivileges: true })
const alert = JSON.parse(output)
alert.params ? app.displayAlert(alert.title, alert.params) : app.displayAlert(alert.title)
return
}
const stdout = $.NSPipe.pipe
const task = $.NSTask.alloc.init
task.executableURL = $.NSURL.alloc.initFileURLWithPath(hyperDrivePath)
task.arguments = $(['--install=1', '--driverXML=' + driverPath])
task.standardOutput = stdout
const dataAction = $.HandleDataAction.alloc.init
$.NSNotificationCenter.defaultCenter.addObserverSelectorNameObject(dataAction, 'outData:', $.NSFileHandleDataAvailableNotification, $.initialOutputFile)
stdout.fileHandleForReading.waitForDataInBackgroundAndNotify
let err = $.NSError.alloc.initWithDomainCodeUserInfo('', 0, '')
const ret = task.launchAndReturnError(err)
if (!ret) {
$.puts(JSON.stringify({
title: 'Error',
params: {
message: 'Failed to launch task: ' + err.localizedDescription.UTF8String
}
}))
$.exit(0)
}
Progress.description = "Installing packages..."
Progress.additionalDescription = "Preparing…"
Progress.totalUnitCount = 100
task.waitUntilExit
}
'''
ADOBE_PRODUCTS_XML_URL = 'https://cdn-ffc.oobesaas.adobe.com/core/v5/products/all?_type=xml&channel=ccm,sti&platform=osx10,osx10-64&productType=Desktop'
ADOBE_APPLICATION_JSON_URL = 'https://cdn-ffc.oobesaas.adobe.com/core/v3/applications'
DRIVER_XML = '''<DriverInfo>
<ProductInfo>
<Name>Adobe {name}</Name>
<SAPCode>{sapCode}</SAPCode>
<CodexVersion>{version}</CodexVersion>
<Platform>osx10-64</Platform>
<EsdDirectory>./{sapCode}</EsdDirectory>
<Dependencies>
{dependencies}
</Dependencies>
</ProductInfo>
<RequestInfo>
<InstallDir>/Applications</InstallDir>
<InstallLanguage>{language}</InstallLanguage>
</RequestInfo>
</DriverInfo>
'''
DRIVER_XML_DEPENDENCY = ''' <Dependency>
<SAPCode>{sapCode}</SAPCode>
<BaseVersion>{version}</BaseVersion>
<EsdDirectory>./{sapCode}</EsdDirectory>
</Dependency>'''
ADOBE_REQ_HEADERS = {
'X-Adobe-App-Id': 'accc-hdcore-desktop',
'User-Agent': 'Adobe Application Manager 2.0',
'X-Api-Key': 'CC_HD_ESD_1_0'
}
def dl(filename, url):
with session.get(url, stream=True, headers=ADOBE_REQ_HEADERS) as r:
with open(filename, 'wb') as f:
shutil.copyfileobj(r.raw, f)
def r(url, headers=ADOBE_REQ_HEADERS):
req = session.get(url, headers=headers)
req.encoding = 'utf-8'
return req.text
def get_products_xml():
return ET.fromstring(r(ADOBE_PRODUCTS_XML_URL))
def parse_products_xml(products_xml):
cdn = products_xml.find('channel/cdn/secure').text
products = {}
parent_map = {c: p for p in products_xml.iter() for c in p}
for p in products_xml.findall('channel/products/product'):
displayName = p.find('displayName').text
sap = p.get('id')
version = p.get('version')
dependencies = list(p.find('platforms/platform/languageSet/dependencies'))
if not products.get(sap):
if p.find('productInfoPage'):
print(p.find('productInfoPage').text)
products[sap] = {
'hidden': p.find('platforms/platform').get('id') != 'osx10-64' or parent_map[parent_map[p]].get('name') != 'ccm',
'displayName': displayName,
'sapCode': sap,
'versions': OrderedDict()
}
products[sap]['versions'][version] = {
'sapCode': sap,
'version': version,
'dependencies': [{
'sapCode': d.find('sapCode').text, 'version': d.find('baseVersion').text
} for d in dependencies],
'buildGuid': p.find('platforms/platform/languageSet').get('buildGuid')
}
return products, cdn
def get_application_json(buildGuid):
headers = ADOBE_REQ_HEADERS.copy()
headers['x-adobe-build-guid'] = buildGuid
return json.loads(r(ADOBE_APPLICATION_JSON_URL, headers))
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--installLanguage', help='Language code (eg. en_US)', action='store')
parser.add_argument('-s', '--sapCode', help='SAP code for desired product (eg. PHSP)', action='store')
parser.add_argument('-v', '--version', help='Version of desired product (eg. 21.0.3)', action='store')
parser.add_argument('-d', '--destination', help='Directory to download installation files to', action='store')
args = parser.parse_args()
ye = int((32 - len(VERSION_STR)) / 2)
print('=================================')
print('= Adobe macOS Package Generator =')
print('{} {} {}\n'.format('='*ye, VERSION_STR, '='*(31-len(VERSION_STR)-ye)))
if (not os.path.isfile('/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Setup')):
print('Adobe HyperDrive installer not found.\nPlease make sure the Creative Cloud app is installed.')
exit(1)
print('Downloading products.xml\n')
products_xml = get_products_xml()
print('Parsing products.xml')
products, cdn = parse_products_xml(products_xml)
print('CDN: ' + cdn)
print(str(len([p for p in products if not products[p]['hidden']])) + ' products found:')
sapCode = None
if (args.sapCode):
if products.get(args.sapCode):
print('\nUsing provided SAP Code: ' + args.sapCode)
sapCode = args.sapCode
else:
print('\nProvided SAP Code not found in products: ' + args.sapCode)
print('')
if not sapCode:
for p in products.values():
if not p['hidden']:
print('[{}] {}'.format(p['sapCode'], p['displayName']))
while sapCode is None:
val = input('\nPlease enter the SAP Code of the desired product (eg. PHSP for Photoshop): ')
if val == 'APRO':
print('\033[1;31mAcrobat is currently broken, please sit tight while I try to find a solution.\nAll other products are functional.\033[0m')
elif products.get(val):
sapCode = val
else:
print('{} is not a valid SAP Code. Please use a value from the list above.'.format(val))
product = products.get(sapCode)
versions = product['versions']
version = None
if (args.version):
if versions.get(args.version):
print('\nUsing provided version: ' + args.version)
version = args.version
else:
print('\nProvided version not found: ' + args.version)
print('')
if not version:
for v in reversed(versions.values()):
print('{} {}'.format(product['displayName'], v['version']))
while version is None:
val = input('\nPlease enter the desired version (eg. 21.2.3): ')
if versions.get(val):
version = val
else:
print('{} is not a valid version. Please use a value from the list above.'.format(val))
print('')
langs = [ 'en_US', 'en_GB', 'en_IL', 'en_AE', 'es_ES', 'es_MX', 'pt_BR', 'fr_FR', 'fr_CA', 'fr_MA', 'it_IT', 'de_DE', 'nl_NL', 'ru_RU', 'uk_UA', 'zh_TW', 'zh_CN', 'ja_JP', 'ko_KR', 'pl_PL', 'hu_HU', 'cs_CZ', 'tr_TR', 'sv_SE', 'nb_NO', 'fi_FI', 'da_DK' ]
installLanguage = None
if (args.installLanguage):
if (args.installLanguage in langs):
print('\nUsing provided language: ' + args.installLanguage)
installLanguage = args.installLanguage
else:
print('\nProvided language not available: ' + args.installLanguage)
if not installLanguage:
print('Available languages: {}'.format(', '.join(langs)))
while installLanguage is None:
val = input('\nPlease enter the desired install language, or nothing for [en_US]: ') or 'en_US'
if (val in langs):
installLanguage = val
else:
print('{} is not available. Please use a value from the list above.'.format(val))
dest = None
if (args.destination):
print('\nUsing provided destination: ' + args.destination)
dest = args.destination
else:
print('\nPlease navigate to the desired downloads folder, or cancel to abort.')
p = Popen(['/usr/bin/osascript', '-e', 'tell application (path to frontmost application as text)\nset _path to choose folder\nPOSIX path of _path\nend'], stdout=PIPE)
dest = p.communicate()[0].decode('utf-8').strip()
if (p.returncode != 0):
print('Exiting...')
exit()
print('')
install_app_name = 'Install {}_{}-{}.app'.format(sapCode, version, installLanguage)
install_app_path = os.path.join(dest, install_app_name)
print('sapCode: ' + sapCode)
print('version: ' + version)
print('installLanguage: ' + installLanguage)
print('dest: ' + install_app_path)
prodInfo = versions[version]
prods_to_download = [{ 'sapCode': d['sapCode'], 'version': d['version'], 'buildGuid': products[d['sapCode']]['versions'][d['version']]['buildGuid'] } for d in prodInfo['dependencies']]
prods_to_download.insert(0, { 'sapCode': prodInfo['sapCode'], 'version': prodInfo['version'], 'buildGuid': prodInfo['buildGuid'] })
print(prods_to_download)
print('\nCreating {}'.format(install_app_name))
install_app_path = os.path.join(dest, 'Install {}_{}-{}.app'.format(sapCode, version, installLanguage))
with Popen(['/usr/bin/osacompile', '-l', 'JavaScript', '-o', os.path.join(dest, install_app_path)], stdin=PIPE) as p:
p.communicate(INSTALL_APP_APPLE_SCRIPT.encode('utf-8'))
icon_path = '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/CreativeCloudInstaller.icns'
shutil.copyfile(icon_path, os.path.join(install_app_path, 'Contents', 'Resources', 'applet.icns'))
products_dir = os.path.join(install_app_path, 'Contents', 'Resources', 'products')
print('\nPreparing...\n')
for p in prods_to_download:
s, v = p['sapCode'], p['version']
product_dir = os.path.join(products_dir, s)
app_json_path = os.path.join(product_dir, 'application.json')
print('[{}_{}] Downloading application.json'.format(s, v))
app_json = get_application_json(p['buildGuid'])
p['application_json'] = app_json
print('[{}_{}] Creating folder for product'.format(s, v))
os.makedirs(product_dir, exist_ok=True)
print('[{}_{}] Saving application.json'.format(s, v))
with open(app_json_path, 'w') as file:
json.dump(app_json, file, separators=(',', ':'))
print('')
print ('Downloading...\n')
for p in prods_to_download:
s, v = p['sapCode'], p['version']
app_json = p['application_json']
product_dir = os.path.join(products_dir, s)
print('[{}_{}] Parsing available packages'.format(s, v))
core_pkg_count = 0
noncore_pkg_count = 0
packages = app_json['Packages']['Package']
download_urls = []
for pkg in packages:
if pkg.get('Type') and pkg['Type'] == 'core':
core_pkg_count += 1
download_urls.append(cdn + pkg['Path'])
else:
if ((not pkg.get('Condition')) or installLanguage in pkg['Condition']): # TODO: actually parse `Condition` and check it properly (and maybe look for & add support for conditions other than installLanguage)
noncore_pkg_count += 1
download_urls.append(cdn + pkg['Path'])
print('[{}_{}] Selected {} core packages and {} non-core packages'.format(s, v, core_pkg_count, noncore_pkg_count))
for url in download_urls:
name = url.split('/')[-1].split('?')[0]
print('[{}_{}] Downloading {}'.format(s, v, name))
dl(os.path.join(product_dir, name), url)
print('\nGenerating driver.xml')
driver = DRIVER_XML.format(
name = product['displayName'],
sapCode = prodInfo['sapCode'],
version = prodInfo['version'],
dependencies = '\n'.join([DRIVER_XML_DEPENDENCY.format(
sapCode = d['sapCode'],
version = d['version']
) for d in prodInfo['dependencies']]),
language = installLanguage
)
with open(os.path.join(products_dir, 'driver.xml'), 'w') as f:
f.write(driver)
f.close()
print('\nPackage successfully created. Run {} to install.'.format(install_app_path))
#!/bin/bash
CYAN="$(tput bold; tput setaf 6)"
RESET="$(tput sgr0)"
curl https://gist.githubusercontent.com/ayyybe/a5f01c6f40020f9a7bc4939beeb2df1d/raw/ccdl.command -o "/Applications/Adobe Packager.command"
chmod +x "/Applications/Adobe Packager.command"
clear
echo "${CYAN}Done! You can now start /Applications/Adobe Packager.command to begin${RESET}"
exit
@dukuo

This comment has been minimized.

Copy link

@dukuo dukuo commented May 8, 2020

Hi thanks for sharing! Would you know any links towards a Windows version?
Cheers!

@ayyybe

This comment has been minimized.

Copy link
Owner Author

@ayyybe ayyybe commented May 8, 2020

CCMaker works pretty well for Windows. I don't know which sources for it are safe so I won't link any, but you should be able to find it easily.

@Col0nelPan1c

This comment has been minimized.

Copy link

@Col0nelPan1c Col0nelPan1c commented May 9, 2020

Totally incompetent unknowledgable unworthy noob here, (self deprecation is the highest form of AI Flattery I’m told) so please forgive me in advance...

I know from my endless hours of research amongst 3 trusted & reliable sources that I should be looking to acquire (slightly) previous versions of the Adobe apps than what are offered via CC, for a slew of reasons. I also know that this “code block” does exactly that, which is great..

However, I am “Terminal Deficient” at the highest order, & so a combined ~430 lines of code would surely result in my laptop spontaneously combusting merely 1/2-through...

Can the entire block be copy/pasted? Do I have to have X Code, HomeBrew, or Command Line Tools installed? Is there any similar method for acquiring these installers that is slightly more GUI based?

Lastly, based on the content of my queries, & the lack of competency they so clearly demonstrate, is it a pretty safe assumption that I should keep looking for a method to acquire adobe installers? (Early CC 2020 was my general target zone, but certainly I would be thrilled w/ even say the latest 2019 CC, OR EVEN a mid-late 2019, if it had the advantage of more simplicity in the install process etc.

Sorry to pollute your comment thread here with this, just hoping that either someone pity’s me enough to help me in my (narrowly focused) quest, &/or can point me in the direction of an alternative solution.

Thx for all your hard work, Genuinely hope I’m not out of order with my question here.

@ayyybe

This comment has been minimized.

Copy link
Owner Author

@ayyybe ayyybe commented May 9, 2020

@Col0nelPan1c you can just run /bin/bash -c "$(curl -fsSL https://gist.githubusercontent.com/ayyybe/a5f01c6f40020f9a7bc4939beeb2df1d/raw/install.sh)" in Terminal, and then run "Adobe Packager.command" in your /Applications folder. It should be able to automatically configure itself in most setups.

@Col0nelPan1c

This comment has been minimized.

Copy link

@Col0nelPan1c Col0nelPan1c commented May 9, 2020

Thank you so very much. Wish me luck, I shall embark upon this new frontier posthaste!

@kay-dotcom

This comment has been minimized.

Copy link

@kay-dotcom kay-dotcom commented May 13, 2020

@Col0nelPan1c you can just run /bin/bash -c "$(curl -fsSL https://gist.githubusercontent.com/ayyybe/a5f01c6f40020f9a7bc4939beeb2df1d/raw/install.sh)" in Terminal, and then run "Adobe Packager.command" in your /Applications folder. It should be able to automatically configure itself in most setups.

Hi there, how do I fin Adobe Packager.command? I don't see it in my applications folder.

@alouanemed

This comment has been minimized.

Copy link

@alouanemed alouanemed commented May 27, 2020

I am getting this after launching the app

Populating .adobe.com cookies
Downloading products.xml

Traceback (most recent call last):
  File "/dev/fd/63", line 244, in <module>
  File "/dev/fd/63", line 189, in get_products_xml
  File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/xml/etree/ElementTree.py", line 1316, in XML
    return parser.close()
xml.etree.ElementTree.ParseError: no element found: line 1, column 0
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]


@idarek

This comment has been minimized.

Copy link

@idarek idarek commented Jun 5, 2020

Working perfectly by following in terminal
/bin/bash -c "$(curl -fsSL https://gist.githubusercontent.com/ayyybe/a5f01c6f40020f9a7bc4939beeb2df1d/raw/install.sh)"

and than running command from /Applications through terminal. Thanks.

@chriswayg

This comment has been minimized.

Copy link

@chriswayg chriswayg commented Jun 30, 2020

Nice script @ayyybe, which works very well! - I forked it and added some documentation as well as a binary built with pyinstaller. You can check it out here:

https://github.com/chriswayg/CC-Offline-Package-Generator (MOVED)

This should also help users like @Col0nelPan1c who asked above:

However, I am “Terminal Deficient” at the highest order, ...
Is there any similar method for acquiring these installers that is slightly more GUI based?

@frankyw

This comment has been minimized.

Copy link

@frankyw frankyw commented Jul 1, 2020

Nice script @ayyybe, which works very well! - I forked it and added some documentation as well as a binary built with pyinstaller. You can check it out here:

https://github.com/chriswayg/Adobe-Offline-Package-Generator

Very nice @chriswayg and @ayyybe, worked perfectly on Catalina 10.15.5. Hopefully we can keep this updated in a proper repo, as this is much better than looking for links on reddit.

@chriswayg

This comment has been minimized.

Copy link

@chriswayg chriswayg commented Jul 7, 2020

Very nice @chriswayg and @ayyybe, worked perfectly on Catalina 10.15.5. Hopefully we can keep this updated in a proper repo, as this is much better than looking for links on reddit.

I am glad you like it, @frankyw. I cleaned up and moved the repo to this location:

MOVED TO: https://github.com/chriswayg/CC-Offline-Package-Generator

I hope @ayyybe will be able to continue to improve the script which does the actual work. I merely created an easy to install wrapper.

@chriswayg

This comment has been minimized.

Copy link

@chriswayg chriswayg commented Jul 7, 2020

I was able to reproduce: Install MUSE_2018.1.1-en_AE.app Failed with error code 182 installation error

I get the same result on Mojave in /Library/Logs/Adobe/Installers/Install.log

FATAL: Package Zip '/Users/editor/Desktop/Install MUSE_2018.1.1-en_US.app/Contents/Resources/products/./MUSE/AdobeMuse2018.1.1-legal.zip' is not present in ESD Mode
FATAL: Error occurred in install product workflow with error code 182 error message 

Using dummy files will get to this point in the log:

 Completed 'DOWNLOAD' task for Package (Name: AdobeMuse2018.1.1-core Version: 2018.1.1.29), Time taken '0' sec 
 Completed 'DOWNLOAD' task for Package (Name: AdobeMuse2018.1.1-en_US Version: 2018.1.1.29), Time taken '0' sec 

It is looking for two files which are missing:

 Completed 'DOWNLOAD' task for Package (Name: AdobeMuse2018.1.1-legal Version: 2018.1.1.29), Time taken '0' sec 
 Completed 'DOWNLOAD' task for Package (Name: AdobeMuse2018.1.1-AMT Version: 2018.1.1.29), Time taken '0' sec 

@ayyybe, how would you fetch these files from Adobe in Python code?

@naeepalm

This comment has been minimized.

Copy link

@naeepalm naeepalm commented Jul 16, 2020

Screen Shot 2020-07-15 at 8 43 47 PM

Hello, there something wrong with the script. I keep getting this error. I did it once already and it worked perfectly but now this script error keeps happening. Can you help?
@Schrodingers-Neko

This comment has been minimized.

Copy link

@Schrodingers-Neko Schrodingers-Neko commented Jul 24, 2020

It worked, thanks a lot! I only have one suggestion: add a progress bar like "#############................." and a percentage for downloading.

@luanafaustini

This comment has been minimized.

Copy link

@luanafaustini luanafaustini commented Aug 3, 2020

All perfectly installed at Catalina 10.15.6. Thank you for saving my a**!!

@bagadefente

This comment has been minimized.

Copy link

@bagadefente bagadefente commented Aug 14, 2020

Hi! Can someone help me how to use on older macOS (El Capitan, 10.11).
I was able to use on 10.14, but my mac died and i'm using an old 2009 macbook pro and need to instal Premiere 12.1.2 on it.
I removed 12.0, but when I try to download the update, after choose app, version and language, I get this:

Creating Install PPRO_12.1.2-en_US.app
compilation error: Error on line 45: SyntaxError: Unexpected identifier 'matches' (-2700)
Traceback (most recent call last):
File "/dev/fd/63", line 352, in
File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/shutil.py", line 261, in copyfile
with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/bagadefente/Downloads/Install PPRO_12.1.2-en_US.app/Contents/Resources/applet.icns'
logout
Saving session...

Any help is welcome.
Thanks!

@troha2

This comment has been minimized.

Copy link

@troha2 troha2 commented Aug 17, 2020

Hello! Do you know why the latest versions can't be downloaded anymore?

@xboto

This comment has been minimized.

Copy link

@xboto xboto commented Aug 24, 2020

Hi! Can someone help me how to use on older macOS (El Capitan, 10.11).
I was able to use on 10.14, but my mac died and i'm using an old 2009 macbook pro and need to instal Premiere 12.1.2 on it.
I removed 12.0, but when I try to download the update, after choose app, version and language, I get this:

Creating Install PPRO_12.1.2-en_US.app
compilation error: Error on line 45: SyntaxError: Unexpected identifier 'matches' (-2700)
Traceback (most recent call last):
File "/dev/fd/63", line 352, in
File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/shutil.py", line 261, in copyfile
with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/bagadefente/Downloads/Install PPRO_12.1.2-en_US.app/Contents/Resources/applet.icns'
logout
Saving session...

Any help is welcome.
Thanks!

Apparently your Python 3 & PIP 3 installation is not correct, reinstall python3 & pip3 with brew.

@tobibankole

This comment has been minimized.

Copy link

@tobibankole tobibankole commented Sep 7, 2020

This is awesome!

@maquinasombras

This comment has been minimized.

Copy link

@maquinasombras maquinasombras commented Sep 19, 2020

hello!
i have a brand new computer that came with macOS Catalina 10.15.6. this operating system seems to be apple's final gatekeeping statement and now all my softwares are down. either, they won't open or simply crash. i have been trying to download your offline adobe package without success. this is the message i get:

Screenshot 2020-09-19 at 18 18 24

is there a way to open the installer and bypassing this security gatekeeping?

all advise is welcome!
thank you all to contributing to open source knowledge and use!

@tuskuno

This comment has been minimized.

Copy link

@tuskuno tuskuno commented Sep 20, 2020

is there a way to open the installer and bypassing this security gatekeeping?

download "Command Line Tools for Xcode 12" from here https://developer.apple.com/download/more/ works just fine

hi! rookie here posting/commenting for the first time. I don't think that's a gatekeeper issue since you're downloading from apple's servers, but I couldn't figure out why the download failed either. from what little I understand the script can also run through xcode developer tools but those failed to download as well. that made me suspicious so I tried downloading manually from apple developer and it worked just fine. dunno why the automatic download doesn't work tho maybe just a glitch on apple's part?

@maquinasombras

This comment has been minimized.

Copy link

@maquinasombras maquinasombras commented Sep 21, 2020

thank you for your advise rookie
i have downloaded "command line tools for xcode 12", the package now runs but gives me the following error message:
Screenshot 2020-09-21 at 11 34 03
any advise on how to proceed?

ps: do i need to have already installed AdobeZii for this to work?

@troha2

This comment has been minimized.

Copy link

@troha2 troha2 commented Sep 22, 2020

Getting errors, does not work for me.
[PPRO_14.4] Downloading application.json Traceback (most recent call last): File "/dev/fd/63", line 364, in <module> File "/dev/fd/63", line 221, in get_application_json File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/__init__.py", line 357, in loads return _default_decoder.decode(s) File `"/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py",` line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) logout Saving session... ...copying shared history... ...saving history...truncating history files... ...completed.

@yozhic

This comment has been minimized.

Copy link

@yozhic yozhic commented Sep 26, 2020

Same errors on my end.

@ccfman2004

This comment has been minimized.

Copy link

@ccfman2004 ccfman2004 commented Sep 27, 2020

Same here

@Tb3986

This comment has been minimized.

Copy link

@Tb3986 Tb3986 commented Oct 21, 2020

Is possible to get an update please?

@yozhic

This comment has been minimized.

Copy link

@yozhic yozhic commented Oct 26, 2020

@ALL subscribers: the script has been silently updated. Download the new version 4.

@medusamask

This comment has been minimized.

Copy link

@medusamask medusamask commented Nov 11, 2020

I get this message:

=================================
= Adobe macOS Package Generator =
========= 0.1.2-hotfix1 =========

Adobe HyperDrive installer not found.
Please make sure the Creative Cloud app is installed.

Using MacOS Catalina 10.15.7

@jonXmack

This comment has been minimized.

Copy link

@jonXmack jonXmack commented Nov 17, 2020

@heismauri

This comment has been minimized.

Copy link

@heismauri heismauri commented Dec 7, 2020

@ayyybe will it be possible to add a progress bar to the downloads? My internet connection is not that good so I hope for the best when I run the script... thanks

@Tb3986

This comment has been minimized.

Copy link

@Tb3986 Tb3986 commented Dec 9, 2020

Required for an update, i guess

[PHSP_22.1] Downloading application.json
Traceback (most recent call last):
File "/dev/fd/63", line 387, in
File "/dev/fd/63", line 236, in get_application_json
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/init.py", line 346, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

@D15co5tu

This comment has been minimized.

Copy link

@D15co5tu D15co5tu commented Dec 16, 2020

This all worked well until doing the clicking the install link and getting 'Failed with error code 103'. From a quick google search this seem to be an Adobe server connection error.
Can anyone enlighten me how to solve this, like Col0nelPan1c I am mostly “Terminal Deficient” so keep it simple please.

@jboutin2010

This comment has been minimized.

Copy link

@jboutin2010 jboutin2010 commented Dec 17, 2020

I keep getting this any ideas?

starting ccdl
/Applications/Adobe Packager.command: line 41: python3: command not found
logout
Saving session...
...copying shared history...
...saving history...truncating history files...

@Soxxman235

This comment has been minimized.

Copy link

@Soxxman235 Soxxman235 commented Dec 21, 2020

whenever I try to use Command prompt to install this it just says "the system cannot find the path specified". Am I using the wrong thing for pc or should I do something different?

@ccfman2004

This comment has been minimized.

Copy link

@ccfman2004 ccfman2004 commented Dec 24, 2020

I keep getting this any ideas?

starting ccdl
/Applications/Adobe Packager.command: line 41: python3: command not found
logout
Saving session...
...copying shared history...
...saving history...truncating history files...

Did you install Python 3? The error indicates it can't find the Python 3 executable.

@SaadBazaz

This comment has been minimized.

Copy link

@SaadBazaz SaadBazaz commented Jan 5, 2021

Hey, I've forked your Gist and given the final download a Progress bar... I get anxious when there's no visual display of progress so I thought it'd be a nice addition :D

Link: https://gist.github.com/SaadBazaz/37f41fffc66efea798f19582174e654c

@MiqViq

This comment has been minimized.

Copy link

@MiqViq MiqViq commented Mar 1, 2021

This is very nice tool!
However, I would prefer to have installer apps to have the actual application name on them.
And if you could send the ccdl.py arguments like SAP and version (like latest) and it could automatically downoad and compose the latest version of available app.
...actually I found out that it can be semi-automated using an external script with arguments.

@elkaboing

This comment has been minimized.

Copy link

@elkaboing elkaboing commented Mar 5, 2021

Just a fresh install of CC on a couple computers and receive the following error:

Creating Install PHSP_22.1.1-en_US.app Traceback (most recent call last): File "/dev/fd/63", line 390, in <module> File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/shutil.py", line 261, in copyfile with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst: FileNotFoundError: [Errno 2] No such file or directory: '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/app.icns'

When I navigate to /Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/ indeed there's no app.icns file

@duemanisinistre

This comment has been minimized.

Copy link

@duemanisinistre duemanisinistre commented Mar 7, 2021

@elkaboing
Go to "/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/"
Make a copy of "CreativeCloudInstaller.icns" and rename the copy to "app.icns"
It should work.

@elkaboing

This comment has been minimized.

Copy link

@elkaboing elkaboing commented Mar 9, 2021

@duemanisinistre This worked perfect, thank you

@elkaboing
Go to "/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/"
Make a copy of "CreativeCloudInstaller.icns" and rename the copy to "app.icns"
It should work.

@freddie187

This comment has been minimized.

Copy link

@freddie187 freddie187 commented Mar 10, 2021

Hey everyone, I have a problem similiar to elkaboing, following error:

sapCode: PHSP version: 21.2.6 installLanguage: en_US dest: /Applications/PHSP/Install PHSP_21.2.6-en_US.app [{'sapCode': 'PHSP', 'version': '21.2.6', 'buildGuid': 'e5beb7b6-ed44-4d50-9838-fbd51c31c64f'}, {'sapCode': 'ACR', 'version': '9.6', 'buildGuid': '3fc409fc-c3fa-11e9-b9c5-12148b63a89a'}, {'sapCode': 'COCM', 'version': '1.0', 'buildGuid': '3fc3cb53-c3fa-11e9-b9c5-12148b63a89a'}, {'sapCode': 'CORG', 'version': '1.0', 'buildGuid': '3fc3cf0a-c3fa-11e9-b9c5-12148b63a89a'}, {'sapCode': 'CORE', 'version': '1.0', 'buildGuid': '3fc3d387-c3fa-11e9-b9c5-12148b63a89a'}, {'sapCode': 'COPS', 'version': '1.0', 'buildGuid': '3fc3df37-c3fa-11e9-b9c5-12148b63a89a'}, {'sapCode': 'CCXP', 'version': '2.2.1', 'buildGuid': '3fdc5e2b-c3fa-11e9-b9c5-12148b63a89a'}]
Creating Install PHSP_21.2.6-en_US.app .: replacing existing signature Traceback (most recent call last): File "/dev/fd/63", line 390, in File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/shutil.py", line 261, in copyfile with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst: FileNotFoundError: [Errno 2] No such file or directory: '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/app.icns' Saving session... ...copying shared history... ...saving history...truncating history files... ...completed.
[Prozess beendet]

Any help would be much appreciated!

@elkaboing

This comment has been minimized.

Copy link

@elkaboing elkaboing commented Mar 10, 2021

@elkaboing
Go to "/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/"
Make a copy of "CreativeCloudInstaller.icns" and rename the copy to "app.icns"
It should work.

@freddie187 - did you follow the steps duemanisinistre provided? This solved the error for me.

@gigisdb2021

This comment has been minimized.

Copy link

@gigisdb2021 gigisdb2021 commented Mar 10, 2021

Enter the SAP code of the desired product... ???
Which?

@jc-tanedo

This comment has been minimized.

Copy link

@jc-tanedo jc-tanedo commented Mar 11, 2021

I don't have /Library/Application Support/Adobe/Adobe Desktop Common/
I reinstalled adobe creative cloud and it's still not there. What do I need to install to make it appear?
Edit: nvm, was looking in ~/Library. oops

@AshleyTai

This comment has been minimized.

Copy link

@AshleyTai AshleyTai commented Mar 14, 2021

[ILST_25.0] Downloading application.json Traceback (most recent call last): File "/dev/fd/63", line 387, in <module> File "/dev/fd/63", line 236, in get_application_json File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) Saving session... ...copying shared history... ...saving history...truncating history files... ...completed.

May I know how to solve this?

@Tb3986

This comment has been minimized.

Copy link

@Tb3986 Tb3986 commented Mar 14, 2021

Dev have to fix this tool, don't waste your time.

@elmimmo

This comment has been minimized.

Copy link

@elmimmo elmimmo commented Mar 17, 2021

It would be nice to be able to package more than one language in the installer being generated. A valid use case is being able to have InDesign with Japanese/CJK Functionality + English UI, which requires installing both the Japanese and English versions of the program.

@markm-io

This comment has been minimized.

Copy link

@markm-io markm-io commented Mar 26, 2021

You can fix it yourself. Just click on download as ZIP to download all the files. Extract them and open up

ccdl.command file in your code/text editor
Change the last line to point to the directory where you have ccdl.py downloaded

python3 /Users/myusername/Downloads/a5f01c6f40020f9a7bc4939beeb2df1d-6e82a23d381059a345cdf77fc29595ef11985d31/ccdl.py

Open up ccdl.py and go to line 389 and change it to this

icon_path = '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/CreativeCloudInstaller.icns'

After that just chmod +x ccdl.command file and run.

@josefw97

This comment has been minimized.

Copy link

@josefw97 josefw97 commented Mar 29, 2021

Hi,
the icon path in the ccdl.py on line 389 is wrong with the latest CC App.
It is now: /Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/CreativeCloudInstaller.icns

@epictomkat

This comment has been minimized.

Copy link

@epictomkat epictomkat commented Apr 3, 2021

Hi I have used this before on multiple machines with no issues before
Im trying to install on a 2011 MacBook Air running high Sierra,

Im getting an error when trying to run the Adobe Package.command from the applications folder.
Screen Shot 2021-04-03 at 11 17 45 AM

Hopefully the screenshot posted, If not the Error line is:

starting ccdl
/Applications/Adobe Packager.command: line 41: python3: command not found
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

any thoughts on what could be going on?

@fbongcam

This comment has been minimized.

Copy link

@fbongcam fbongcam commented Apr 5, 2021

/Applications/Adobe Packager.command: line 41: python3: command not found

brew install python

@poenagit

This comment has been minimized.

Copy link

@poenagit poenagit commented Apr 14, 2021

I'm getting this same error mentioned above

FileNotFoundError: [Errno 2] No such file or directory: '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/app.icns' logout

but I do not even have the Adobe Desktop Common directory when I go looking. What am I missing?

@ThisIsNoahEvans

This comment has been minimized.

Copy link

@ThisIsNoahEvans ThisIsNoahEvans commented Apr 19, 2021

I was getting an error FileNotFoundError: [Errno 2] No such file or directory: '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/app.icns', and it turns out the icon has been renamed in that directory. The new name is CreativeCloudInstaller.icns.

Just replace app.icns with CreativeCloudInstaller.icns on line 390 of the file and it works fine!

Here's a forked gist with the fix.

Hope this works for others!

EDIT: I should clarify you have to update the Python file. I think a few people worked this out, but for the sake of clarity. The shell script here is just to check you have Python installed and to download/run the script.

@TheElectroclassics

This comment has been minimized.

Copy link

@TheElectroclassics TheElectroclassics commented Apr 20, 2021

It worked, thank you, Noah!

@bonigeek

This comment has been minimized.

Copy link

@bonigeek bonigeek commented Apr 29, 2021

To install Illustrator works well but to install Photoshop code 182. I'm try all 22 versions (22.0 to 22.3.1).

[EDIT]

it works! There were remnants of a previous installation. After removing by AppCleaner and Creative Cloud, it installed perfectly.

@inspiredearth

This comment has been minimized.

Copy link

@inspiredearth inspiredearth commented May 1, 2021

I was getting an error FileNotFoundError: [Errno 2] No such file or directory: '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/app.icns', and it turns out the icon has been renamed in that directory. The new name is CreativeCloudInstaller.icns.

Just replace app.icns with CreativeCloudInstaller.icns on line 390 of the file and it works fine!

Here's a forked gist with the fix.

Hope this works for others!

Yes, works well. Thank you.

@skylinekiller

This comment has been minimized.

Copy link

@skylinekiller skylinekiller commented May 9, 2021

I was getting an error FileNotFoundError: [Errno 2] No such file or directory: '/Library/Application Support/Adobe/Adobe Desktop Common/HDBox/Install.app/Contents/Resources/app.icns', and it turns out the icon has been renamed in that directory. The new name is CreativeCloudInstaller.icns.

Just replace app.icns with CreativeCloudInstaller.icns on line 390 of the file and it works fine!

Here's a forked gist with the fix.

Hope this works for others!

EDIT: I should clarify you have to update the Python file. I think a few people worked this out, but for the sake of clarity. The shell script here is just to check you have Python installed and to download/run the script.

ThisIsNoahEvans, Thank you for posting the fork. I have a stupid question though. I had Adobe Packager v0.1.2 installed using the /bin/bash -c "$(curl -fsSL https://gist.githubusercontent.com/ayyybe/a5f01c6f40020f9a7bc4939beeb2df1d/raw/install.sh)"

How do I install the fork with the corrections you posted? I am new to the MAC, trying to get the swing of things. Everyone swears its easier, but right now I'd disagree :) What do I paste in terminal or is there a way to actually edit the package contents in the file. Again, a complete idiot on MAC

@ThisIsNoahEvans

This comment has been minimized.

Copy link

@ThisIsNoahEvans ThisIsNoahEvans commented May 14, 2021

Hi, sorry it took me a while to see this! That command downloads a script that, essentially, checks you have Python before running the Python script here.

If you just download (or copy into a new file) the contents of my fork, and then run that (python3 /path/to/script.py), you should be up and running.

Hope this helps!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment