2 Commits

Author SHA1 Message Date
Søren Theilgaard
45112e3f32 Create xcreds.sh
## Great solution for IdP Password Syncing by TwoCanoes!

XCreds works by keeping your local Mac password in sync with your Identity Provider password. If you use Azure or Google or another identity provider, XCreds will make sure the password is the same. XCreds runs in the background and checks if the cloud password has been changed. If it detects the password has changed, it prompts to log in to the cloud provider and updates the local password and the keychain password automatically.

```
% GitHub/Installomator/utils/assemble.sh xcreds DEBUG=0
2022-08-12 09:25:38 : WARN  : xcreds : setting variable from argument DEBUG=0
2022-08-12 09:25:38 : REQ   : xcreds : ################## Start Installomator v. 10.0beta, date 2022-08-12
2022-08-12 09:25:38 : INFO  : xcreds : ################## Version: 10.0beta
2022-08-12 09:25:38 : INFO  : xcreds : ################## Date: 2022-08-12
2022-08-12 09:25:38 : INFO  : xcreds : ################## xcreds
2022-08-12 09:25:38 : INFO  : xcreds : BLOCKING_PROCESS_ACTION=tell_user
2022-08-12 09:25:38 : INFO  : xcreds : NOTIFY=success
2022-08-12 09:25:38 : INFO  : xcreds : LOGGING=INFO
2022-08-12 09:25:38 : INFO  : xcreds : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-12 09:25:38 : INFO  : xcreds : Label type: pkg
2022-08-12 09:25:38 : INFO  : xcreds : archiveName: XCreds.pkg
2022-08-12 09:25:38 : INFO  : xcreds : no blocking processes defined, using XCreds as default
2022-08-12 09:25:38 : INFO  : xcreds : No version found using packageID com.twocanoes.pkg.secureremoteaccess
2022-08-12 09:25:38 : INFO  : xcreds : name: XCreds, appName: XCreds.app
2022-08-12 09:25:38 : WARN  : xcreds : No previous app found
2022-08-12 09:25:38 : WARN  : xcreds : could not find XCreds.app
2022-08-12 09:25:38 : INFO  : xcreds : appversion:
2022-08-12 09:25:38 : INFO  : xcreds : Latest version of XCreds is 1.0.0
2022-08-12 09:25:38 : REQ   : xcreds : Downloading https://github.com/twocanoes/xcreds/releases/download/v1.0.0/XCreds_1_0_0_Build-1272_Version.pkg to XCreds.pkg
2022-08-12 09:25:39 : REQ   : xcreds : no more blocking processes, continue with update
2022-08-12 09:25:39 : REQ   : xcreds : Installing XCreds
2022-08-12 09:25:39 : INFO  : xcreds : Verifying: XCreds.pkg
2022-08-12 09:25:39 : INFO  : xcreds : Team ID: UXP6YEHSPW (expected: UXP6YEHSPW )
2022-08-12 09:25:39 : INFO  : xcreds : Installing XCreds.pkg to /
2022-08-12 09:25:42 : INFO  : xcreds : Finishing...
2022-08-12 09:25:52 : INFO  : xcreds : found packageID com.twocanoes.pkg.secureremoteaccess installed, version 1.2
2022-08-12 09:25:52 : REQ   : xcreds : Installed XCreds, version 1.2
2022-08-12 09:25:52 : INFO  : xcreds : notifying
2022-08-12 09:25:52 : INFO  : xcreds : App not closed, so no reopen.
2022-08-12 09:25:52 : REQ   : xcreds : All done!
2022-08-12 09:25:52 : REQ   : xcreds : ################## End Installomator, exit code 0
```
2022-08-12 09:31:04 +02:00
Søren Theilgaard
c04c591a03 relatel label
Output from DEBUG mode and full installer (with force):
```
% Installomator/utils/assemble.sh relatel
2022-07-11 16:23:16 : REQ   : relatel : ################## Start Installomator v. 10.0beta, date 2022-07-11
2022-07-11 16:23:16 : INFO  : relatel : ################## Version: 10.0beta
2022-07-11 16:23:16 : INFO  : relatel : ################## Date: 2022-07-11
2022-07-11 16:23:16 : INFO  : relatel : ################## relatel
2022-07-11 16:23:16 : DEBUG : relatel : DEBUG mode 1 enabled.
2022-07-11 16:23:16 : INFO  : relatel : BLOCKING_PROCESS_ACTION=tell_user
2022-07-11 16:23:16 : INFO  : relatel : NOTIFY=success
2022-07-11 16:23:16 : INFO  : relatel : LOGGING=DEBUG
2022-07-11 16:23:16 : INFO  : relatel : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-11 16:23:16 : INFO  : relatel : Label type: dmg
2022-07-11 16:23:16 : INFO  : relatel : archiveName: Relatel.dmg
2022-07-11 16:23:16 : INFO  : relatel : no blocking processes defined, using Relatel as default
2022-07-11 16:23:16 : DEBUG : relatel : Changing directory to /Users/st/Documents/GitHub/Installomator/build
2022-07-11 16:23:16 : INFO  : relatel : App(s) found: /Applications/Relatel.app
2022-07-11 16:23:16 : INFO  : relatel : found app at /Applications/Relatel.app, version 1.3.1, on versionKey CFBundleShortVersionString
2022-07-11 16:23:16 : INFO  : relatel : appversion: 1.3.1
2022-07-11 16:23:16 : INFO  : relatel : Latest version of Relatel is 1.3.1
2022-07-11 16:23:16 : WARN  : relatel : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-07-11 16:23:16 : REQ   : relatel : Downloading https://cdn.rela.tel/www/public/junotron/Relatel.dmg to Relatel.dmg
2022-07-11 16:23:17 : DEBUG : relatel : File list: -rw-r--r--  1 aa  staff    83M Jul 11 16:23 Relatel.dmg
2022-07-11 16:23:17 : DEBUG : relatel : File type: Relatel.dmg: zlib compressed data
2022-07-11 16:23:17 : DEBUG : relatel : curl output was:
*   Trying 13.33.141.16:443...
* Connected to cdn.rela.tel (13.33.141.16) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [317 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4960 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=cdn.firmafon.dk
*  start date: Sep 29 00:00:00 2021 GMT
*  expire date: Oct 28 23:59:59 2022 GMT
*  subjectAltName: host "cdn.rela.tel" matched cert's "cdn.rela.tel"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x124810a00)
> GET /www/public/junotron/Relatel.dmg HTTP/2
> Host: cdn.rela.tel
> user-agent: curl/7.79.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 301
< content-length: 0
< date: Mon, 11 Jul 2022 14:13:48 GMT
< location: /www/public/junotron/Relatel-1.3.1.dmg
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 7e5377bfdf5e6ef7597f63d6648e4e9a.cloudfront.net (CloudFront)
< x-amz-cf-pop: CPH50-C2
< x-amz-cf-id: thNWMtxDW2IJefosMKa0ESJTenG4AC9I5aZrCy-sTD9YSiGFtVRqgg==
< age: 569
<
{ [0 bytes data]
* Connection #0 to host cdn.rela.tel left intact
* Issue another request to this URL: 'https://cdn.rela.tel/www/public/junotron/Relatel-1.3.1.dmg'
* Found bundle for host cdn.rela.tel: 0x600001f207b0 [can multiplex]
* Re-using existing connection! (#0) with host cdn.rela.tel
* Connected to cdn.rela.tel (13.33.141.16) port 443 (#0)
* Using Stream ID: 3 (easy handle 0x124810a00)
> GET /www/public/junotron/Relatel-1.3.1.dmg HTTP/2
> Host: cdn.rela.tel
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 200
< content-type: application/x-apple-diskimage
< content-length: 86919409
< date: Mon, 11 Jul 2022 14:13:48 GMT
< last-modified: Fri, 06 May 2022 12:35:41 GMT
< x-amz-version-id: efBkRS8bwIqXqI2Z6qnBgVxSZzwUHByN
< etag: "7d26b868f87f72b3fcee9788f1cd512d-6"
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 7e5377bfdf5e6ef7597f63d6648e4e9a.cloudfront.net (CloudFront)
< x-amz-cf-pop: CPH50-C2
< x-amz-cf-id: 4tPa-qwrw0EK3XG2vb6eQrC9cV8anQvW9yNcjKvgtWdXk_-3VjWkyA==
< age: 569
<
{ [2896 bytes data]
* Connection #0 to host cdn.rela.tel left intact

2022-07-11 16:23:17 : DEBUG : relatel : DEBUG mode 1, not checking for blocking processes
2022-07-11 16:23:17 : REQ   : relatel : Installing Relatel
2022-07-11 16:23:17 : INFO  : relatel : Mounting Relatel.dmg
2022-07-11 16:23:22 : DEBUG : relatel : Debugging enabled, dmgmount output was:
Checksumming Protective Master Boot Record (MBR : 0)…
Protective Master Boot Record (MBR :: verified CRC32 $B84BD009
Checksumming GPT Header (Primary GPT Header : 1)…
GPT Header (Primary GPT Header : 1): verified CRC32 $06438A51
Checksumming GPT Partition Data (Primary GPT Table : 2)…
GPT Partition Data (Primary GPT Tabl: verified CRC32 $1232986F
Checksumming  (Apple_Free : 3)…
(Apple_Free : 3): verified CRC32 $00000000
Checksumming disk image (Apple_HFS : 4)…
disk image (Apple_HFS : 4): verified CRC32 $D4C0AB37
Checksumming GPT Partition Data (Backup GPT Table : 5)…
GPT Partition Data (Backup GPT Table: verified CRC32 $1232986F
Checksumming GPT Header (Backup GPT Header : 6)…
GPT Header (Backup GPT Header : 6): verified CRC32 $A2E62118
verified CRC32 $B53E5AB9
/dev/disk6          	GUID_partition_scheme
/dev/disk6s1        	Apple_HFS                      	/Volumes/Relatel 1.3.1

2022-07-11 16:23:22 : INFO  : relatel : Mounted: /Volumes/Relatel 1.3.1
2022-07-11 16:23:22 : INFO  : relatel : Verifying: /Volumes/Relatel 1.3.1/Relatel.app
2022-07-11 16:23:22 : DEBUG : relatel : App size: 195M	/Volumes/Relatel 1.3.1/Relatel.app
2022-07-11 16:23:23 : DEBUG : relatel : Debugging enabled, App Verification output was:
/Volumes/Relatel 1.3.1 1/Relatel.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Firmafon ApS (B9358QF55B)

2022-07-11 16:23:23 : INFO  : relatel : Team ID matching: B9358QF55B (expected: B9358QF55B )
2022-07-11 16:23:23 : INFO  : relatel : Downloaded version of Relatel is 1.3.1 on versionKey CFBundleShortVersionString, same as installed.
2022-07-11 16:23:23 : DEBUG : relatel : Unmounting /Volumes/Relatel 1.3.1
2022-07-11 16:23:24 : DEBUG : relatel : Debugging enabled, Unmounting output was:
"disk6" ejected.
2022-07-11 16:23:24 : DEBUG : relatel : DEBUG mode 1, not reopening anything
2022-07-11 16:23:24 : REG   : relatel : No new version to install
2022-07-11 16:23:24 : REQ   : relatel : ################## End Installomator, exit code 0

% sudo Installomator/utils/assemble.sh relatel DEBUG=0 INSTALL=force
Password:
2022-07-11 16:23:56 : WARN  : relatel : setting variable from argument DEBUG=0
2022-07-11 16:23:56 : WARN  : relatel : setting variable from argument INSTALL=force
2022-07-11 16:23:56 : REQ   : relatel : ################## Start Installomator v. 10.0beta, date 2022-07-11
2022-07-11 16:23:56 : INFO  : relatel : ################## Version: 10.0beta
2022-07-11 16:23:56 : INFO  : relatel : ################## Date: 2022-07-11
2022-07-11 16:23:56 : INFO  : relatel : ################## relatel
2022-07-11 16:23:56 : INFO  : relatel : BLOCKING_PROCESS_ACTION=tell_user
2022-07-11 16:23:56 : INFO  : relatel : NOTIFY=success
2022-07-11 16:23:56 : INFO  : relatel : LOGGING=INFO
2022-07-11 16:23:56 : INFO  : relatel : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-11 16:23:56 : INFO  : relatel : Label type: dmg
2022-07-11 16:23:56 : INFO  : relatel : archiveName: Relatel.dmg
2022-07-11 16:23:56 : INFO  : relatel : no blocking processes defined, using Relatel as default
2022-07-11 16:23:56 : INFO  : relatel : App(s) found: /Applications/Relatel.app
2022-07-11 16:23:56 : INFO  : relatel : found app at /Applications/Relatel.app, version 1.3.1, on versionKey CFBundleShortVersionString
2022-07-11 16:23:56 : INFO  : relatel : appversion: 1.3.1
2022-07-11 16:23:56 : INFO  : relatel : Label is not of type “updateronly”, and it’s set to use force to install or ignoring app store apps, so not using updateTool.
2022-07-11 16:23:56 : INFO  : relatel : Latest version of Relatel is 1.3.1
2022-07-11 16:23:56 : INFO  : relatel : There is no newer version available.
2022-07-11 16:23:56 : REQ   : relatel : Downloading https://cdn.rela.tel/www/public/junotron/Relatel.dmg to Relatel.dmg
2022-07-11 16:23:57 : REQ   : relatel : no more blocking processes, continue with update
2022-07-11 16:23:57 : REQ   : relatel : Installing Relatel
2022-07-11 16:23:57 : INFO  : relatel : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.l86iLb4m/Relatel.dmg
2022-07-11 16:24:00 : INFO  : relatel : Mounted: /Volumes/Relatel 1.3.1
2022-07-11 16:24:00 : INFO  : relatel : Verifying: /Volumes/Relatel 1.3.1/Relatel.app
2022-07-11 16:24:01 : INFO  : relatel : Team ID matching: B9358QF55B (expected: B9358QF55B )
2022-07-11 16:24:01 : INFO  : relatel : Downloaded version of Relatel is 1.3.1 on versionKey CFBundleShortVersionString, same as installed.
2022-07-11 16:24:01 : INFO  : relatel : Using force to install anyway.
2022-07-11 16:24:01 : INFO  : relatel : App has LSMinimumSystemVersion: 10.11.0
2022-07-11 16:24:01 : WARN  : relatel : Removing existing /Applications/Relatel.app
2022-07-11 16:24:01 : INFO  : relatel : Copy /Volumes/Relatel 1.3.1/Relatel.app to /Applications
2022-07-11 16:24:02 : WARN  : relatel : Changing owner to aa
2022-07-11 16:24:02 : INFO  : relatel : Finishing...
2022-07-11 16:24:12 : INFO  : relatel : App(s) found: /Applications/Relatel.app
2022-07-11 16:24:12 : INFO  : relatel : found app at /Applications/Relatel.app, version 1.3.1, on versionKey CFBundleShortVersionString
2022-07-11 16:24:12 : REQ   : relatel : Installed Relatel, version 1.3.1
2022-07-11 16:24:12 : INFO  : relatel : notifying
2022-07-11 16:24:12 : INFO  : relatel : App not closed, so no reopen.
2022-07-11 16:24:12 : REQ   : relatel : All done!
2022-07-11 16:24:12 : REQ   : relatel : ################## End Installomator, exit code 0
```
2022-07-11 16:27:51 +02:00
26 changed files with 32 additions and 96 deletions

View File

@@ -81,7 +81,6 @@ LOGO=appstore
# - mosylem Mosyle Manager (Education)
# - addigy Addigy
# - microsoft Microsoft Endpoint Manager (Intune)
# - ws1 Workspace ONE (AirWatch)
# path can also be set in the command call, and if file exists, it will be used.
# Like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"'
# (spaces have to be escaped).
@@ -368,13 +367,10 @@ displaydialogContinue() { # $1: message $2: title
displaynotification() { # $1: message $2: title
message=${1:-"Message"}
title=${2:-"Notification"}
hubcli="/usr/local/bin/hubcli"
manageaction="/Library/Application Support/JAMF/bin/Management Action.app/Contents/MacOS/Management Action"
if [[ -x "$manageaction" ]]; then
"$manageaction" -message "$message" -title "$title"
elif [[ -x "$hubcli" ]]; then
"$hubcli" notify -t "$title" -i "$message" -c "Dismiss"
else
runAsUser osascript -e "display notification \"$message\" with title \"$title\""
fi
@@ -5268,11 +5264,6 @@ case $LOGO in
LOGO="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
if [[ -z $MDMProfileName ]]; then; MDMProfileName="Management Profile"; fi
;;
ws1)
# Workspace ONE
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
if [[ -z $MDMProfileName ]]; then; MDMProfileName="Device Manager"; fi
;;
esac
if [[ ! -a "${LOGO}" ]]; then
if [[ $(sw_vers -buildVersion) > "19" ]]; then

View File

@@ -22,7 +22,7 @@ cleanupAndExit() { # $1 = exit code, $2 message, $3 level
printlog "$2" $3
fi
printlog "################## End Installomator, exit code $1 \n" REQ
# if label is wrong and we wanted name of the label, then return ##################
if [[ $RETURN_LABEL_NAME -eq 1 ]]; then
1=0 # If only label name should be returned we exit without any errors
@@ -199,16 +199,6 @@ xpath() {
fi
}
# from @Pico: https://macadmins.slack.com/archives/CGXNNJXJ9/p1652222365989229?thread_ts=1651786411.413349&cid=CGXNNJXJ9
getJSONValue() {
# $1: JSON string OR file path to parse (tested to work with up to 1GB string and 2GB file).
# $2: JSON key path to look up (using dot or bracket notation).
printf '%s' "$1" | /usr/bin/osascript -l 'JavaScript' \
-e "let json = $.NSString.alloc.initWithDataEncoding($.NSFileHandle.fileHandleWithStandardInput.readDataToEndOfFile$(/usr/bin/uname -r | /usr/bin/awk -F '.' '($1 > 18) { print "AndReturnError(ObjC.wrap())" }'), $.NSUTF8StringEncoding)" \
-e 'if ($.NSFileManager.defaultManager.fileExistsAtPath(json)) json = $.NSString.stringWithContentsOfFileEncodingError(json, $.NSUTF8StringEncoding, ObjC.wrap())' \
-e "const value = JSON.parse(json.js)$([ -n "${2%%[.[]*}" ] && echo '.')$2" \
-e 'if (typeof value === "object") { JSON.stringify(value, null, 4) } else { value }'
}
getAppVersion() {
# modified by: Søren Theilgaard (@theilgaard) and Isaac Ordonez

View File

@@ -2,11 +2,10 @@ adobecreativeclouddesktop)
name="Adobe Creative Cloud"
#appName="Install.app"
type="dmg"
adobeurl="https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html"
if [[ $(arch) == "arm64" ]]; then
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'osx10')][contains(text(),'Download')]/@href)" - 2> /dev/null)
downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*macarm64.*dmg" | cut -d '"' -f1 | head -1)
elif [[ $(arch) == "i386" ]]; then
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'macarm64')][contains(text(),'Download')]/@href)" - 2> /dev/null)
downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*osx10.*dmg" | cut -d '"' -f1 | head -1)
fi
#downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*dmg" | head -1)
appNewVersion=$(curl -fs "https://helpx.adobe.com/creative-cloud/release-note/cc-release-notes.html" | grep "mandatory" | head -1 | grep -o "Version *.* released" | cut -d " " -f2)

View File

@@ -1,11 +1,7 @@
blender)
name="blender"
type="dmg"
if [[ $(arch) == "arm64" ]]; then
downloadURL=$(curl -sfL "https://www.blender.org/download/" | xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*arm64.*.dmg" | sed '2p;d' | sed 's/www.blender.org\/download/download.blender.org/g')
elif [[ $(arch) == "i386" ]]; then
downloadURL=$(curl -sfL "https://www.blender.org/download/" | xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*x64.*.dmg" | sed '2p;d' | sed 's/www.blender.org\/download/download.blender.org/g')
fi
downloadURL=$(redirect=$(curl -sfL https://www.blender.org/download/ | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) && curl -sfL "$redirect" | sed 's/.*href="//' | sed 's/".*//' | grep -m1 .dmg)
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
expectedTeamID="68UA947AUU"
;;

View File

@@ -1,12 +0,0 @@
bluejeanswithaudiodriver)
name="BlueJeans"
type="pkg"
if [[ $(arch) == "arm64" ]]; then
downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeans.*Installer.*arm.*.pkg" )
elif [[ $(arch) == "i386" ]]; then
downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeansInstaller.*x86.*.dmg" | sed 's/dmg/pkg/g')
fi
appNewVersion=$(echo $downloadURL | cut -d '/' -f6)
choiceChangesXML='<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><array><dict><key>attributeSetting</key><integer>1</integer><key>choiceAttribute</key><string>selected</string><key>choiceIdentifier</key><string>com.tatvikmohit.BlueJeans-Audio</string></dict></array></plist>'
expectedTeamID="HE4P42JBGN"
;;

View File

@@ -1,7 +1,7 @@
clickshare)
# credit: Søren Theilgaard (@theilgaard)
name="ClickShare"
type="appInDmgInZip"
downloadURL="https://www.barco.com$( curl -fs "https://www.barco.com/en/clickshare/app" | grep -A6 -i "macos" | grep -i "FileNumber" | tr '"' "\n" | grep -i "FileNumber" )"
appNewVersion="$(eval "$( echo $downloadURL | sed -E 's/.*(MajorVersion.*BuildVersion=[0-9]*).*/\1/' | sed 's/&amp//g' )" ; ((MajorVersion++)) ; ((MajorVersion--)); ((MinorVersion++)) ; ((MinorVersion--)); ((PatchVersion++)) ; ((PatchVersion--)); ((BuildVersion++)) ; ((BuildVersion--)); echo "${MajorVersion}.${MinorVersion}.${PatchVersion}-b${BuildVersion}")"
downloadURL=https://www.barco.com$(curl -fs "https://www.barco.com/en/clickshare/app" | grep -E -o '(\/\S*Download\?FileNumber=R3306192\S*ShowDownloadPage=False)' | tail -1)
expectedTeamID="P6CDJZR997"
;;

View File

@@ -3,7 +3,6 @@ egnyte)
name="Egnyte Connect"
type="pkg"
downloadURL="https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/latest/EgnyteConnectMac.pkg"
appNewVersion=$(curl -fs "https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/versions/default.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' | cut -d '"' -f 2)
expectedTeamID="FELUD555VC"
blockingProcesses=( NONE )
;;

View File

@@ -2,8 +2,7 @@ firefox)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ

View File

@@ -2,8 +2,7 @@ firefox_da)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&amp;os=osx&amp;lang=da"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox, firefox_da and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ

View File

@@ -19,8 +19,7 @@ firefox_intl)
printlog "Download not found for '$userLanguage', using default ('en-US')."
downloadURL="https://download.mozilla.org/?product=firefox-latest-ssl&os=osx"
fi
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"/"); print a[1]}')
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ

View File

@@ -3,8 +3,7 @@ firefoxesrpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-esr-pkg-latest-ssl&os=osx"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "FIREFOX_ESR")
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*releases\/([0-9.]*)esr.*/\1/g')
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;

View File

@@ -19,8 +19,7 @@ firefoxesr_intl)
printlog "Download not found for '$userLanguage', using default ('en-US')."
downloadURL="https://download.mozilla.org/?product=firefox-esr-latest-ssl&os=osx"
fi
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"esr/"); print a[1]}')
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ

View File

@@ -2,8 +2,7 @@ firefoxpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;

View File

@@ -18,8 +18,7 @@ firefoxpkg_intl)
printlog "Download not found for that language. Using en-US" WARN
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
fi
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location | cut -d "/" -f7)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;

View File

@@ -1,10 +0,0 @@
googlechromeenterprise)
name="Google Chrome"
type="pkg"
downloadURL="https://dl.google.com/dl/chrome/mac/universal/stable/gcem/GoogleChrome.pkg"
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
expectedTeamID="EQHXZ8M8AV"
updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent"
updateToolArguments=( -runMode oneshot -userInitiated YES )
updateToolRunAsCurrentUser=1
;;

View File

@@ -2,7 +2,6 @@ marathon)
name="Marathon"
type="dmg"
archiveName="Marathon-[0-9.]*-Mac.dmg"
versionKey="CFBundleVersion"
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
expectedTeamID="E8K89CXZE7"

View File

@@ -2,7 +2,6 @@ marathon2)
name="Marathon 2"
type="dmg"
archiveName="Marathon2-[0-9.]*-Mac.dmg"
versionKey="CFBundleVersion"
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
expectedTeamID="E8K89CXZE7"

View File

@@ -2,7 +2,6 @@ marathoninfinity)
name="Marathon Infinity"
type="dmg"
archiveName="MarathonInfinity-[0-9.]*-Mac.dmg"
versionKey="CFBundleVersion"
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
expectedTeamID="E8K89CXZE7"

View File

@@ -2,10 +2,6 @@ miro)
# credit: @matins
name="Miro"
type="dmg"
if [[ $(arch) == arm64 ]]; then
downloadURL="https://desktop.miro.com/platforms/darwin-arm64/Miro.dmg"
elif [[ $(arch) == i386 ]]; then
downloadURL="https://desktop.miro.com/platforms/darwin/Miro.dmg"
fi
downloadURL="https://desktop.miro.com/platforms/darwin/Miro.dmg"
expectedTeamID="M3GM7MFY7U"
;;

View File

@@ -1,8 +0,0 @@
mmhmm)
name="mmhmm"
type="pkg"
downloadURL="https://updates.mmhmm.app/mac/mmhmm.pkg"
curlOptions=( -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15" )
appNewVersion=$(curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15" -fs "https://help.mmhmm.app/hc/en-us/articles/4420969712151-mmhmm-for-Mac" | grep 'The latest version of mmhmm for Mac is <strong>*' | sed -e 's/.*\<strong\>\(.*\)\.\<\/strong\>.*/\1/')
expectedTeamID="M3KUT44L48"
;;

View File

@@ -1,7 +0,0 @@
nordlayer)
# credit: Taboc741 (https://github.com/taboc741)
name="NordLayer"
type="pkg"
downloadURL="https://downloads.nordlayer.com/mac/latest/NordLayer.pkg"
expectedTeamID="W5W395V82Y"
;;

View File

@@ -4,10 +4,9 @@ notion)
type="dmg"
if [[ $(arch) == "arm64" ]]; then
downloadURL="https://www.notion.so/desktop/apple-silicon/download"
appNewVersion=$( curl -fsIL "https://www.notion.so/desktop/apple-silicon/download" | grep -i "^location" | awk '{print $2}' | sed -e 's/.*Notion\-\(.*\)\-arm64.dmg.*/\1/' )
elif [[ $(arch) == "i386" ]]; then
downloadURL="https://www.notion.so/desktop/mac/download"
appNewVersion=$( curl -fsIL "https://www.notion.so/desktop/mac/download" | grep -i "^location" | awk '{print $2}' | sed -e 's/.*Notion\-\(.*\).dmg.*/\1/' )
fi
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr -d '\r\n' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
expectedTeamID="LBQJ96FQ8D"
;;

View File

@@ -0,0 +1,7 @@
relatel)
name="Relatel"
type="dmg"
downloadURL="https://cdn.rela.tel/www/public/junotron/Relatel.dmg"
appNewVersion="$(curl -fs "https://cdn.firmafon.dk/www/public/junotron/latest-mac.yml" | grep -i "version" | cut -w -f2)"
expectedTeamID="B9358QF55B"
;;

View File

@@ -1,6 +1,6 @@
ringcentralapp)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
name="RingCentral"
name="Ringcentral"
type="pkg"
if [[ $(arch) != "i386" ]]; then
downloadURL="https://app.ringcentral.com/download/RingCentral-arm64.pkg"
@@ -8,5 +8,5 @@ ringcentralapp)
downloadURL="https://app.ringcentral.com/download/RingCentral.pkg"
fi
expectedTeamID="M932RC5J66"
blockingProcesses=( "RingCentral" )
blockingProcesses=( "Ringcentral" )
;;

View File

@@ -0,0 +1,8 @@
xcreds)
name="XCreds"
type="pkg"
packageID="com.twocanoes.pkg.secureremoteaccess"
downloadURL="$(downloadURLFromGit twocanoes xcreds)"
appNewVersion="$(versionFromGit twocanoes xcreds)"
expectedTeamID="UXP6YEHSPW"
;;

View File

@@ -127,8 +127,6 @@ if [[ $buildScript -eq 1 ]]; then
echo "# copying script to $repo_dir/Installomator.sh"
cp $destination_file $repo_dir/Installomator.sh
chmod 755 $repo_dir/Installomator.sh
# also update Labels.txt
$repo_dir/Installomator.sh | tail -n +2 > $repo_dir/Labels.txt
fi
# build a pkg when flag is set