67 Commits

Author SHA1 Message Date
Armin Briegel
e7c72349d0 preparing for 10beta1 release 2022-08-12 17:01:34 +02:00
Armin Briegel
f07a77de33 Merge pull request #576 from unfo33/patch-1
Update grammarly.sh
2022-08-12 16:32:31 +02:00
Armin Briegel
cfffd74cca Merge pull request #585 from FletcherS7/update-wireshark-label
Update Wireshark download URL
2022-08-12 16:32:02 +02:00
Armin Briegel
b7b7958137 Merge pull request #563 from FletcherS7/update-google-drive-label
Update Google Drive Label
2022-08-12 16:30:33 +02:00
Armin Briegel
fb5e7ea2b4 Merge pull request #548 from FletcherS7/label-duodevicehealth
New Label: Duo Device Health
2022-08-12 16:29:38 +02:00
Armin Briegel
819e812726 Merge pull request #545 from buckbanzai/add-ipswupdater
Add ipswupdater label using JSON parsing
2022-08-12 16:29:13 +02:00
Armin Briegel
30e63cecc7 Merge pull request #541 from MacMike077/NewLabel-GoogleAdsEditor
New label: Google Ads Editor
2022-08-12 16:28:35 +02:00
Armin Briegel
d259228aa1 Merge pull request #538 from MacMike077/NewLabel-Prune
Create prune.sh
2022-08-12 16:28:08 +02:00
Armin Briegel
78e4a8a5cb Merge pull request #536 from buckbanzai/talkdeskcallbar-jxa-json
Update talkdeskcallbar to use JSON parsing
2022-08-12 16:27:50 +02:00
Armin Briegel
c2fbc23396 Merge pull request #537 from buckbanzai/talkdeskcxcloud-jxa-json
Update talkdeskcxcloud to use JSON parsing
2022-08-12 16:27:28 +02:00
Armin Briegel
75fb56f9a5 Merge pull request #593 from mrazishere/patch-1
Update sublimetext.sh
2022-08-12 16:12:36 +02:00
Armin Briegel
a00997ef46 Merge pull request #543 from Installomator/GitHub-calls-without-API
GitHub without API calls
2022-08-12 14:56:12 +02:00
Armin Briegel
46d47bc60f Merge pull request #493 from acodega/acodega-AgnosticInstall
Add simple, no prerequisite install script installInstallomator.sh
2022-08-12 14:48:30 +02:00
MrAZisHere
1dfa162783 Update sublimetext.sh
download url has changed
2022-06-24 20:40:48 +08:00
Armin Briegel
4e5f069024 Merge pull request #565 from Installomator/Barco-ClickShare
Barco click share
2022-06-22 15:23:06 +02:00
Armin Briegel
034e60a190 Merge pull request #560 from Installomator/Theile-labels-10
WhatRoute label
2022-06-22 15:19:24 +02:00
Armin Briegel
053b0a1225 Merge pull request #544 from Installomator/Marathon-Trilogy
Marathon Trilogy with `versionKey` added to the labels.
2022-06-22 15:13:27 +02:00
Armin Briegel
4eb6a94a53 Merge pull request #540 from scriptingosx/assemble-script-update
updated assemble.sh to update Labels.txt when script is built
2022-06-22 15:05:50 +02:00
Armin Briegel
f166cf7efa Merge pull request #539 from scriptingosx/miro-universal
updated miro for arm download
2022-06-22 15:05:20 +02:00
Armin Briegel
60f7ee237a Merge pull request #533 from scriptingosx/egnyte-version
add appNewVersion to egnyte label
2022-06-22 15:04:46 +02:00
Armin Briegel
69bb31b3a2 Merge pull request #535 from cardinaldeville/main
Fixes issue with Blender not installing
2022-06-22 15:02:32 +02:00
Armin Briegel
fe48e4628e Merge pull request #419 2022-06-22 14:57:26 +02:00
Armin Briegel
acb2963f7a changed filename case 2022-06-22 14:55:10 +02:00
Armin Briegel
5b46970d51 Merge branch 'dev' 2022-06-22 14:52:04 +02:00
Armin Briegel
6f9d2a711d Merge pull request #506 from theadamcraig/patch-2
Create bluejeanswithaudiodriver label
2022-06-22 14:50:44 +02:00
Armin Briegel
f444c9a0ba Merge pull request #532 from FletcherS7/main
New Label: Google Chrome Enterprise
2022-06-22 14:48:06 +02:00
Fletcher Salesky
ae34d5591e Update Wireshark download URL
Update Wireshark to use version from appNewVersion to prevent grabbing dev builds.
2022-06-20 10:50:20 -07:00
Armin Briegel
21128946ef Merge pull request #528 from scriptingosx/adobecreateclouddesktop-xml
html parsing now done with xmllint, should be more resilient
2022-06-17 15:56:57 +02:00
Armin Briegel
35eb65f668 Merge pull request #529 from scriptingosx/jxa-json
added function for JSON parsing using JXA
2022-06-17 15:56:30 +02:00
Armin Briegel
84d4184b1e Merge pull request #517 from mwmatter/workspaceone
Adding Workspace ONE support
2022-06-17 15:55:54 +02:00
Armin Briegel
158a30b6f1 removed unused variable 2022-06-17 15:50:01 +02:00
Armin Briegel
ae7db2621c removed absolute paths from commands 2022-06-17 15:49:00 +02:00
Thomas Bartlett
1ec9c3f0b0 Update grammarly.sh
Updated download URL as Grammarly removed the appcast.xml feed.
2022-06-14 10:05:11 -04:00
Adam Codega
ba767cb2df Merge pull request #550 from FletcherS7/update-ringcentral-label
Update ringcentralapp label to fix not detecting blocking processes
2022-06-10 16:07:21 -04:00
Adam Codega
6108758a2f Merge pull request #571 from FletcherS7/label-mmhmm
New Label: mmhmm
2022-06-10 16:06:40 -04:00
Adam Codega
f7f918edcb Merge pull request #566 from FletcherS7/update-notion-label
Update Notion label to fix wrong version detection on arm installs
2022-06-10 15:55:15 -04:00
Fletcher Salesky
5e0e77c346 Update notion.sh 2022-06-07 18:16:18 -07:00
Søren Theilgaard
9e24f2b8e8 rename label name
It already existed…
2022-05-27 12:18:18 +02:00
Fletcher Salesky
abe2e51f13 Update googledrive.sh 2022-05-26 12:24:23 -07:00
Søren Theilgaard
c219f38459 Create barcoclickshare.sh 2022-05-25 13:26:37 +02:00
Fletcher Salesky
82bda85d6c Merge branch 'Installomator:main' into main 2022-05-23 15:01:19 -07:00
Fletcher Salesky
e56be4f18a Update ringcentralapp.sh 2022-05-20 19:31:58 -07:00
Fletcher Salesky
442a4ae0af Create duodevicehealth.sh 2022-05-19 22:19:13 -07:00
Fletcher Salesky
f8b91946c6 Create mmhmm.sh 2022-05-19 21:35:27 -07:00
Liam Steckler
b96e1dbca1 Add ipswupdater label using JSON parsing 2022-05-18 08:50:57 -07:00
Søren Theilgaard
3ccc9dc93e versionKey added to the labels.
Output:
```
➜  Installomator/utils/assemble.sh marathoninfinity DEBUG=0
2022-05-18 15:21:53 : WARN  : marathoninfinity : setting variable from argument DEBUG=0
2022-05-18 15:21:53 : REQ   : marathoninfinity : ################## Start Installomator v. 10.0beta, date 2022-05-18
2022-05-18 15:21:53 : INFO  : marathoninfinity : ################## Version: 10.0beta
2022-05-18 15:21:53 : INFO  : marathoninfinity : ################## Date: 2022-05-18
2022-05-18 15:21:53 : INFO  : marathoninfinity : ################## marathoninfinity
2022-05-18 15:21:53 : INFO  : marathoninfinity : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 15:21:53 : INFO  : marathoninfinity : NOTIFY=success
2022-05-18 15:21:53 : INFO  : marathoninfinity : LOGGING=INFO
2022-05-18 15:21:53 : INFO  : marathoninfinity : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 15:21:53 : INFO  : marathoninfinity : Label type: dmg
2022-05-18 15:21:53 : INFO  : marathoninfinity : archiveName: MarathonInfinity-[0-9.]*-Mac.dmg
2022-05-18 15:21:53 : INFO  : marathoninfinity : no blocking processes defined, using Marathon Infinity as default
2022-05-18 15:21:53 : INFO  : marathoninfinity : App(s) found: /Applications/Marathon Infinity.app
2022-05-18 15:21:53 : INFO  : marathoninfinity : found app at /Applications/Marathon Infinity.app, version 20220115, on versionKey CFBundleVersion
2022-05-18 15:21:53 : INFO  : marathoninfinity : appversion: 20220115
2022-05-18 15:21:53 : INFO  : marathoninfinity : Latest version of Marathon Infinity is 20220115
2022-05-18 15:21:53 : INFO  : marathoninfinity : There is no newer version available.
2022-05-18 15:21:53 : INFO  : marathoninfinity : App not closed, so no reopen.
2022-05-18 15:21:53 : REQ   : marathoninfinity : No newer version.
2022-05-18 15:21:53 : REQ   : marathoninfinity : ################## End Installomator, exit code 0

➜  Installomator/utils/assemble.sh marathon DEBUG=0
2022-05-18 15:22:04 : WARN  : marathon : setting variable from argument DEBUG=0
2022-05-18 15:22:04 : REQ   : marathon : ################## Start Installomator v. 10.0beta, date 2022-05-18
2022-05-18 15:22:04 : INFO  : marathon : ################## Version: 10.0beta
2022-05-18 15:22:04 : INFO  : marathon : ################## Date: 2022-05-18
2022-05-18 15:22:04 : INFO  : marathon : ################## marathon
2022-05-18 15:22:04 : INFO  : marathon : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 15:22:04 : INFO  : marathon : NOTIFY=success
2022-05-18 15:22:04 : INFO  : marathon : LOGGING=INFO
2022-05-18 15:22:04 : INFO  : marathon : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 15:22:04 : INFO  : marathon : Label type: dmg
2022-05-18 15:22:04 : INFO  : marathon : archiveName: Marathon-[0-9.]*-Mac.dmg
2022-05-18 15:22:04 : INFO  : marathon : no blocking processes defined, using Marathon as default
2022-05-18 15:22:04 : INFO  : marathon : App(s) found: /Applications/Marathon.app
2022-05-18 15:22:04 : INFO  : marathon : found app at /Applications/Marathon.app, version 20220115, on versionKey CFBundleVersion
2022-05-18 15:22:04 : INFO  : marathon : appversion: 20220115
2022-05-18 15:22:04 : INFO  : marathon : Latest version of Marathon is 20220115
2022-05-18 15:22:04 : INFO  : marathon : There is no newer version available.
2022-05-18 15:22:04 : INFO  : marathon : App not closed, so no reopen.
2022-05-18 15:22:04 : REQ   : marathon : No newer version.
2022-05-18 15:22:04 : REQ   : marathon : ################## End Installomator, exit code 0

➜  Installomator/utils/assemble.sh marathon2 DEBUG=0
2022-05-18 15:22:08 : WARN  : marathon2 : setting variable from argument DEBUG=0
2022-05-18 15:22:08 : REQ   : marathon2 : ################## Start Installomator v. 10.0beta, date 2022-05-18
2022-05-18 15:22:08 : INFO  : marathon2 : ################## Version: 10.0beta
2022-05-18 15:22:08 : INFO  : marathon2 : ################## Date: 2022-05-18
2022-05-18 15:22:08 : INFO  : marathon2 : ################## marathon2
2022-05-18 15:22:08 : INFO  : marathon2 : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 15:22:08 : INFO  : marathon2 : NOTIFY=success
2022-05-18 15:22:08 : INFO  : marathon2 : LOGGING=INFO
2022-05-18 15:22:08 : INFO  : marathon2 : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 15:22:08 : INFO  : marathon2 : Label type: dmg
2022-05-18 15:22:08 : INFO  : marathon2 : archiveName: Marathon2-[0-9.]*-Mac.dmg
2022-05-18 15:22:08 : INFO  : marathon2 : no blocking processes defined, using Marathon 2 as default
2022-05-18 15:22:08 : INFO  : marathon2 : App(s) found: /Applications/Marathon 2.app
2022-05-18 15:22:08 : INFO  : marathon2 : found app at /Applications/Marathon 2.app, version 20220115, on versionKey CFBundleVersion
2022-05-18 15:22:08 : INFO  : marathon2 : appversion: 20220115
2022-05-18 15:22:08 : INFO  : marathon2 : Latest version of Marathon 2 is 20220115
2022-05-18 15:22:08 : INFO  : marathon2 : There is no newer version available.
2022-05-18 15:22:08 : INFO  : marathon2 : App not closed, so no reopen.
2022-05-18 15:22:08 : REQ   : marathon2 : No newer version.
2022-05-18 15:22:08 : REQ   : marathon2 : ################## End Installomator, exit code 0
```
2022-05-18 15:23:52 +02:00
Søren Theilgaard
1de3838a9b GitHub without API calls
I have tested two labels, the first has an `archiveName`, the second does not:
```
➜  Installomator/utils/assemble.sh marathoninfinity DEBUG=0
2022-05-18 14:58:34 : WARN  : marathoninfinity : setting variable from argument DEBUG=0
2022-05-18 14:58:34 : REQ   : marathoninfinity : ################## Start Installomator v. 9.2beta, date 2022-05-18
2022-05-18 14:58:34 : INFO  : marathoninfinity : ################## Version: 9.2beta
2022-05-18 14:58:34 : INFO  : marathoninfinity : ################## Date: 2022-05-18
2022-05-18 14:58:34 : INFO  : marathoninfinity : ################## marathoninfinity
2022-05-18 14:58:34 : INFO  : marathoninfinity : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 14:58:34 : INFO  : marathoninfinity : NOTIFY=success
2022-05-18 14:58:34 : INFO  : marathoninfinity : LOGGING=INFO
2022-05-18 14:58:34 : INFO  : marathoninfinity : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 14:58:34 : INFO  : marathoninfinity : Label type: dmg
2022-05-18 14:58:34 : INFO  : marathoninfinity : archiveName: MarathonInfinity-[0-9.]*-Mac.dmg
2022-05-18 14:58:34 : INFO  : marathoninfinity : no blocking processes defined, using Marathon Infinity as default
2022-05-18 14:58:34 : INFO  : marathoninfinity : App(s) found: /Applications/Marathon Infinity.app
2022-05-18 14:58:34 : INFO  : marathoninfinity : found app at /Applications/Marathon Infinity.app, version 1.4, on versionKey CFBundleShortVersionString
2022-05-18 14:58:34 : INFO  : marathoninfinity : appversion: 1.4
2022-05-18 14:58:34 : INFO  : marathoninfinity : Latest version of Marathon Infinity is 20220115
2022-05-18 14:58:34 : REQ   : marathoninfinity : Downloading https://github.com/Aleph-One-Marathon/alephone/releases/download/release-20220115/MarathonInfinity-20220115-Mac.dmg to MarathonInfinity-[0-9.]*-Mac.dmg
2022-05-18 14:58:35 : REQ   : marathoninfinity : no more blocking processes, continue with update
2022-05-18 14:58:35 : REQ   : marathoninfinity : Installing Marathon Infinity
2022-05-18 14:58:35 : INFO  : marathoninfinity : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.uxoEpUyC/MarathonInfinity-[0-9.]*-Mac.dmg
2022-05-18 14:58:39 : INFO  : marathoninfinity : Mounted: /Volumes/Marathon Infinity
2022-05-18 14:58:39 : INFO  : marathoninfinity : Verifying: /Volumes/Marathon Infinity/Marathon Infinity.app
2022-05-18 14:58:43 : INFO  : marathoninfinity : Team ID matching: E8K89CXZE7 (expected: E8K89CXZE7 )
2022-05-18 14:58:43 : INFO  : marathoninfinity : Downloaded version of Marathon Infinity is 1.5 on versionKey CFBundleShortVersionString (replacing version 1.4).
2022-05-18 14:58:43 : INFO  : marathoninfinity : App has LSMinimumSystemVersion: 10.11.0
2022-05-18 14:58:43 : WARN  : marathoninfinity : Removing existing /Applications/Marathon Infinity.app
2022-05-18 14:58:43 : INFO  : marathoninfinity : Copy /Volumes/Marathon Infinity/Marathon Infinity.app to /Applications
2022-05-18 14:58:44 : WARN  : marathoninfinity : Changing owner to st
2022-05-18 14:58:44 : INFO  : marathoninfinity : Finishing...
2022-05-18 14:58:54 : INFO  : marathoninfinity : App(s) found: /Applications/Marathon Infinity.app
2022-05-18 14:58:54 : INFO  : marathoninfinity : found app at /Applications/Marathon Infinity.app, version 1.5, on versionKey CFBundleShortVersionString
2022-05-18 14:58:54 : REQ   : marathoninfinity : Installed Marathon Infinity, version 1.5
2022-05-18 14:58:54 : INFO  : marathoninfinity : notifying
2022-05-18 14:58:55 : INFO  : marathoninfinity : App not closed, so no reopen.
2022-05-18 14:58:55 : REQ   : marathoninfinity : All done!
2022-05-18 14:58:55 : REQ   : marathoninfinity : ################## End Installomator, exit code 0

➜  Installomator/utils/assemble.sh installomator DEBUG=0 INSTALL=force
2022-05-18 14:59:41 : WARN  : installomator : setting variable from argument DEBUG=0
2022-05-18 14:59:41 : WARN  : installomator : setting variable from argument INSTALL=force
2022-05-18 14:59:41 : REQ   : installomator : ################## Start Installomator v. 9.2beta, date 2022-05-18
2022-05-18 14:59:41 : INFO  : installomator : ################## Version: 9.2beta
2022-05-18 14:59:41 : INFO  : installomator : ################## Date: 2022-05-18
2022-05-18 14:59:41 : INFO  : installomator : ################## installomator
2022-05-18 14:59:42 : INFO  : installomator : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 14:59:42 : INFO  : installomator : NOTIFY=success
2022-05-18 14:59:42 : INFO  : installomator : LOGGING=INFO
2022-05-18 14:59:42 : INFO  : installomator : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 14:59:42 : INFO  : installomator : Label type: pkg
2022-05-18 14:59:42 : INFO  : installomator : archiveName: Installomator.pkg
2022-05-18 14:59:42 : INFO  : installomator : found packageID com.scriptingosx.Installomator installed, version 9.2
2022-05-18 14:59:42 : INFO  : installomator : appversion: 9.2
2022-05-18 14:59:42 : INFO  : installomator : 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-05-18 14:59:42 : INFO  : installomator : Latest version of Installomator is 9.2
2022-05-18 14:59:42 : INFO  : installomator : There is no newer version available.
2022-05-18 14:59:42 : REQ   : installomator : Downloading https://github.com/Installomator/Installomator/releases/download/v9.2/Installomator-9.2.pkg to Installomator.pkg
2022-05-18 14:59:43 : REQ   : installomator : Installing Installomator
2022-05-18 14:59:43 : INFO  : installomator : Verifying: Installomator.pkg
2022-05-18 14:59:43 : INFO  : installomator : Team ID: JME5BW3F3R (expected: JME5BW3F3R )
2022-05-18 14:59:43 : INFO  : installomator : Checking package version.
2022-05-18 14:59:43 : INFO  : installomator : Downloaded package com.scriptingosx.Installomator version 9.2
2022-05-18 14:59:43 : INFO  : installomator : Downloaded version of Installomator is the same as installed.
2022-05-18 14:59:43 : INFO  : installomator : Using force to install anyway.
2022-05-18 14:59:43 : INFO  : installomator : Installing Installomator.pkg to /
2022-05-18 14:59:46 : INFO  : installomator : Finishing...
2022-05-18 14:59:56 : INFO  : installomator : found packageID com.scriptingosx.Installomator installed, version 9.2
2022-05-18 14:59:56 : REQ   : installomator : Installed Installomator, version 9.2
2022-05-18 14:59:56 : INFO  : installomator : notifying
2022-05-18 14:59:57 : INFO  : installomator : App not closed, so no reopen.
2022-05-18 14:59:57 : REQ   : installomator : All done!
2022-05-18 14:59:57 : REQ   : installomator : ################## End Installomator, exit code 0
```
The version comparison in marathininfinity will be updated shortly.
2022-05-18 15:02:32 +02:00
MacMike077
124c0cf85f Create googleadseditor.sh
2022-05-18 11:07:11 : REQ   : googleadseditor : ################## Start Installomator v. 9.2, date 2022-05-16
2022-05-18 11:07:11 : INFO  : googleadseditor : ################## Version: 9.2
2022-05-18 11:07:11 : INFO  : googleadseditor : ################## Date: 2022-05-16
2022-05-18 11:07:11 : INFO  : googleadseditor : ################## googleadseditor
2022-05-18 11:07:11 : INFO  : googleadseditor : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 11:07:11 : INFO  : googleadseditor : NOTIFY=success
2022-05-18 11:07:11 : INFO  : googleadseditor : LOGGING=INFO
2022-05-18 11:07:11 : INFO  : googleadseditor : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 11:07:11 : INFO  : googleadseditor : Label type: dmg
2022-05-18 11:07:11 : INFO  : googleadseditor : archiveName: Google Ads Editor.dmg
2022-05-18 11:07:11 : INFO  : googleadseditor : no blocking processes defined, using Google Ads Editor as default
2022-05-18 11:07:11 : INFO  : googleadseditor : name: Google Ads Editor, appName: Google Ads Editor.app
2022-05-18 11:07:12 : WARN  : googleadseditor : No previous app found
2022-05-18 11:07:12 : WARN  : googleadseditor : could not find Google Ads Editor.app
2022-05-18 11:07:12 : INFO  : googleadseditor : appversion:
2022-05-18 11:07:12 : INFO  : googleadseditor : Latest version not specified.
2022-05-18 11:07:12 : REQ   : googleadseditor : Downloading https://dl.google.com/adwords_editor/google_ads_editor.dmg to Google Ads Editor.dmg
2022-05-18 11:07:17 : REQ   : googleadseditor : no more blocking processes, continue with update
2022-05-18 11:07:17 : REQ   : googleadseditor : Installing Google Ads Editor
2022-05-18 11:07:17 : INFO  : googleadseditor : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.q9auZnh3/Google Ads Editor.dmg
2022-05-18 11:07:19 : INFO  : googleadseditor : Mounted: /Volumes/Google Ads Editor 1
2022-05-18 11:07:19 : INFO  : googleadseditor : Verifying: /Volumes/Google Ads Editor 1/Google Ads Editor.app
2022-05-18 11:07:21 : INFO  : googleadseditor : Team ID matching: EQHXZ8M8AV (expected: EQHXZ8M8AV )
2022-05-18 11:07:21.509 defaults[65632:614893]
The domain/default pair of (/Volumes/Google Ads Editor 1/Google Ads Editor.app/Contents/Info.plist, CFBundleShortVersionString) does not exist
2022-05-18 11:07:21 : INFO  : googleadseditor : Installing Google Ads Editor version  on versionKey CFBundleShortVersionString.
2022-05-18 11:07:21 : INFO  : googleadseditor : App has LSMinimumSystemVersion: 10.13
2022-05-18 11:07:21 : INFO  : googleadseditor : Copy /Volumes/Google Ads Editor 1/Google Ads Editor.app to /Applications
2022-05-18 11:07:22 : WARN  : googleadseditor : No user logged in or SYSTEMOWNER=1, setting owner to root:wheel
2022-05-18 11:07:22 : INFO  : googleadseditor : Finishing...
2022-05-18 11:07:32 : INFO  : googleadseditor : App(s) found: /Applications/Google Ads Editor.app
2022-05-18 11:07:32.448 defaults[65669:615163]
The domain/default pair of (/Applications/Google Ads Editor.app/Contents/Info.plist, CFBundleShortVersionString) does not exist
2022-05-18 11:07:32 : INFO  : googleadseditor : found app at /Applications/Google Ads Editor.app, version , on versionKey CFBundleShortVersionString
2022-05-18 11:07:32 : REQ   : googleadseditor : Installed Google Ads Editor
2022-05-18 11:07:32 : INFO  : googleadseditor : notifying
2022-05-18 11:07:32 : INFO  : googleadseditor : App not closed, so no reopen.
2022-05-18 11:07:32 : REQ   : googleadseditor : All done!
2022-05-18 11:07:32 : REQ   : googleadseditor : ################## End Installomator, exit code 0
2022-05-18 11:07:54 +02:00
Armin Briegel
b99c2619f4 updated assemble.sh to update Labels.txt when building script 2022-05-18 10:36:39 +02:00
Armin Briegel
8789d2cd75 updated miro for arm download, closes #475 2022-05-18 10:14:57 +02:00
MacMike077
8e26889e29 Create prune.sh
2022-05-18 09:51:50 : REQ   : prune : ################## Start Installomator v. 9.2, date 2022-05-16
2022-05-18 09:51:50 : INFO  : prune : ################## Version: 9.2
2022-05-18 09:51:50 : INFO  : prune : ################## Date: 2022-05-16
2022-05-18 09:51:50 : INFO  : prune : ################## prune
2022-05-18 09:51:51 : INFO  : prune : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 09:51:51 : INFO  : prune : NOTIFY=success
2022-05-18 09:51:51 : INFO  : prune : LOGGING=INFO
2022-05-18 09:51:51 : INFO  : prune : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 09:51:51 : INFO  : prune : Label type: zip
2022-05-18 09:51:51 : INFO  : prune : archiveName: Prune.zip
2022-05-18 09:51:51 : INFO  : prune : no blocking processes defined, using Prune as default
2022-05-18 09:51:51 : INFO  : prune : name: Prune, appName: Prune.app
2022-05-18 09:51:52 : WARN  : prune : No previous app found
2022-05-18 09:51:52 : WARN  : prune : could not find Prune.app
2022-05-18 09:51:52 : INFO  : prune : appversion:
2022-05-18 09:51:52 : INFO  : prune : Latest version of Prune is 2.2.4
2022-05-18 09:51:52 : REQ   : prune : Downloading https://github.com/BIG-RAT/Prune/releases/download/v2.2.4/Prune.zip to Prune.zip
2022-05-18 09:51:53 : REQ   : prune : no more blocking processes, continue with update
2022-05-18 09:51:53 : REQ   : prune : Installing Prune
2022-05-18 09:51:53 : INFO  : prune : Unzipping Prune.zip
2022-05-18 09:51:53 : INFO  : prune : Verifying: /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.0beFjQd7/Prune.app
2022-05-18 09:51:53 : INFO  : prune : Team ID matching: PS2F6S478M (expected: PS2F6S478M )
2022-05-18 09:51:53 : INFO  : prune : Installing Prune version 2.2.4 on versionKey CFBundleShortVersionString.
2022-05-18 09:51:53 : INFO  : prune : App has LSMinimumSystemVersion: 10.13
2022-05-18 09:51:53 : INFO  : prune : Copy /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.0beFjQd7/Prune.app to /Applications
2022-05-18 09:51:53 : WARN  : prune : No user logged in or SYSTEMOWNER=1, setting owner to root:wheel
2022-05-18 09:51:53 : INFO  : prune : Finishing...
2022-05-18 09:52:04 : INFO  : prune : App(s) found: /Applications/Prune.app
2022-05-18 09:52:04 : INFO  : prune : found app at /Applications/Prune.app, version 2.2.4, on versionKey CFBundleShortVersionString
2022-05-18 09:52:04 : REQ   : prune : Installed Prune, version 2.2.4
2022-05-18 09:52:04 : INFO  : prune : notifying
2022-05-18 09:52:04 : INFO  : prune : App not closed, so no reopen.
2022-05-18 09:52:04 : REQ   : prune : All done!
2022-05-18 09:52:04 : REQ   : prune : ################## End Installomator, exit code 0
2022-05-18 09:54:13 +02:00
Liam Steckler
ea6434c476 Update talkdeskcxcloud to use JSON parsing 2022-05-17 14:48:21 -07:00
Liam Steckler
8be5f4866e Update talkdeskcallbar to use JSON parsing 2022-05-17 14:41:57 -07:00
Chris Abbs
ca73eca5f2 edited fragment per contribution guidelines 2022-05-17 12:19:30 -05:00
Armin Briegel
af6ab1ae56 add appNewVersion to egnyte label, closes #500 2022-05-17 18:29:04 +02:00
Fletcher Salesky
7db13f0ecb Create googlechromeenterprise.sh 2022-05-16 13:28:07 -07:00
Armin Briegel
2b658a576c added function for JSON parsing using JXA 2022-05-13 10:44:26 +02:00
Armin Briegel
d3390fefe6 html parsing now done with xmllint, should be more resilient, maybe 2022-05-13 10:22:53 +02:00
Mike Matter
9e0bfd5818 WS1 support (remove sudo)
Removing sudo from notify command.
2022-05-11 11:33:33 -05:00
Mike Matter
5477c5ccfe Adding WS1 support (Blocking app dialogue) 2022-05-09 12:02:50 -05:00
Mike Matter
4f3b130b04 Adding Workspace ONE support (fixing comment) 2022-05-09 11:50:27 -05:00
Mike Matter
52ad8d9d88 Adding Workspace ONE support 2022-05-09 11:40:28 -05:00
theadamcraig
63ddb9d2e7 Create bluejeanswithaudiodriver.sh
the exact same as the bluejeans label, but with a new variable choiceChangesXML
this allows the package to be customized on installation which in this instance will have the BlueJeans Audio Driver installed with the software.
2022-05-02 13:00:30 -04:00
Adam Codega
3449c24508 Update and rename installInstallomator.sh to InstallInstallomator.sh 2022-04-21 09:50:11 -04:00
Adam Codega
902175fa09 Create installInstallomator.sh 2022-04-21 09:49:24 -04:00
taboc741
fbe58f8ee3 Update and rename NordVPNTeams.sh to NordLayer.sh
Fixed legacy branding from their documentation and pointed to modern URL.
2022-02-14 12:46:46 -05:00
taboc741
e8948dafb3 Create NordVPNTeams.sh
Adding download package support for NordLayer aka NordVPN Teams
2022-02-14 12:33:20 -05:00
38 changed files with 372 additions and 69 deletions

View File

@@ -1,3 +1,41 @@
## v10beta1
- [swiftDialog](https://github.com/bartreardon/swiftDialog) integration (#641, #632), many thanks to @bartreardon, [sample scripts](in the MDM folder)
- added WorkspaceOne option for LOGO (#517)
- added function for JSON parsing with JXA (#529)
- updated assemble.sh script to update Labels.txt when script is rebuilt (#540)
- added a no requisite install script (#493)
- GitHub lookup now don't use API calls, this should avoid or at least reduce rate limiting (#543)
- fixed redundant exit codes (#643, #561)
NOTE: some exit codes have changed! see [Installomator Exit Codes](https://github.com/Installomator/Installomator/wiki/Installomator-Exit-Codes) for a list
- new labels:
- bluejeanswithaudiodriver (#473)
- duodevicehealth (#548)
- googlechromeenterprise (#532)
- ipswupdater (#545)
- mmhmm (#571)
- nordlayer (#419)
- prune (#538)
- whatroute (#560)
- updated labels:
- blender (#535, #622)
- camtasia2019 (#547)
- clickshare (#565)
- egnyte (#500)
- googledrive (#563)
- grammarly (#576)
- marathon, marathon2, marathoninfinity (#544)
- miro (#475, #539)
- notion (#566)
- ringcentralapp (#550)
- sublimetext (#593, #578, #567, #623, #626)
- talkdeskcallbar (#536)
- talkdeskcxcloud (#537)
- wireshark (#585)
## v9.2
**Note**: Both Google and Mozilla recommend using the pkg installers instead of the dmg downloads for managed deployments. So far, Installomator has provided labels for both. (`googlechrome` and `googlechromepkg` or `firefox` and `firefoxpkg`, respectively) Since there are problems with the dmg downloads, a future release of Installomator will _disable_ the `firefox` and `googlechrome` dmg labels. You should switch to using `googlechromepkg` and `firefoxpkg` labels instead.

View File

@@ -302,8 +302,8 @@ if [[ $(/usr/bin/arch) == "arm64" ]]; then
rosetta2=no
fi
fi
VERSION="10.0beta"
VERSIONDATE="2022-05-19"
VERSION="10.0beta1"
VERSIONDATE="2022-08-12"
# MARK: Functions
@@ -329,7 +329,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
@@ -463,11 +463,11 @@ downloadURLFromGit() { # $1 git user name, $2 git repo name
fi
if [ -n "$archiveName" ]; then
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
| awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
#downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
downloadURL=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*$archiveName.*")
else
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
| awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
#downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
downloadURL=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*\.$filetype")
fi
if [ -z "$downloadURL" ]; then
cleanupAndExit 9 "could not retrieve download URL for $gitusername/$gitreponame" ERROR
@@ -483,7 +483,8 @@ versionFromGit() {
gitusername=${1?:"no git user name"}
gitreponame=${2?:"no git repo name"}
appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
#appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
if [ -z "$appNewVersion" ]; then
printlog "could not retrieve version number for $gitusername/$gitreponame" WARN
appNewVersion=""
@@ -506,6 +507,16 @@ 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
@@ -1371,10 +1382,11 @@ 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 "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*macarm64.*dmg" | cut -d '"' -f1 | head -1)
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'osx10')][contains(text(),'Download')]/@href)" - 2> /dev/null)
elif [[ $(arch) == "i386" ]]; then
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)
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'macarm64')][contains(text(),'Download')]/@href)" - 2> /dev/null)
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)
@@ -1743,7 +1755,11 @@ bitwarden)
blender)
name="blender"
type="dmg"
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)
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
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
expectedTeamID="68UA947AUU"
;;
@@ -1758,6 +1774,18 @@ bluejeans)
appNewVersion=$(echo $downloadURL | cut -d '/' -f6)
expectedTeamID="HE4P42JBGN"
;;
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"
;;
boxdrive)
name="Box"
type="pkg"
@@ -1907,10 +1935,10 @@ clevershare2)
expectedTeamID="P76M9BE8DQ"
;;
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 -E -o '(\/\S*Download\?FileNumber=R3306192\S*ShowDownloadPage=False)' | tail -1)
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}")"
expectedTeamID="P6CDJZR997"
;;
clipy)
@@ -2189,6 +2217,15 @@ duckduckgo)
appNewVersion=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/sparkle:shortVersionString)[1]' 2>/dev/null | cut -d ">" -f2 | cut -d "<" -f1)
expectedTeamID="HKE973VLUW"
;;
duodevicehealth)
name="Duo Device Health"
type="pkgInDmg"
downloadURL="https://dl.duosecurity.com/DuoDeviceHealth-latest.dmg"
appNewVersion=$(curl -fsLIXGET "https://dl.duosecurity.com/DuoDeviceHealth-latest.dmg" | grep -i "^content-disposition" | sed -e 's/.*filename\=\"DuoDeviceHealth\-\(.*\)\.dmg\".*/\1/')
appName="Duo Device Health.app"
expectedTeamID="FNN8Z5JMFP"
;;
easeusdatarecoverywizard)
# credit: Søren Theilgaard (@theilgaard)
name="EaseUS Data Recovery Wizard"
@@ -2209,6 +2246,7 @@ 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 )
;;
@@ -2339,7 +2377,8 @@ firefox)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
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)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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
@@ -2348,7 +2387,8 @@ firefox_da)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&amp;os=osx&amp;lang=da"
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)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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
@@ -2374,7 +2414,8 @@ firefox_intl)
printlog "Download not found for '$userLanguage', using default ('en-US')."
downloadURL="https://download.mozilla.org/?product=firefox-latest-ssl&os=osx"
fi
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"/"); print a[1]}')
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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
@@ -2384,7 +2425,8 @@ firefoxesrpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-esr-pkg-latest-ssl&os=osx"
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*releases\/([0-9.]*)esr.*/\1/g')
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "FIREFOX_ESR")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
@@ -2409,7 +2451,8 @@ 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
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"esr/"); print a[1]}')
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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
@@ -2418,7 +2461,8 @@ firefoxpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
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)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
@@ -2442,7 +2486,8 @@ 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
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location | cut -d "/" -f7)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
@@ -2532,6 +2577,16 @@ googlechrome)
expectedTeamID="EQHXZ8M8AV"
printlog "WARNING for ERROR: Label googlechrome should not be used. Instead use googlechromepkg as per recommendations from Google. It's not fully certain that the app actually gets updated here. googlechromepkg will have built in updates and make sure the client is updated in the future." REQ
;;
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
;;
googlechromepkg)
name="Google Chrome"
type="pkg"
@@ -2551,9 +2606,14 @@ googledrivefilestream)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
name="Google Drive File Stream"
type="pkgInDmg"
packageID="com.google.drivefs"
if [[ $(arch) == "arm64" ]]; then
packageID="com.google.drivefs.arm64"
elif [[ $(arch) == "i386" ]]; then
packageID="com.google.drivefs.x86_64"
fi
downloadURL="https://dl.google.com/drive-file-stream/GoogleDriveFileStream.dmg" # downloadURL="https://dl.google.com/drive-file-stream/GoogleDrive.dmg"
blockingProcesses=( "Google Docs" "Google Drive" "Google Sheets" "Google Slides" )
appName="Google Drive.app"
expectedTeamID="EQHXZ8M8AV"
;;
googledrivebackupandsync)
@@ -2614,9 +2674,8 @@ grammarly)
name="Grammarly Desktop"
type="dmg"
packageID="com.grammarly.ProjectLlama"
downloadURL=$(curl -fsL "https://download-mac.grammarly.com/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
downloadURL="https://download-mac.grammarly.com/Grammarly.dmg"
expectedTeamID="W8F64X92K3"
appNewVersion=$(curl -is "https://download-mac.grammarly.com/appcast.xml" | grep sparkle:version | tr ',' '\n' | grep sparkle:version | cut -d '"' -f 4)
# appName="Grammarly Installer.app"
installerTool="Grammarly Installer.app"
CLIInstaller="Grammarly Installer.app/Contents/MacOS/Grammarly Desktop"
@@ -2799,6 +2858,14 @@ installomator_theile)
expectedTeamID="JME5BW3F3R"
blockingProcesses=( NONE )
;;
ipswupdater)
name="IPSW Updater"
type="zip"
ipswupdaterVersions=$(curl -fs "https://ipsw.app/download/updates.php?current_version=0.9.16")
downloadURL=$(getJSONValue "$ipswupdaterVersions" "[0].url")
appNewVersion=$(getJSONValue "$ipswupdaterVersions" "[0].version")
expectedTeamID="YRW6NUGA63"
;;
istatmenus)
# credit: AP Orlebeke (@apizz)
name="iStat Menus"
@@ -3240,6 +3307,7 @@ 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"
@@ -3248,6 +3316,7 @@ 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"
@@ -3256,6 +3325,7 @@ 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"
@@ -3565,9 +3635,21 @@ miro)
# credit: @matins
name="Miro"
type="dmg"
downloadURL="https://desktop.miro.com/platforms/darwin/Miro.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
expectedTeamID="M3GM7MFY7U"
;;
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"
;;
mobikinassistantforandroid)
name="MobiKin Assistant for Android"
type="dmg"
@@ -3729,16 +3811,24 @@ nomadlogin)
appNewVersion=$(curl -fs https://nomad.menu/support/ | grep "NoMAD Login AD Downloads" | sed -E 's/.*Current Version ([0-9\.]*)<.*/\1/g')
expectedTeamID="AAPZK3CB24"
;;
nordlayer)
# credit: Taboc741 (https://github.com/taboc741)
name="NordLayer"
type="pkg"
downloadURL="https://downloads.nordlayer.com/mac/latest/NordLayer.pkg"
expectedTeamID="W5W395V82Y"
;;
notion)
# credit: Søren Theilgaard (@theilgaard)
name="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"
;;
nudge)
@@ -4058,6 +4148,13 @@ proxyman)
appNewVersion="$(versionFromGit ProxymanApp Proxyman)"
expectedTeamID="3X57WP8E8V"
;;
prune)
name="Prune"
type="zip"
downloadURL=$(downloadURLFromGit BIG-RAT Prune)
appNewVersion=$(versionFromGit BIG-RAT Prune)
expectedTeamID="PS2F6S478M"
;;
pymol)
name="PyMOL"
type="dmg"
@@ -4166,7 +4263,7 @@ ricohpsprinters)
;;
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"
@@ -4174,7 +4271,7 @@ ringcentralapp)
downloadURL="https://app.ringcentral.com/download/RingCentral.pkg"
fi
expectedTeamID="M932RC5J66"
blockingProcesses=( "Ringcentral" )
blockingProcesses=( "RingCentral" )
;;
ringcentralclassicapp)
name="Glip"
@@ -4517,7 +4614,7 @@ sublimetext)
# credit: Søren Theilgaard (@theilgaard)
name="Sublime Text"
type="zip"
downloadURL="$(curl -fs https://www.sublimetext.com/download | grep -io "https://download.*_mac.zip")"
downloadURL="$(curl -fs "https://www.sublimetext.com/download_thanks?target=mac#direct-downloads" | grep -io "https://download.*_mac.zip" | head -1)"
appNewVersion=$(curl -fs https://www.sublimetext.com/download | grep -i -A 4 "id.*changelog" | grep -io "Build [0-9]*")
expectedTeamID="Z6D26JE4Y4"
;;
@@ -4596,14 +4693,16 @@ tageditor)
talkdeskcallbar)
name="Callbar"
type="dmg"
appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p')
talkdeskcallbarVersions=$(curl -fsL "https://downloadcallbar.talkdesk.com/release_metadata.json")
appNewVersion=$(getJSONValue "$talkdeskcallbarVersions" "version")
downloadURL=https://downloadcallbar.talkdesk.com/Callbar-${appNewVersion}.dmg
expectedTeamID="YGGJX44TB8"
;;
talkdeskcxcloud)
name="Talkdesk"
type="dmg"
appNewVersion=$(curl -fs https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-latest-metadata.json | sed -n -e 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p' | head -n 1)
talkdeskcxcloudVersions=$(curl -fs "https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-latest-metadata.json")
appNewVersion=$(getJSONValue "$talkdeskcxcloudVersions" "[0].version")
downloadURL="https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-${appNewVersion}.dmg"
expectedTeamID="YGGJX44TB8"
;;
@@ -4951,6 +5050,13 @@ wechat)
downloadURL="https://dldir1.qq.com/weixin/mac/WeChatMac.dmg"
expectedTeamID="5A4RE8SF68"
;;
whatroute)
name="WhatRoute"
type="zip"
downloadURL="$(curl -fs https://www.whatroute.net/whatroute2appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2)"
appNewVersion="$(curl -fs https://www.whatroute.net/whatroute2appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2)"
expectedTeamID="H5879E8LML"
;;
whatsapp)
name="WhatsApp"
type="dmg"
@@ -4976,12 +5082,12 @@ wickrpro)
wireshark)
name="Wireshark"
type="dmg"
if [[ $(arch) == i386 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Intel%2064.dmg"
elif [[ $(arch) == arm64 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Arm%2064.dmg"
fi
appNewVersion=$(curl -fs https://www.wireshark.org/download.html | grep -i "href.*_stable" | sed -E 's/.*\(([0-9.]*)\).*/\1/g')
if [[ $(arch) == i386 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20$appNewVersion%20Intel%2064.dmg"
elif [[ $(arch) == arm64 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20$appNewVersion%20Arm%2064.dmg"
fi
expectedTeamID="7Z6EMTD2C6"
;;
wordservice)

View File

@@ -56,6 +56,7 @@ bettertouchtool
bitwarden
blender
bluejeans
bluejeanswithaudiodriver
boxdrive
boxsync
boxtools
@@ -110,6 +111,7 @@ drawio
drift
dropbox
duckduckgo
duodevicehealth
easeusdatarecoverywizard
easyfind
egnyte
@@ -146,6 +148,7 @@ gimp
githubdesktop
golang
googlechrome
googlechromeenterprise
googlechromepkg
googledrive
googledrivebackupandsync
@@ -181,6 +184,7 @@ insomnia
installomator
installomator_theile
intellijideace
ipswupdater
istatmenus
iterm2
itsycal
@@ -259,6 +263,7 @@ microsoftyammer
mightymike
mindmanager
miro
mmhmm
mobikinassistantforandroid
mochakeyboard
mochatelnet
@@ -274,6 +279,7 @@ netnewswire
nextcloud
nomad
nomadlogin
nordlayer
notion
nudge
nvivo
@@ -317,6 +323,7 @@ promiseutilityr
propresenter7
protonvpn
proxyman
prune
pycharmce
pymol
qgis-pr
@@ -437,6 +444,7 @@ webex
webexmeetings
webexteams
wechat
whatroute
whatsapp
wickrme
wickrpro

View File

@@ -0,0 +1,43 @@
#!/bin/sh
# This script is meant to povide the simplest MDM/management platform agnostic way to install Installomator
# The only requirement is an Internet connection
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Get the URL of the latest PKG From the Installomator GitHub repo
url=$(curl --silent --fail "https://api.github.com/repos/Installomator/Installomator/releases/latest" | awk -F '"' "/browser_download_url/ && /pkg\"/ { print \$4; exit }")
# Expected Team ID of the downloaded PKG
expectedTeamID="JME5BW3F3R"
exitCode=0
# Check for Installomator and install if not found
if [ ! -e "/usr/local/Installomator/Installomator.sh" ]; then
echo "Installomator not found. Installing."
# Create temporary working directory
tempDirectory=$( mktemp -d )
echo "Created working directory '$tempDirectory'"
# Download the installer package
echo "Downloading Installomator package"
curl --location --silent "$url" -o "$tempDirectory/Installomator.pkg"
# Verify the download
teamID=$(spctl -a -vv -t install "$tempDirectory/Installomator.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()')
echo "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
echo "Package verified. Installing package Installomator.pkg"
installer -pkg "$tempDirectory/Installomator.pkg" -target / -verbose
exitCode=$?
else
echo "Package verification failed before package installation could start. Download link may be invalid. Aborting."
exitCode=1
exit $exitCode
fi
# Remove the temporary working directory when done
echo "Deleting working directory '$tempDirectory' and its contents"
rm -Rf "$tempDirectory"
else
echo "Installomator already installed."
fi
exit $exitCode

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
@@ -156,11 +156,11 @@ downloadURLFromGit() { # $1 git user name, $2 git repo name
fi
if [ -n "$archiveName" ]; then
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
| awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
#downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
downloadURL=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*$archiveName.*")
else
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
| awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
#downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
downloadURL=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*\.$filetype")
fi
if [ -z "$downloadURL" ]; then
cleanupAndExit 9 "could not retrieve download URL for $gitusername/$gitreponame" ERROR
@@ -176,7 +176,8 @@ versionFromGit() {
gitusername=${1?:"no git user name"}
gitreponame=${2?:"no git repo name"}
appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
#appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
if [ -z "$appNewVersion" ]; then
printlog "could not retrieve version number for $gitusername/$gitreponame" WARN
appNewVersion=""
@@ -199,6 +200,16 @@ 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,10 +2,11 @@ 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 "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*macarm64.*dmg" | cut -d '"' -f1 | head -1)
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'osx10')][contains(text(),'Download')]/@href)" - 2> /dev/null)
elif [[ $(arch) == "i386" ]]; then
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)
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'macarm64')][contains(text(),'Download')]/@href)" - 2> /dev/null)
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,7 +1,11 @@
blender)
name="blender"
type="dmg"
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)
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
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
expectedTeamID="68UA947AUU"
;;

View File

@@ -0,0 +1,12 @@
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 -E -o '(\/\S*Download\?FileNumber=R3306192\S*ShowDownloadPage=False)' | tail -1)
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}")"
expectedTeamID="P6CDJZR997"
;;

View File

@@ -0,0 +1,9 @@
duodevicehealth)
name="Duo Device Health"
type="pkgInDmg"
downloadURL="https://dl.duosecurity.com/DuoDeviceHealth-latest.dmg"
appNewVersion=$(curl -fsLIXGET "https://dl.duosecurity.com/DuoDeviceHealth-latest.dmg" | grep -i "^content-disposition" | sed -e 's/.*filename\=\"DuoDeviceHealth\-\(.*\)\.dmg\".*/\1/')
appName="Duo Device Health.app"
expectedTeamID="FNN8Z5JMFP"
;;

View File

@@ -3,6 +3,7 @@ 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,7 +2,8 @@ firefox)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
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)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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,7 +2,8 @@ firefox_da)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&amp;os=osx&amp;lang=da"
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)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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,7 +19,8 @@ firefox_intl)
printlog "Download not found for '$userLanguage', using default ('en-US')."
downloadURL="https://download.mozilla.org/?product=firefox-latest-ssl&os=osx"
fi
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"/"); print a[1]}')
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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,7 +3,8 @@ firefoxesrpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-esr-pkg-latest-ssl&os=osx"
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*releases\/([0-9.]*)esr.*/\1/g')
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "FIREFOX_ESR")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;

View File

@@ -19,7 +19,8 @@ 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
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"esr/"); print a[1]}')
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
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,7 +2,8 @@ firefoxpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
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)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;

View File

@@ -18,7 +18,8 @@ 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
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location | cut -d "/" -f7)
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;

View File

@@ -0,0 +1,10 @@
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

@@ -3,8 +3,13 @@ googledrivefilestream)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
name="Google Drive File Stream"
type="pkgInDmg"
packageID="com.google.drivefs"
if [[ $(arch) == "arm64" ]]; then
packageID="com.google.drivefs.arm64"
elif [[ $(arch) == "i386" ]]; then
packageID="com.google.drivefs.x86_64"
fi
downloadURL="https://dl.google.com/drive-file-stream/GoogleDriveFileStream.dmg" # downloadURL="https://dl.google.com/drive-file-stream/GoogleDrive.dmg"
blockingProcesses=( "Google Docs" "Google Drive" "Google Sheets" "Google Slides" )
appName="Google Drive.app"
expectedTeamID="EQHXZ8M8AV"
;;

View File

@@ -2,9 +2,8 @@ grammarly)
name="Grammarly Desktop"
type="dmg"
packageID="com.grammarly.ProjectLlama"
downloadURL=$(curl -fsL "https://download-mac.grammarly.com/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
downloadURL="https://download-mac.grammarly.com/Grammarly.dmg"
expectedTeamID="W8F64X92K3"
appNewVersion=$(curl -is "https://download-mac.grammarly.com/appcast.xml" | grep sparkle:version | tr ',' '\n' | grep sparkle:version | cut -d '"' -f 4)
# appName="Grammarly Installer.app"
installerTool="Grammarly Installer.app"
CLIInstaller="Grammarly Installer.app/Contents/MacOS/Grammarly Desktop"

View File

@@ -0,0 +1,8 @@
ipswupdater)
name="IPSW Updater"
type="zip"
ipswupdaterVersions=$(curl -fs "https://ipsw.app/download/updates.php?current_version=0.9.16")
downloadURL=$(getJSONValue "$ipswupdaterVersions" "[0].url")
appNewVersion=$(getJSONValue "$ipswupdaterVersions" "[0].version")
expectedTeamID="YRW6NUGA63"
;;

View File

@@ -2,6 +2,7 @@ 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,6 +2,7 @@ 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,6 +2,7 @@ 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,6 +2,10 @@ miro)
# credit: @matins
name="Miro"
type="dmg"
downloadURL="https://desktop.miro.com/platforms/darwin/Miro.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
expectedTeamID="M3GM7MFY7U"
;;

View File

@@ -0,0 +1,8 @@
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

@@ -0,0 +1,7 @@
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,9 +4,10 @@ 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 @@
prune)
name="Prune"
type="zip"
downloadURL=$(downloadURLFromGit BIG-RAT Prune)
appNewVersion=$(versionFromGit BIG-RAT Prune)
expectedTeamID="PS2F6S478M"
;;

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

@@ -2,7 +2,7 @@ sublimetext)
# credit: Søren Theilgaard (@theilgaard)
name="Sublime Text"
type="zip"
downloadURL="$(curl -fs https://www.sublimetext.com/download | grep -io "https://download.*_mac.zip")"
downloadURL="$(curl -fs "https://www.sublimetext.com/download_thanks?target=mac#direct-downloads" | grep -io "https://download.*_mac.zip" | head -1)"
appNewVersion=$(curl -fs https://www.sublimetext.com/download | grep -i -A 4 "id.*changelog" | grep -io "Build [0-9]*")
expectedTeamID="Z6D26JE4Y4"
;;

View File

@@ -1,7 +1,8 @@
talkdeskcallbar)
name="Callbar"
type="dmg"
appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p')
talkdeskcallbarVersions=$(curl -fsL "https://downloadcallbar.talkdesk.com/release_metadata.json")
appNewVersion=$(getJSONValue "$talkdeskcallbarVersions" "version")
downloadURL=https://downloadcallbar.talkdesk.com/Callbar-${appNewVersion}.dmg
expectedTeamID="YGGJX44TB8"
;;

View File

@@ -1,7 +1,8 @@
talkdeskcxcloud)
name="Talkdesk"
type="dmg"
appNewVersion=$(curl -fs https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-latest-metadata.json | sed -n -e 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p' | head -n 1)
talkdeskcxcloudVersions=$(curl -fs "https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-latest-metadata.json")
appNewVersion=$(getJSONValue "$talkdeskcxcloudVersions" "[0].version")
downloadURL="https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-${appNewVersion}.dmg"
expectedTeamID="YGGJX44TB8"
;;

View File

@@ -1,11 +1,11 @@
wireshark)
name="Wireshark"
type="dmg"
if [[ $(arch) == i386 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Intel%2064.dmg"
elif [[ $(arch) == arm64 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Arm%2064.dmg"
fi
appNewVersion=$(curl -fs https://www.wireshark.org/download.html | grep -i "href.*_stable" | sed -E 's/.*\(([0-9.]*)\).*/\1/g')
if [[ $(arch) == i386 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20$appNewVersion%20Intel%2064.dmg"
elif [[ $(arch) == arm64 ]]; then
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20$appNewVersion%20Arm%2064.dmg"
fi
expectedTeamID="7Z6EMTD2C6"
;;

View File

@@ -1 +1 @@
10.0beta
10.0beta1

7
googleadseditor.sh Normal file
View File

@@ -0,0 +1,7 @@
googleadseditor)
name="Google Ads Editor"
type="dmg"
downloadURL="https://dl.google.com/adwords_editor/google_ads_editor.dmg"
appNewVersion=""
expectedTeamID="EQHXZ8M8AV"
;;

View File

@@ -127,6 +127,8 @@ 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