updated CHANGELOG, main script, Labels.txt and the assemble script ReadMe

This commit is contained in:
Armin Briegel
2021-08-17 15:47:23 +02:00
parent 08ede3a447
commit 4101056ede
4 changed files with 134 additions and 16 deletions

View File

@@ -1,8 +1,22 @@
## v0.7 - pre-release
- script is now assembled from fragments. This helps avoid merging conflicts on git and allows the core team to work on the script logic while also accepting new labels. See the "Assemble Script ReadMe" for details.
- Change in finding installed apps. We now look in /Applications and /Applications/Utilities first. If not found there, we use spotligt to find it. (We discovered a problem when a user has Parallels Windows installed with Microsoft Edge in it. Then Installomator wanted to update the app all the time, becaus spotligt found that Windows version of the app that Parallels created.) - Change in finding installed apps. We now look in /Applications and /Applications/Utilities first. If not found there, we use spotligt to find it. (We discovered a problem when a user has Parallels Windows installed with Microsoft Edge in it. Then Installomator wanted to update the app all the time, becaus spotligt found that Windows version of the app that Parallels created.)
- Added bunch of new labels - Added bunch of new labels
- Improved `buildCaseStatement.sh` a lot. It is a great start when figuring out how to create a new label for an app, or a piece of software. - Improved `buildCaseStatement.sh` a lot. It is a great start when figuring out how to create a new label for an app, or a piece of software.
- Mosyle changed their app name from Business to Self-Service - Mosyle changed their app name from Business to Self-Service
## v0.6 - 2021-07-14
- several new and updated labels, for a total of 302
- versionKey variable can be used to choose which Info.plist key to get the version from
- an appCustomVersion() {} function can now be used in a label
- with INSTALL=force, the script will not be using updateTool, but will reinstall instead
- added quit and quit_kill options to NOTIFY
- updated buildCaseStatement.sh
- updated buildInstallomatorPkg.sh to use notarytool (requires Xcode 13)
- several minor fixes
## v0.5 - 2021-04-13 ## v0.5 - 2021-04-13
- Major update and now with help from @Theile and @Isaac - Major update and now with help from @Theile and @Isaac

View File

@@ -1073,6 +1073,13 @@ arq7)
appNewVersion="$(curl -fs "https://arqbackup.com" | grep -io "version .*[0-9.]*.* for macOS" | cut -d ">" -f2 | cut -d "<" -f1)" appNewVersion="$(curl -fs "https://arqbackup.com" | grep -io "version .*[0-9.]*.* for macOS" | cut -d ">" -f2 | cut -d "<" -f1)"
expectedTeamID="48ZCSDVL96" expectedTeamID="48ZCSDVL96"
;; ;;
asana)
# credit: Lance Stephens (@pythoninthegrass on MacAdmins Slack)
name="Asana"
type="dmg"
downloadURL="https://desktop-downloads.asana.com/darwin_x64/prod/latest/Asana.dmg"
expectedTeamID="A679L395M8"
;;
atext) atext)
# credit: Gabe Marchan (gabemarchan.com - @darklink87) # credit: Gabe Marchan (gabemarchan.com - @darklink87)
name="aText" name="aText"
@@ -1217,7 +1224,12 @@ boxdrive)
fi fi
expectedTeamID="M683GB7CPW" expectedTeamID="M683GB7CPW"
;; ;;
brave) boxtools)
name="Box Tools"
type="pkg"
downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg"
expectedTeamID="M683GB7CPW"
;;brave)
# credit: @securitygeneration # credit: @securitygeneration
name="Brave Browser" name="Brave Browser"
type="dmg" type="dmg"
@@ -1307,7 +1319,14 @@ coderunner)
downloadURL="https://coderunnerapp.com/download" downloadURL="https://coderunnerapp.com/download"
expectedTeamID="R4GD98AJF9" expectedTeamID="R4GD98AJF9"
;; ;;
cormorant) colourcontrastanalyser)
name="Colour Contrast Analyser (CCA)"
type="dmg"
downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe)
appNewVersion=$(versionFromGit ThePacielloGroup CCAe)
expectedTeamID="34RS4UC3M6"
blockingProcesses=( NONE )
;;cormorant)
# credit: Søren Theilgaard (@theilgaard) # credit: Søren Theilgaard (@theilgaard)
name="Cormorant" name="Cormorant"
type="zip" type="zip"
@@ -1505,8 +1524,14 @@ favro)
;; ;;
ferdi) ferdi)
name="Ferdi" name="Ferdi"
type="dmg" type="zip"
if [[ $(arch) == i386 ]]; then
downloadURL=$(curl --silent --fail "https://api.github.com/repos/getferdi/ferdi/releases/latest" \
| awk -F '"' "/browser_download_url/ && /mac.zip/ && ! /blockmap/ && ! /arm64-mac/ && ! /AppImage/{ print \$4 }")
elif [[ $(arch) == arm64 ]]; then
downloadURL=$(downloadURLFromGit getferdi ferdi ) downloadURL=$(downloadURLFromGit getferdi ferdi )
archiveName="arm64-mac.zip"
fi
appNewVersion=$(versionFromGit getferdi ferdi ) appNewVersion=$(versionFromGit getferdi ferdi )
expectedTeamID="B6J9X9DWFL" expectedTeamID="B6J9X9DWFL"
;; ;;
@@ -1894,7 +1919,18 @@ jamfreenroller)
#appNewVersion=$(versionFromGit jamf ReEnroller) #appNewVersion=$(versionFromGit jamf ReEnroller)
expectedTeamID="PS2F6S478M" expectedTeamID="PS2F6S478M"
;; ;;
jetbrainsintellijidea) jetbrainsdatagrip)
# credit: AP Orlebeke (@apizz)
name="DataGrip"
type="dmg"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
if [[ $(arch) == "arm64" ]]; then
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'macM1*.*,' | cut -d '"' -f5)
elif [[ $(arch) == "i386" ]]; then
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'mac*.*,' | cut -d '"' -f5)
fi
expectedTeamID="2ZEFAR8TH3"
;;jetbrainsintellijidea)
# credit: Gabe Marchan (gabemarchan.com - @darklink87) # credit: Gabe Marchan (gabemarchan.com - @darklink87)
name="IntelliJ IDEA" name="IntelliJ IDEA"
type="dmg" type="dmg"
@@ -2272,10 +2308,12 @@ microsoftskypeforbusiness)
microsoftteams) microsoftteams)
name="Microsoft Teams" name="Microsoft Teams"
type="pkg" type="pkg"
#packageID="com.microsoft.teams" packageID="com.microsoft.teams"
downloadURL="https://go.microsoft.com/fwlink/?linkid=869428" downloadURL="https://go.microsoft.com/fwlink/?linkid=869428"
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.teams.standalone"]/version' 2>/dev/null | sed -E 's/<version>([0-9.]*) .*/\1/') #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.teams.standalone"]/version' 2>/dev/null | sed -E 's/<version>([0-9.]*) .*/\1/')
# Still using macadmin.software for version, as the path does not contain the version in a matching format. packageID can be used, but version is the same. # Still using macadmin.software for version, as the path does not contain the version in a matching format. packageID can be used, but version is the same.
appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.teams.standalone"]/version' 2>/dev/null | sed -E 's/<version>([0-9.]*) .*/\1/')
# Looks like macadmin.software has package ID version. At least on 2021-05-28 version 1.00.411161 is matched on installed version and homepage.
expectedTeamID="UBF8T346G9" expectedTeamID="UBF8T346G9"
blockingProcesses=( Teams "Microsoft Teams Helper" ) blockingProcesses=( Teams "Microsoft Teams Helper" )
# Commenting out msupdate as it is not really supported *yet* for teams # Commenting out msupdate as it is not really supported *yet* for teams
@@ -2526,7 +2564,13 @@ plantronicshub)
expectedTeamID="SKWK2Q7JJV" expectedTeamID="SKWK2Q7JJV"
appNewVersion=$(curl -fs "https://www.poly.com/in/en/support/knowledge-base/kb-article-page?lang=en_US&urlName=Hub-Release-Notes&type=Product_Information__kav" | grep -o "(*.*<span>)" | head -1 | cut -d "(" -f2 | sed 's/\<\/span\>//g' | cut -d "<" -f1) appNewVersion=$(curl -fs "https://www.poly.com/in/en/support/knowledge-base/kb-article-page?lang=en_US&urlName=Hub-Release-Notes&type=Product_Information__kav" | grep -o "(*.*<span>)" | head -1 | cut -d "(" -f2 | sed 's/\<\/span\>//g' | cut -d "<" -f1)
;; ;;
plisteditpro) platypus)
name="Platypus"
type="zip"
downloadURL=$(downloadURLFromGit sveinbjornt Platypus)
appNewVersion=$(versionFromGit sveinbjornt Platypus)
expectedTeamID="55GP2M789L"
;;plisteditpro)
name="PlistEdit Pro" name="PlistEdit Pro"
type="zip" type="zip"
downloadURL="https://www.fatcatsoftware.com/plisteditpro/PlistEditPro.zip" downloadURL="https://www.fatcatsoftware.com/plisteditpro/PlistEditPro.zip"
@@ -2701,13 +2745,26 @@ santa)
appNewVersion=$(versionFromGit google santa) appNewVersion=$(versionFromGit google santa)
expectedTeamID="EQHXZ8M8AV" expectedTeamID="EQHXZ8M8AV"
;; ;;
screamingfrogseospider) scaleft)
name="ScaleFT"
type="pkg"
downloadURL="https://dist.scaleft.com/client-tools/mac/latest/ScaleFT.pkg"
appNewVersion=$(curl -sf "https://dist.scaleft.com/client-tools/mac/" | awk '/dir/{i++}i==2' | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
expectedTeamID="HV2G9Z3RP5"
blockingProcesses=( ScaleFT )
;;screamingfrogseospider)
name="Screaming Frog SEO Spider" name="Screaming Frog SEO Spider"
type="dmg" type="dmg"
downloadURL="https://download.screamingfrog.co.uk/products/seo-spider/ScreamingFrogSEOSpider-14.3.dmg" downloadURL="https://download.screamingfrog.co.uk/products/seo-spider/ScreamingFrogSEOSpider-14.3.dmg"
expectedTeamID="CAHEVC3HZC" expectedTeamID="CAHEVC3HZC"
;; ;;
screenflick) screencloudplayer)
# credit: AP Orlebeke (@apizz)
name="ScreenCloud Player"
type="dmg"
downloadURL=$(curl -sL "https://screencloud.com/download" | sed -n 's/^.*"url":"\([^"]*\)".*$/\1/p')
expectedTeamID="3C4F953K6P"
;;screenflick)
# credit: Gabe Marchan (gabemarchan.com - @darklink87) # credit: Gabe Marchan (gabemarchan.com - @darklink87)
name="Screenflick" name="Screenflick"
type="zip" type="zip"
@@ -3225,7 +3282,11 @@ zoomclient)
name="zoom.us" name="zoom.us"
type="pkg" type="pkg"
packageID="us.zoom.pkg.videmeeting" packageID="us.zoom.pkg.videmeeting"
downloadURL="https://zoom.us/client/latest/Zoom.pkg" if [[ $(arch) == i386 ]]; then
downloadURL="https://zoom.us/client/latest/Zoom.pkg"
elif [[ $(arch) == arm64 ]]; then
downloadURL="https://zoom.us/client/latest/Zoom.pkg?archType=arm64"
fi
expectedTeamID="BJ4HAAB9B3" expectedTeamID="BJ4HAAB9B3"
#appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/zoom.us" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4) # Does not match packageID #appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/zoom.us" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4) # Does not match packageID
blockingProcesses=( zoom.us ) blockingProcesses=( zoom.us )
@@ -3279,6 +3340,19 @@ zulujdk15)
appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" } appCustomVersion(){ java -version 2>&1 | grep Runtime | awk '{print $4}' | sed -e "s/.*Zulu//" | cut -d '-' -f 1 | sed -e "s/+/\./" }
appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
;; ;;
zulujdk8)
name="Zulu JDK 8"
type="pkgInDmg"
packageID="com.azulsystems.zulu.8"
if [[ $(arch) == i386 ]]; then
downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*x64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1)
elif [[ $(arch) == arm64 ]]; then
downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*aarch64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1)
fi
expectedTeamID="TDTHCUPYFR"
appCustomVersion(){ if [ -f "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" ]; then /usr/bin/defaults read "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" "CFBundleName" | sed 's/Zulu //'; fi }
appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
;;
*) *)
# unknown label # unknown label
#printlog "unknown label $label" #printlog "unknown label $label"

View File

@@ -24,6 +24,7 @@ applesfmono
applesfpro applesfpro
aquaskk aquaskk
arq7 arq7
asana
atext atext
atom atom
audacity audacity
@@ -42,7 +43,8 @@ bitwarden
blender blender
bluejeans bluejeans
boxdrive boxdrive
brave boxtools
caffeine
cakebrew cakebrew
calibre calibre
camostudio camostudio
@@ -52,7 +54,7 @@ clevershare2
clickshare clickshare
code42 code42
coderunner coderunner
cormorant colourcontrastanalyser
cryptomator cryptomator
cyberduck cyberduck
dangerzone dangerzone
@@ -125,7 +127,7 @@ jamfconnect
jamfmigrator jamfmigrator
jamfpppcutility jamfpppcutility
jamfreenroller jamfreenroller
jetbrainsintellijidea jetbrainsdatagrip
jetbrainsintellijideace jetbrainsintellijideace
jetbrainsphpstorm jetbrainsphpstorm
jetbrainspycharm jetbrainspycharm
@@ -134,7 +136,6 @@ karabinerelements
keepassxc keepassxc
keka keka
keyboardmaestro keyboardmaestro
keyboardmaestro
klokki klokki
knockknock knockknock
krisp krisp
@@ -200,7 +201,7 @@ pacifist
pdfsam pdfsam
pitch pitch
plantronicshub plantronicshub
plisteditpro platypus
postman postman
prism9 prism9
privileges privileges
@@ -225,8 +226,8 @@ rocketchat
royaltsx royaltsx
rstudio rstudio
santa santa
screamingfrogseospider scaleft
screenflick screencloudplayer
sfsymbols sfsymbols
shield shield
sidekick sidekick
@@ -285,6 +286,7 @@ vscodium
webex webex
webexmeetings webexmeetings
webexteams webexteams
webexteams
whatsapp whatsapp
wickrme wickrme
wickrpro wickrpro
@@ -301,3 +303,4 @@ zoomrooms
zulujdk11 zulujdk11
zulujdk13 zulujdk13
zulujdk15 zulujdk15
zulujdk8

View File

@@ -50,6 +50,10 @@ This will put together all the fragments, including your labels in your label fo
Once you are certain that your new custom label works, you can use the code from your _custom_ Installomator.sh script in `build/Installomator.sh`, or even build an installation pkg using the `--pkg` or `--notarize` options. Once you are certain that your new custom label works, you can use the code from your _custom_ Installomator.sh script in `build/Installomator.sh`, or even build an installation pkg using the `--pkg` or `--notarize` options.
The `Installomator.sh` script at the root of the repo does not really get involved in your building and testing. Similarly, if you want to apply, test, and contribute changes to the script's logic, you should modify the fragment file in question and test using the assemble script.
Pull requests against the `Installomator.sh` script in the root of the repo will be rejected. (Excepting the backlog of existing PRs.)
## How do I contribute new or modified labels back to the Installomator project? ## How do I contribute new or modified labels back to the Installomator project?
### When you are familiar with git and GitHub ### When you are familiar with git and GitHub
@@ -80,6 +84,29 @@ These are the fragments in the order they are assembled. All files are in the `f
- labels/*.sh - labels/*.sh
- main.txt - main.txt
Even though the fragment files are not functional shell scripts, we decided to use the `.sh` file extension, so that Finder opens the files in the proper application and text editors recognize their file type for code display.
`header.sh` contains all the 'front matter' of the script. This means all the variables that users can change together with all the comment lines explaining them.
The `version.sh` file is special in that is only contains the version string _and nothing else_. The assemble script will use this version to create two line of code that look like this:
```
VERSION="0.7.0b1"
VERSIONDATE="2021-08-17"
```
where the version is from the file and the date is generated dynamically from the current date.
The `functions.sh` fragment contains all the functions used in the script.
The `arguments.sh` fragment contains the argument parsing logic and some other logic that needs to happen before the label is evaluated. This includes the start of the large case statement that evaluates the label and the three 'built-in' labels `version`, `longversion`, and `valuesfromarguments`.
All the contents of the label files in `labels` (and any custom label locations you provide with the `-l`/`--label` option) will be inserted here.
Finally, the `main.sh` fragment contains most of the main logic.
The assemble script does not check _any_ of the files for syntax or completeness. You are responsible that everything fits together properly. (Pay special attention to remember the closing semi-colons `;;` in the label files.)
## assemble.sh Usage ## assemble.sh Usage
``` ```