mirror of
https://github.com/mtan93/Installomator.git
synced 2026-03-10 13:21:51 +00:00
Compare commits
296 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a54c9f0dbc | ||
|
|
89dffc5989 | ||
|
|
74ff5ecb08 | ||
|
|
9cc4972f62 | ||
|
|
b43ebe3483 | ||
|
|
4117b687e8 | ||
|
|
c6237ca193 | ||
|
|
d6a9d6707e | ||
|
|
ccc58d9dc1 | ||
|
|
7ac31c00fc | ||
|
|
6da46f30a2 | ||
|
|
4b59622348 | ||
|
|
9c060635df | ||
|
|
87f4b4e967 | ||
|
|
9923a03a12 | ||
|
|
4b87ffd5df | ||
|
|
57c5113554 | ||
|
|
25fdfc38f9 | ||
|
|
19ac07ca77 | ||
|
|
1260d9b9d1 | ||
|
|
e5c25aa867 | ||
|
|
f621d36981 | ||
|
|
bf6fda07d6 | ||
|
|
80082691b9 | ||
|
|
d50a825482 | ||
|
|
6aa32cba1c | ||
|
|
cb45cab5c7 | ||
|
|
8089187598 | ||
|
|
e8f5fd0a2a | ||
|
|
7e56354cb1 | ||
|
|
5880124676 | ||
|
|
385f9c1a04 | ||
|
|
b1801dd561 | ||
|
|
6b7c01dbaa | ||
|
|
4d71a194a8 | ||
|
|
49917fd4aa | ||
|
|
5aeb5bcec0 | ||
|
|
5bb584a2d2 | ||
|
|
a1fe87c7f7 | ||
|
|
9ae8f3c11f | ||
|
|
28d2f78465 | ||
|
|
709ee18144 | ||
|
|
876c1e96c4 | ||
|
|
305987e54a | ||
|
|
a3fe713e55 | ||
|
|
9f42fb9501 | ||
|
|
b6f0afb8ba | ||
|
|
f5fcca7b89 | ||
|
|
f02bacc71a | ||
|
|
c1312e0d01 | ||
|
|
d2f39a3b87 | ||
|
|
3e6ef1a6ee | ||
|
|
b78bc12fff | ||
|
|
f062d49bfd | ||
|
|
333b03e110 | ||
|
|
2a8bd0d2e8 | ||
|
|
996e85ad24 | ||
|
|
85cb09df34 | ||
|
|
b0b1477989 | ||
|
|
c62707cd7d | ||
|
|
38bf480a2e | ||
|
|
9125dbc5d7 | ||
|
|
04151adbfd | ||
|
|
1bfe163dff | ||
|
|
289b72c5f1 | ||
|
|
0a5f667a4f | ||
|
|
c954dab309 | ||
|
|
53c629aa15 | ||
|
|
028ed10393 | ||
|
|
891dab08d4 | ||
|
|
7f96d78946 | ||
|
|
596b9c6e28 | ||
|
|
374a32be9a | ||
|
|
32353c3852 | ||
|
|
ba7fc6468f | ||
|
|
4e8db91ff0 | ||
|
|
28d5d1de0c | ||
|
|
168d19cd56 | ||
|
|
4aa7cd7793 | ||
|
|
855101a2cd | ||
|
|
b74a06f336 | ||
|
|
09b84945ed | ||
|
|
9f34df0b4e | ||
|
|
c20ba0274b | ||
|
|
3c1e6cdf37 | ||
|
|
ecb7b0416b | ||
|
|
6258de8bef | ||
|
|
15373a35f9 | ||
|
|
bf4e7d89ec | ||
|
|
800c356b01 | ||
|
|
638f7983dd | ||
|
|
3ef4f11025 | ||
|
|
a42c624a7c | ||
|
|
ca772a6d28 | ||
|
|
a2ee2ccdde | ||
|
|
7e75683d76 | ||
|
|
51ba24f5e2 | ||
|
|
b28072fe84 | ||
|
|
d1ae2f1899 | ||
|
|
39a212bee9 | ||
|
|
ecde31ee1b | ||
|
|
d8dcf785f0 | ||
|
|
c5a719b176 | ||
|
|
1931973b54 | ||
|
|
75addfe8ea | ||
|
|
15f2add5e1 | ||
|
|
76749bb518 | ||
|
|
ca6614f591 | ||
|
|
396dbd745a | ||
|
|
2d0b4992a0 | ||
|
|
f194e62d64 | ||
|
|
8bc22afe12 | ||
|
|
6875084ca3 | ||
|
|
1d5c6d1812 | ||
|
|
1b85882aa7 | ||
|
|
94ea6bb449 | ||
|
|
dfa5df4f50 | ||
|
|
819d1ec7c4 | ||
|
|
ecdf502ba8 | ||
|
|
32c3dff48d | ||
|
|
480b49adb8 | ||
|
|
2c9085c0c5 | ||
|
|
4aa7993dc2 | ||
|
|
b0ee820828 | ||
|
|
b017b7bae9 | ||
|
|
885dcf1622 | ||
|
|
272e2738b5 | ||
|
|
dfb7d42d95 | ||
|
|
bf00b864f0 | ||
|
|
77567cdf4e | ||
|
|
57f53c647e | ||
|
|
4abe614300 | ||
|
|
709a787805 | ||
|
|
b0963fdfb9 | ||
|
|
22499f5d98 | ||
|
|
503396597e | ||
|
|
df7e98e0f2 | ||
|
|
85800fc41f | ||
|
|
cfa0d90725 | ||
|
|
7e76913add | ||
|
|
4f8f69bf76 | ||
|
|
0d4344e655 | ||
|
|
316c223346 | ||
|
|
921ba0f79e | ||
|
|
98b93f1b61 | ||
|
|
b54313a4b2 | ||
|
|
3792d0d151 | ||
|
|
638dac575d | ||
|
|
9e1f8f491d | ||
|
|
4a79790d30 | ||
|
|
d49508284f | ||
|
|
918005477b | ||
|
|
25af719e20 | ||
|
|
e46dbe7ad3 | ||
|
|
dfd9ab1071 | ||
|
|
ea9c77045f | ||
|
|
d0e0f3e060 | ||
|
|
e93ecb52de | ||
|
|
43aa0a835c | ||
|
|
7af1ce554e | ||
|
|
4c38386c53 | ||
|
|
39f67c9e89 | ||
|
|
c40168f301 | ||
|
|
e0a0b65b80 | ||
|
|
d1923a4e7f | ||
|
|
f0ff1e6269 | ||
|
|
b6092df909 | ||
|
|
2fb80375ec | ||
|
|
796f8a4e25 | ||
|
|
310140d64f | ||
|
|
8db95578c7 | ||
|
|
ba7edf8d02 | ||
|
|
c0a0b37f7e | ||
|
|
cd27693125 | ||
|
|
adbe98718f | ||
|
|
fcde9e2e4c | ||
|
|
ded8787da5 | ||
|
|
05039ae826 | ||
|
|
7c0a4ef04a | ||
|
|
8feb2e5578 | ||
|
|
47dfa8fdf4 | ||
|
|
425722acda | ||
|
|
0b3d703e02 | ||
|
|
4b53da0fb7 | ||
|
|
bf5f5ca936 | ||
|
|
1b6d82e880 | ||
|
|
c9ca70e836 | ||
|
|
0530cba21b | ||
|
|
0adc02ba0c | ||
|
|
f16ee55ed6 | ||
|
|
a67ba0934f | ||
|
|
26ae2b3139 | ||
|
|
97ec3efedb | ||
|
|
b0ed6432f6 | ||
|
|
174a2b5a46 | ||
|
|
9edc256caa | ||
|
|
8e9488c68f | ||
|
|
5799c5d432 | ||
|
|
d97c84dd0c | ||
|
|
effd470ce7 | ||
|
|
38326e87e3 | ||
|
|
e8464c5c47 | ||
|
|
9dbac45621 | ||
|
|
db3e109c21 | ||
|
|
039de95b5c | ||
|
|
028fbd60d6 | ||
|
|
50bc2fd708 | ||
|
|
c37daf5b7b | ||
|
|
468ac0de6e | ||
|
|
c21dde0074 | ||
|
|
6267736abf | ||
|
|
7803d1afe2 | ||
|
|
54b57cc83d | ||
|
|
8077cb91b9 | ||
|
|
261c92946e | ||
|
|
28dc87fdbe | ||
|
|
33e2e829c5 | ||
|
|
968e3b3ab0 | ||
|
|
b2cd2b74be | ||
|
|
66b1f9a319 | ||
|
|
f0d3828054 | ||
|
|
4bc03223ae | ||
|
|
394b8dabdc | ||
|
|
bc046cfc07 | ||
|
|
897a85a54c | ||
|
|
2b0cb9dbc0 | ||
|
|
c8ae2aa6f0 | ||
|
|
63af53fb34 | ||
|
|
498a8a28af | ||
|
|
20be5255a7 | ||
|
|
eb501486e4 | ||
|
|
66b4769369 | ||
|
|
65b82cf20d | ||
|
|
9a57ecc66b | ||
|
|
fcbe0626da | ||
|
|
82a1ed8180 | ||
|
|
1e971cc063 | ||
|
|
49c7338e9d | ||
|
|
a74d3106c0 | ||
|
|
a4e4c38423 | ||
|
|
d603a2805b | ||
|
|
84e26c07e2 | ||
|
|
8fdfaadf6d | ||
|
|
0c0977e61f | ||
|
|
012b4db5f6 | ||
|
|
d250e5a8b9 | ||
|
|
7abcf51a55 | ||
|
|
dbf0d34ac6 | ||
|
|
f65010ecb4 | ||
|
|
8a95e02d21 | ||
|
|
e18361b36c | ||
|
|
a2305d5c8c | ||
|
|
1250812203 | ||
|
|
2829a466dc | ||
|
|
7a4feb0ee7 | ||
|
|
071947cb38 | ||
|
|
8c8ea13ad3 | ||
|
|
70337cab58 | ||
|
|
614e412f01 | ||
|
|
f5730ec79b | ||
|
|
14f3725ed9 | ||
|
|
44a64b83b9 | ||
|
|
a7ec5b9531 | ||
|
|
2b06ba1f22 | ||
|
|
ca17fa3c6b | ||
|
|
e0459f3d06 | ||
|
|
a8f3944e65 | ||
|
|
409c84b7ef | ||
|
|
d69a102334 | ||
|
|
aa761f2583 | ||
|
|
71fbb7fe0c | ||
|
|
719a78ae73 | ||
|
|
6d6c011d30 | ||
|
|
0513a2d6a5 | ||
|
|
cfaac1eb28 | ||
|
|
c97a0545d3 | ||
|
|
546c5d6aa1 | ||
|
|
3bcb9e7e32 | ||
|
|
04880d329e | ||
|
|
d167a51ee6 | ||
|
|
a87f0a6ec4 | ||
|
|
c37229d763 | ||
|
|
1d634b9a80 | ||
|
|
a481b17a78 | ||
|
|
30bd4797ae | ||
|
|
5585f8c558 | ||
|
|
21b9709f6b | ||
|
|
db5c9ded56 | ||
|
|
4859efa72f | ||
|
|
a20770314e | ||
|
|
4ddc8a7f92 | ||
|
|
400be8581e | ||
|
|
553d06826d | ||
|
|
11a06eb264 | ||
|
|
1dc42a22a4 | ||
|
|
ce25012973 |
13
.editorconfig
Normal file
13
.editorconfig
Normal file
@@ -0,0 +1,13 @@
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# Unix-style newlines and whitespace cleanup
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
# shell formatting
|
||||
[*.{sh,bash,zsh}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -11,3 +11,4 @@ scratch/
|
||||
|
||||
# do include Installomator .pkg files
|
||||
#!Installomator-*.pkg
|
||||
checkLabelCurrent.sh
|
||||
|
||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -1,9 +1,21 @@
|
||||
## v0.7 - pre-release
|
||||
## v8.0
|
||||
|
||||
- removed leading `0` from the version because it has lost all meaning (thanks to @grahampugh for the inspiration)
|
||||
- Installomator now detects when an app is already installed, and will display notifications correctly the user based on if the app was updated or installed for the first time.
|
||||
- New variables for labels that should be installed using CLI: `CLIInstaller` and `CLIArguments`. When the installer app is named differently than the installed app, then the variable `installerTool` should be used to name the app that should be located in the DMG or zip. See the label __adobecreativeclouddesktop__ to see its use.
|
||||
- `buildLabel.sh` has been improved to build GitHub software labels much easier. In essense if the URL contains github.com, then it will try to find if it's the latest version or if variable `archiveName` is needed for finding the software. Also improved messaging throughout the script, as well as handling a situation where a pkg does not include a “Distribution” file, but a “PackageInfo”.
|
||||
- MDM script extended with `caffeinate` so Mac will not go to sleep during the time it takes installomator to run. Especially during setup, this can be useful.
|
||||
- Microsoft labels with `updateTool` variable, is updated to run `msupdate --list` before running the updateTool directly. Problems have been reported that the update would fail if the `--list` parameter for the command was not run first. This should help with the Jamf agent stalling during installation.
|
||||
- Added bunch of new labels, and improved others.
|
||||
|
||||
## v0.7
|
||||
|
||||
- default for `BLOCKING_PROCESS_ACTION`is now `BLOCKING_PROCESS_ACTION=tell_user` and not `prompt_user`. It will demand the user to quit the app to get it updated, and not present any option to skip it. In considering various use cases in different MDM solutions this is the best option going forward. Users usually choose to update, and is most often not bothered much with this information. If it's absoultely a bad time, then they can move the dialog box to the side, and click it when ready.
|
||||
- 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.)
|
||||
- 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.
|
||||
- We now detect App Store installed apps, and we do not replace them automatically. An example is Slack that will loose all settings if it is suddenly changed from App Store version to the "web" version (they differ in the handling of settings files). If `INSTALL=force` then we will replace the App Store app. We log all this.
|
||||
- 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 spotlight found that Windows version of the app that Parallels created.)
|
||||
- Added bunch of new labels, and improved others.
|
||||
- Renamed `buildCaseStatement.sh` to `buildLabel.sh` and improved it a lot. It is a great start when figuring out how to create a new label for an app, or a piece of software. Look at the tutorials in our wiki.
|
||||
- Mosyle changed their app name from Business to Self-Service
|
||||
|
||||
## v0.6 - 2021-07-14
|
||||
@@ -22,10 +34,10 @@
|
||||
- Major update and now with help from @Theile and @Isaac
|
||||
- Added additional `BLOCKING_PROCESS_ACTION` handlings
|
||||
- Added additional `NOTIFY=all`. Usuful if used in Self Service, as the user will be notified before download, before install as well as when it is done.
|
||||
- Added variable `LOGO` for icons i dialogs, use `LOGO=appstore` (or `jamf` or `mosyleb` or `mosylem` or `addigy`). It's also possible to set it to a direct path to a specific icon. Default is `appstore`.
|
||||
- Added variable `LOGO` for icons i dialogs, use `LOGO=appstore` (or `jamf` or `mosyleb` or `mosylem` or `addigy`). It's also possible to set it to a direct path to a specific icon. Default is `appstore`.
|
||||
- Added variable `INSTALL` that can be set to `INSTALL=force` if software needs to be installed even though latest version is already installed (it will be a reinstall).
|
||||
- Version control now included. The variable `appNewVersion` in a label can be used to tell what the latest version from the web is. If this is not given, version checking is done after download.
|
||||
- For a label that only installs a pkg without an app in it, a variable `packageID` can be used for version checking.
|
||||
- For a label that only installs a pkg without an app in it, a variable `packageID` can be used for version checking.
|
||||
- Labels now sorted alphabetically, except for the Microsoft ones (that are at the end of the list). A bunch of new labels added, and lots of them have either been changed or improved (with `appNewVersion` og `packageID`).
|
||||
- If an app is asked to be closed down, it will now be opened again after the update.
|
||||
- If your MDM cannot call a script with parameters, the label can be set in the top of the script.
|
||||
|
||||
26
CONTRIBUTING.md
Normal file
26
CONTRIBUTING.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Contributing to Installomator
|
||||
|
||||
__Please note, that if you are contributing to this project with new labels or other suggestions in PRs, please put your changes in the fragmented files, not the full `Installomator.sh` script. The full script is now a build of the fragments, and will be overwritten.__
|
||||
|
||||
We try to keep the script as short as possible, and with more than 300 labels, we can save 300 lines in the script, if we do not have credit lines on each of these. So we are thankful for your contribution, but we will be removing these lines in the coming releases.
|
||||
|
||||
## Labels
|
||||
|
||||
If you need a new label, please take a look at the tutorials in the Wiki, if those can be helpful for starting out on the creation of the label.
|
||||
|
||||
We really encourage you to try out finding the version of the app online, so that `appNewVersion` can be filled in the label. It helps a lot when the software needs update, and greatly improve user experience.
|
||||
|
||||
When creating a new label, please file a pull request (PR). And feel free to ask questions or make your comments about what else is needed, if we should take a look at the label, or help out in finding the version or isolating URLs or anything else.
|
||||
|
||||
Please include the log of installing this label in the description.
|
||||
|
||||
Please have one label per PR, so we can separate these. Also if you change/fix a label.
|
||||
|
||||
Thank you very much!
|
||||
|
||||
|
||||
## Issues
|
||||
|
||||
Do not create an issue just when you have a questions, but do file an issue or pull request (PR) for bugs or wrong behavior. Include the full log and include the version of Installomator you're running.
|
||||
|
||||
When in doubt, use the MacAdmins.org Slack as described in [README.md](https://github.com/Installomator/Installomator/)
|
||||
1186
Installomator.sh
1186
Installomator.sh
File diff suppressed because it is too large
Load Diff
76
Labels.txt
76
Labels.txt
@@ -4,12 +4,15 @@
|
||||
abstract
|
||||
adobebrackets
|
||||
adobeconnect
|
||||
adobecreativeclouddesktop
|
||||
adobereaderdc
|
||||
adobereaderdc-install
|
||||
adobereaderdc-update
|
||||
aircall
|
||||
airserver
|
||||
airtame
|
||||
aldente
|
||||
alephone
|
||||
alfred
|
||||
alttab
|
||||
amazonchime
|
||||
@@ -22,12 +25,14 @@ applenyfonts
|
||||
applesfcompact
|
||||
applesfmono
|
||||
applesfpro
|
||||
applesfsymbols
|
||||
aquaskk
|
||||
arq7
|
||||
asana
|
||||
atext
|
||||
atom
|
||||
audacity
|
||||
authydesktop
|
||||
autodmg
|
||||
autopkgr
|
||||
aviatrix
|
||||
@@ -43,18 +48,28 @@ bitwarden
|
||||
blender
|
||||
bluejeans
|
||||
boxdrive
|
||||
boxsync
|
||||
boxtools
|
||||
brave
|
||||
bugdom
|
||||
caffeine
|
||||
cakebrew
|
||||
calibre
|
||||
camostudio
|
||||
camtasia
|
||||
canva
|
||||
chatwork
|
||||
cisdem-documentreader
|
||||
citrixworkspace
|
||||
clevershare2
|
||||
clickshare
|
||||
closeio
|
||||
cloudya
|
||||
code42
|
||||
coderunner
|
||||
colourcontrastanalyser
|
||||
cormorant
|
||||
craftmanager
|
||||
cryptomator
|
||||
cyberduck
|
||||
dangerzone
|
||||
@@ -66,6 +81,7 @@ depnotify
|
||||
desktoppr
|
||||
detectxswift
|
||||
devonthink
|
||||
dialog
|
||||
dialpad
|
||||
discord
|
||||
docker
|
||||
@@ -75,13 +91,17 @@ easeusdatarecoverywizard
|
||||
egnyte
|
||||
element
|
||||
eraseinstall
|
||||
eshareosx
|
||||
etrecheck
|
||||
evernote
|
||||
exelbanstats
|
||||
exifrenamer
|
||||
fantastical
|
||||
fastscripts
|
||||
favro
|
||||
ferdi
|
||||
figma
|
||||
findanyfile
|
||||
firefox
|
||||
firefox_da
|
||||
firefox_intl
|
||||
@@ -89,6 +109,7 @@ firefoxesr
|
||||
firefoxesr_intl
|
||||
firefoxesrpkg
|
||||
firefoxpkg
|
||||
flowjo
|
||||
front
|
||||
fsmonitor
|
||||
gimp
|
||||
@@ -118,23 +139,32 @@ hyper
|
||||
icons
|
||||
imazingprofileeditor
|
||||
inkscape
|
||||
insomnia
|
||||
installomator
|
||||
installomator_theile
|
||||
intellijideace
|
||||
istatmenus
|
||||
iterm2
|
||||
jabradirect
|
||||
jamfconnect
|
||||
jamfconnectconfiguration
|
||||
jamfmigrator
|
||||
jamfpppcutility
|
||||
jamfreenroller
|
||||
jetbrainsclion
|
||||
jetbrainsdatagrip
|
||||
jetbrainsintellijidea
|
||||
jetbrainsintellijideace
|
||||
jetbrainsphpstorm
|
||||
jetbrainspycharm
|
||||
jetbrainspycharmce
|
||||
jetbrainsrubymine
|
||||
jetbrainstoolbox
|
||||
jetbrainswebstorm
|
||||
karabinerelements
|
||||
keepassxc
|
||||
keka
|
||||
keybase
|
||||
keyboardmaestro
|
||||
klokki
|
||||
knockknock
|
||||
@@ -145,14 +175,21 @@ launchbar
|
||||
lexarrecoverytool
|
||||
libreoffice
|
||||
logitechoptions
|
||||
logseq
|
||||
loom
|
||||
lucifer
|
||||
lulu
|
||||
maccyapp
|
||||
macfuse
|
||||
macports
|
||||
malwarebytes
|
||||
marathon
|
||||
marathon2
|
||||
marathoninfinity
|
||||
mattermost
|
||||
menumeters
|
||||
microsoftautoupdate
|
||||
microsoftazurestorageexplorer
|
||||
microsoftcompanyportal
|
||||
microsoftdefenderatp
|
||||
microsoftedge
|
||||
@@ -174,12 +211,16 @@ microsoftvisualstudiocode
|
||||
microsoftword
|
||||
microsoftyammer
|
||||
miro
|
||||
montereyblocker
|
||||
mowgliiitsycal
|
||||
musescore
|
||||
muzzle
|
||||
netnewswire
|
||||
nextcloud
|
||||
nomad
|
||||
nomadlogin
|
||||
notion
|
||||
nudge
|
||||
nvivo
|
||||
obs
|
||||
obsidian
|
||||
@@ -197,11 +238,17 @@ onlyofficedesktop
|
||||
openvpnconnect
|
||||
openvpnconnectv3
|
||||
opera
|
||||
ottomatic
|
||||
overflow
|
||||
pacifist
|
||||
pandoc
|
||||
parsec
|
||||
pdfsam
|
||||
perimeter81
|
||||
pitch
|
||||
plantronicshub
|
||||
platypus
|
||||
plisteditpro
|
||||
postman
|
||||
prism9
|
||||
privileges
|
||||
@@ -214,6 +261,8 @@ r
|
||||
ramboxce
|
||||
rectangle
|
||||
redeye
|
||||
remotix
|
||||
remotixagent
|
||||
resiliosynchome
|
||||
retrobatch
|
||||
ricohpsprinters
|
||||
@@ -223,11 +272,15 @@ ringcentralmeetings
|
||||
ringcentralphone
|
||||
rocket
|
||||
rocketchat
|
||||
rodeconnect
|
||||
royaltsx
|
||||
rstudio
|
||||
santa
|
||||
scaleft
|
||||
screamingfrogseospider
|
||||
screencloudplayer
|
||||
screenflick
|
||||
sequelpro
|
||||
sfsymbols
|
||||
shield
|
||||
sidekick
|
||||
@@ -236,8 +289,10 @@ silnite
|
||||
sirimote
|
||||
sizeup
|
||||
sketch
|
||||
sketchupviewer
|
||||
skype
|
||||
slack
|
||||
smartgit
|
||||
snagit
|
||||
snagit2020
|
||||
snagit2021
|
||||
@@ -246,13 +301,22 @@ sonos
|
||||
sonoss1
|
||||
sonoss2
|
||||
sourcetree
|
||||
splashtopsos
|
||||
spotify
|
||||
sqlpropostgres
|
||||
sqlprostudio
|
||||
steelseriesengine
|
||||
strongsync
|
||||
sublimetext
|
||||
superhuman
|
||||
supportapp
|
||||
suspiciouspackage
|
||||
swiftruntimeforcommandlinetools
|
||||
sync
|
||||
tableaudesktop
|
||||
tableaureader
|
||||
tageditor
|
||||
talkdeskcallbar
|
||||
taskpaper
|
||||
teamviewer
|
||||
teamviewerhost
|
||||
@@ -264,15 +328,17 @@ textmate
|
||||
theunarchiver
|
||||
things
|
||||
thunderbird
|
||||
tigervnc
|
||||
toggltrack
|
||||
tom4aconverter
|
||||
torbrowser
|
||||
trex
|
||||
tunnelbear
|
||||
tunnelblick
|
||||
typora
|
||||
umbrellaroamingclient
|
||||
uniconverter
|
||||
universaltypeclient
|
||||
utm
|
||||
vagrant
|
||||
vanilla
|
||||
veracrypt
|
||||
@@ -283,10 +349,11 @@ vivaldi
|
||||
vlc
|
||||
vmwarehorizonclient
|
||||
vscodium
|
||||
wacomdrivers
|
||||
wallyezflash
|
||||
webex
|
||||
webexmeetings
|
||||
webexteams
|
||||
webexteams
|
||||
whatsapp
|
||||
wickrme
|
||||
wickrpro
|
||||
@@ -295,10 +362,15 @@ wwdc
|
||||
xeroxphaser7800
|
||||
xink
|
||||
xquartz
|
||||
yed
|
||||
yubikeymanagerqt
|
||||
zappy
|
||||
zeplin
|
||||
zohoworkdrive
|
||||
zohoworkdrivetruesync
|
||||
zoom
|
||||
zoomclient
|
||||
zoomgov
|
||||
zoomrooms
|
||||
zulujdk11
|
||||
zulujdk13
|
||||
|
||||
168
MDM/App script.sh
Executable file
168
MDM/App script.sh
Executable file
@@ -0,0 +1,168 @@
|
||||
#!/bin/zsh
|
||||
# Installation using Installomator
|
||||
what="brave" # enter the software to install
|
||||
|
||||
# To be used as a script sent out from a MDM.
|
||||
# Fill the variable "what" above with a label.
|
||||
# Script will run this label.
|
||||
###############################################
|
||||
|
||||
# No sleeping
|
||||
/usr/bin/caffeinate -d -i -m -u &
|
||||
caffeinatepid=$!
|
||||
caffexit () {
|
||||
kill "$caffeinatepid"
|
||||
exit $1
|
||||
}
|
||||
|
||||
# Verify that Installomator has been installed
|
||||
destFile="/usr/local/Installomator/Installomator.sh"
|
||||
if [ ! -e "${destFile}" ]; then
|
||||
echo "Installomator not found here:"
|
||||
echo "${destFile}"
|
||||
echo "Exiting."
|
||||
caffexit 99
|
||||
fi
|
||||
|
||||
${destFile} ${what} LOGO=mosyleb BLOCKING_PROCESS_ACTION=tell_user #NOTIFY=all #INSTALL=force
|
||||
if [ $? != 0 ]; then
|
||||
# This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
|
||||
echo "Error installing ${what}. Exit code $?"
|
||||
caffexit $?
|
||||
fi
|
||||
|
||||
echo "[$(DATE)][LOG-END]"
|
||||
|
||||
caffexit 0
|
||||
|
||||
# notify behavior
|
||||
# NOTIFY=success
|
||||
# options:
|
||||
# - success notify the user on success
|
||||
# - silent no notifications
|
||||
# - all all notifications (great for Self Service installation)
|
||||
|
||||
|
||||
# behavior when blocking processes are found
|
||||
# BLOCKING_PROCESS_ACTION=tell_user
|
||||
# options:
|
||||
# - ignore continue even when blocking processes are found
|
||||
# - quit app will be told to quit nicely, if running
|
||||
# - quit_kill told to quit twice, then it will be killed
|
||||
# Could be great for service apps, if they do not respawn
|
||||
# - silent_fail exit script without prompt or installation
|
||||
# - prompt_user show a user dialog for each blocking process found
|
||||
# abort after three attempts to quit
|
||||
# (only if user accepts to quit the apps, otherwise
|
||||
# the update is cancelled).
|
||||
# - prompt_user_then_kill
|
||||
# show a user dialog for each blocking process found,
|
||||
# attempt to quit two times, kill the process finally
|
||||
# - prompt_user_loop
|
||||
# Like prompt-user, but clicking "Not Now", will just wait an hour,
|
||||
# and then it will ask again.
|
||||
# WARNING! It might block the MDM agent on the machine, as
|
||||
# the scripts gets stuct in waiting until the hour has passed,
|
||||
# possibly blocking for other management actions in this time.
|
||||
# - tell_user User will be showed a notification about the important update,
|
||||
# but user is only allowed to quit and continue, and then we
|
||||
# ask the app to quit.
|
||||
# - tell_user_then_kill
|
||||
# Show dialog 2 times, and if the quitting fails, the
|
||||
# blocking processes will be killed.
|
||||
# - kill kill process without prompting or giving the user a chance to save
|
||||
|
||||
|
||||
# logo-icon used in dialog boxes if app is blocking
|
||||
# LOGO=appstore
|
||||
# options:
|
||||
# - appstore Icon is Apple App Store (default)
|
||||
# - jamf JAMF Pro
|
||||
# - mosyleb Mosyle Business
|
||||
# - mosylem Mosyle Manager (Education)
|
||||
# - addigy Addigy
|
||||
# path can also be set in the command call, and if file exists, it will be used.
|
||||
# Like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"'
|
||||
# (spaces have to be escaped).
|
||||
|
||||
|
||||
# App Store apps handling
|
||||
# IGNORE_APP_STORE_APPS=no
|
||||
# options:
|
||||
# - no If installed app is from App Store (which include VPP installed apps)
|
||||
# it will not be touched, no matter it's version (default)
|
||||
# - yes Replace App Store (and VPP) version of app and handle future
|
||||
# updates using Installomator, even if latest version.
|
||||
# Shouldn’t give any problems for the user in most cases.
|
||||
# Known bad example: Slack will loose all settings.
|
||||
|
||||
|
||||
# install behavior
|
||||
# INSTALL=""
|
||||
# options:
|
||||
# - When not set, software will only be installed
|
||||
# if it is newer/different in version
|
||||
# - force Install even if it’s the same version
|
||||
|
||||
|
||||
# Re-opening of closed app
|
||||
# REOPEN="yes"
|
||||
# options:
|
||||
# - yes App wil be reopened if it was closed
|
||||
# - no App not reopened
|
||||
|
||||
|
||||
########################
|
||||
# Often used labels:
|
||||
########################
|
||||
|
||||
# firefox
|
||||
# firefox_intl
|
||||
# brave
|
||||
# torbrowser
|
||||
# googlechrome
|
||||
# netnewswire
|
||||
|
||||
# adobereaderdc
|
||||
# textmate
|
||||
|
||||
# cyberduck
|
||||
# keka
|
||||
# theunarchiver
|
||||
|
||||
# vlc
|
||||
# handbrake
|
||||
|
||||
# inkscape
|
||||
|
||||
# signal
|
||||
# telegram
|
||||
# whatsapp
|
||||
|
||||
# hazel
|
||||
# devonthink
|
||||
|
||||
# teamviewerqs
|
||||
# zoom
|
||||
|
||||
# malwarebytes
|
||||
# githubdesktop
|
||||
# sublimetext
|
||||
# textmate
|
||||
# visualstudiocode
|
||||
|
||||
# microsoftskypeforbusiness
|
||||
# microsoftteams
|
||||
# microsoftyammer
|
||||
# microsoftedgeenterprisestable
|
||||
# microsoftedgeconsumerstable
|
||||
# microsoftsharepointplugin
|
||||
# microsoftdefenderatp
|
||||
|
||||
# googledrivefilestream
|
||||
|
||||
# cdef
|
||||
# desktoppr
|
||||
# supportapp
|
||||
# xink
|
||||
# wwdc
|
||||
176
MDM/App-loop script.sh
Executable file
176
MDM/App-loop script.sh
Executable file
@@ -0,0 +1,176 @@
|
||||
#!/bin/zsh
|
||||
# Installation using Installomator
|
||||
what="microsoftteams microsoftyammer firefox bravebrowser cyberduck vlc signal" # enter the software to install separated with spaces
|
||||
|
||||
# To be used as a script sent out from a MDM.
|
||||
# Fill the variable "what" above with labels separated by space " ".
|
||||
# Script will loop through these labels.
|
||||
######################################################################
|
||||
|
||||
# No sleeping
|
||||
/usr/bin/caffeinate -d -i -m -u &
|
||||
caffeinatepid=$!
|
||||
caffexit () {
|
||||
kill "$caffeinatepid"
|
||||
exit $1
|
||||
}
|
||||
|
||||
# Count errors
|
||||
errorCount=0
|
||||
|
||||
# Verify that Installomator has been installed
|
||||
destFile="/usr/local/Installomator/Installomator.sh"
|
||||
if [ ! -e "${destFile}" ]; then
|
||||
echo "Installomator not found here:"
|
||||
echo "${destFile}"
|
||||
echo "Exiting."
|
||||
caffexit 99
|
||||
fi
|
||||
|
||||
for item in $what; do
|
||||
#echo $item
|
||||
${destFile} ${item} LOGO=mosyleb BLOCKING_PROCESS_ACTION=tell_user #NOTIFY=all #INSTALL=force
|
||||
if [ $? != 0 ]; then
|
||||
# This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
|
||||
echo "[$(DATE)] Error installing ${item}. Exit code $?"
|
||||
let errorCount++
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Errors: $errorCount"
|
||||
echo "[$(DATE)][LOG-END]"
|
||||
|
||||
caffexit $errorCount
|
||||
|
||||
# notify behavior
|
||||
# NOTIFY=success
|
||||
# options:
|
||||
# - success notify the user on success
|
||||
# - silent no notifications
|
||||
# - all all notifications (great for Self Service installation)
|
||||
|
||||
|
||||
# behavior when blocking processes are found
|
||||
# BLOCKING_PROCESS_ACTION=tell_user
|
||||
# options:
|
||||
# - ignore continue even when blocking processes are found
|
||||
# - quit app will be told to quit nicely, if running
|
||||
# - quit_kill told to quit twice, then it will be killed
|
||||
# Could be great for service apps, if they do not respawn
|
||||
# - silent_fail exit script without prompt or installation
|
||||
# - prompt_user show a user dialog for each blocking process found
|
||||
# abort after three attempts to quit
|
||||
# (only if user accepts to quit the apps, otherwise
|
||||
# the update is cancelled).
|
||||
# - prompt_user_then_kill
|
||||
# show a user dialog for each blocking process found,
|
||||
# attempt to quit two times, kill the process finally
|
||||
# - prompt_user_loop
|
||||
# Like prompt-user, but clicking "Not Now", will just wait an hour,
|
||||
# and then it will ask again.
|
||||
# WARNING! It might block the MDM agent on the machine, as
|
||||
# the scripts gets stuct in waiting until the hour has passed,
|
||||
# possibly blocking for other management actions in this time.
|
||||
# - tell_user User will be showed a notification about the important update,
|
||||
# but user is only allowed to quit and continue, and then we
|
||||
# ask the app to quit.
|
||||
# - tell_user_then_kill
|
||||
# Show dialog 2 times, and if the quitting fails, the
|
||||
# blocking processes will be killed.
|
||||
# - kill kill process without prompting or giving the user a chance to save
|
||||
|
||||
|
||||
# logo-icon used in dialog boxes if app is blocking
|
||||
# LOGO=appstore
|
||||
# options:
|
||||
# - appstore Icon is Apple App Store (default)
|
||||
# - jamf JAMF Pro
|
||||
# - mosyleb Mosyle Business
|
||||
# - mosylem Mosyle Manager (Education)
|
||||
# - addigy Addigy
|
||||
# path can also be set in the command call, and if file exists, it will be used.
|
||||
# Like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"'
|
||||
# (spaces have to be escaped).
|
||||
|
||||
|
||||
# App Store apps handling
|
||||
# IGNORE_APP_STORE_APPS=no
|
||||
# options:
|
||||
# - no If installed app is from App Store (which include VPP installed apps)
|
||||
# it will not be touched, no matter it's version (default)
|
||||
# - yes Replace App Store (and VPP) version of app and handle future
|
||||
# updates using Installomator, even if latest version.
|
||||
# Shouldn’t give any problems for the user in most cases.
|
||||
# Known bad example: Slack will loose all settings.
|
||||
|
||||
|
||||
# install behavior
|
||||
# INSTALL=""
|
||||
# options:
|
||||
# - When not set, software will only be installed
|
||||
# if it is newer/different in version
|
||||
# - force Install even if it’s the same version
|
||||
|
||||
|
||||
# Re-opening of closed app
|
||||
# REOPEN="yes"
|
||||
# options:
|
||||
# - yes App wil be reopened if it was closed
|
||||
# - no App not reopened
|
||||
|
||||
|
||||
########################
|
||||
# Often used labels:
|
||||
########################
|
||||
|
||||
# firefox
|
||||
# firefox_intl
|
||||
# brave
|
||||
# torbrowser
|
||||
# googlechrome
|
||||
# netnewswire
|
||||
|
||||
# adobereaderdc
|
||||
# textmate
|
||||
|
||||
# cyberduck
|
||||
# keka
|
||||
# theunarchiver
|
||||
|
||||
# vlc
|
||||
# handbrake
|
||||
|
||||
# inkscape
|
||||
|
||||
# signal
|
||||
# telegram
|
||||
# whatsapp
|
||||
|
||||
# hazel
|
||||
# devonthink
|
||||
|
||||
# teamviewerqs
|
||||
# zoom
|
||||
|
||||
# malwarebytes
|
||||
# githubdesktop
|
||||
# sublimetext
|
||||
# textmate
|
||||
# visualstudiocode
|
||||
|
||||
# microsoftskypeforbusiness
|
||||
# microsoftteams
|
||||
# microsoftyammer
|
||||
# microsoftedgeenterprisestable
|
||||
# microsoftedgeconsumerstable
|
||||
# microsoftsharepointplugin
|
||||
# microsoftdefenderatp
|
||||
|
||||
# googledrivefilestream
|
||||
|
||||
# cdef
|
||||
# desktoppr
|
||||
# supportapp
|
||||
# xink
|
||||
# wwdc
|
||||
43
MDM/Installomator update.sh
Executable file
43
MDM/Installomator update.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
# Updating Installomator
|
||||
# Usefull to push out after deployment if earlier version was deployed in DEP profile
|
||||
# Currently script uses valuesfromarguments as a label is not included before next release, so this can be used to install to version 0.7
|
||||
|
||||
what="installomator" # enter the software to install
|
||||
|
||||
# No sleeping
|
||||
/usr/bin/caffeinate -d -i -m -u &
|
||||
caffeinatepid=$!
|
||||
caffexit () {
|
||||
kill "$caffeinatepid"
|
||||
exit $1
|
||||
}
|
||||
|
||||
# Verify that Installomator has been installed
|
||||
destFile="/usr/local/Installomator/Installomator.sh"
|
||||
if [ ! -e "${destFile}" ]; then
|
||||
echo "Installomator not found here:"
|
||||
echo "${destFile}"
|
||||
echo "Exiting."
|
||||
caffexit 99
|
||||
fi
|
||||
|
||||
${destFile} valuesfromarguments\
|
||||
name=Installomator \
|
||||
type=pkg \
|
||||
packageID=com.scriptingosx.Installomator \
|
||||
downloadURL=https://github.com/Installomator/Installomator/releases/download/v0.7release/Installomator-0.7.0.pkg \
|
||||
appNewVersion=0.7 \
|
||||
expectedTeamID=JME5BW3F3R \
|
||||
BLOCKING_PROCESS_ACTION=ignore \
|
||||
NOTIFY=silent
|
||||
|
||||
# ${destFile} ${what} BLOCKING_PROCESS_ACTION=ignore NOTIFY=silent
|
||||
if [ $? != 0 ]; then
|
||||
# This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
|
||||
echo "Error installing ${what}. Exit code $?"
|
||||
caffexit $?
|
||||
fi
|
||||
|
||||
echo "[$(DATE)][LOG-END]"
|
||||
caffexit 0
|
||||
99
MDM/MDMAddigy CustomSoftware.sh
Executable file
99
MDM/MDMAddigy CustomSoftware.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/bin/zsh
|
||||
|
||||
# Specific settings in Addigy to configure Custom Software for installomator.
|
||||
# Addigy has 3 parts to fill out for this, Installation script, Condition, and Removal steps (see RemoveInstallomator.sh).
|
||||
|
||||
# Mark: Installation script
|
||||
# Just click “Add” to autogenerate the installer script line by clicking the “Add”-button next to the Installer PKG, replace with first line below
|
||||
/usr/sbin/installer -pkg "/Library/Addigy/ansible/packages/Installomator (0.7.0)/Installomator-0.7.0.pkg" -target /
|
||||
|
||||
# Installation using Installomator
|
||||
what="supportapp xink textmate microsoftedge wwdc keka vlc " # enter the software to installed separated with spaces
|
||||
|
||||
# To be used as a script sent out from a MDM.
|
||||
# Fill the variable "what" above with labels separated by space " ".
|
||||
# Script will loop through these labels and exit with number of errors.
|
||||
######################################################################
|
||||
|
||||
# No sleeping
|
||||
/usr/bin/caffeinate -d -i -m -u &
|
||||
caffeinatepid=$!
|
||||
caffexit () {
|
||||
kill "$caffeinatepid"
|
||||
exit $1
|
||||
}
|
||||
|
||||
# Count errors
|
||||
errorCount=0
|
||||
|
||||
# Verify that Installomator has been installed
|
||||
destFile="/usr/local/Installomator/Installomator.sh"
|
||||
if [ ! -e "${destFile}" ]; then
|
||||
echo "Installomator not found here:"
|
||||
echo "${destFile}"
|
||||
echo "Exiting."
|
||||
caffexit 99
|
||||
fi
|
||||
|
||||
for item in $what; do
|
||||
#echo $item
|
||||
${destFile} ${item} LOGO=addigy NOTIFY=silent BLOCKING_PROCESS_ACTION=quit_kill #INSTALL=force
|
||||
if [ $? != 0 ]; then
|
||||
# Error handling
|
||||
echo "[$(DATE)] Error installing ${item}. Exit code $?"
|
||||
let errorCount++
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Errors: $errorCount"
|
||||
echo "[$(DATE)][LOG-END]"
|
||||
|
||||
caffexit $errorCount
|
||||
|
||||
# Mark: Conditions
|
||||
# Install on success
|
||||
# Remember to fill out the correct “TARGET_VERSION” and “PKG_ID”, and click "Install on succes".
|
||||
PKG_ID="com.scriptingosx.Installomator"
|
||||
TARGET_VERSION="0.7.0"
|
||||
|
||||
vercomp () {
|
||||
if [[ $1 == $2 ]]; then
|
||||
return 0
|
||||
fi
|
||||
local IFS=.
|
||||
local i ver1=($1) ver2=($2)
|
||||
# fill empty fields in ver1 with zeros
|
||||
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
|
||||
ver1[i]=0
|
||||
done
|
||||
for ((i=0; i<${#ver1[@]}; i++)); do
|
||||
if [[ -z ${ver2[i]} ]]; then
|
||||
# fill empty fields in ver2 with zeros
|
||||
ver2[i]=0
|
||||
fi
|
||||
if ((10#${ver1[i]} > 10#${ver2[i]})); then
|
||||
return 1
|
||||
fi
|
||||
if ((10#${ver1[i]} < 10#${ver2[i]})); then
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
INSTALLED_VERSION="$(pkgutil --pkg-info $PKG_ID | grep -i "^version" | awk '{print $2}')"
|
||||
|
||||
echo "Current Version: ${INSTALLED_VERSION}"
|
||||
|
||||
vercomp ${TARGET_VERSION} ${INSTALLED_VERSION}
|
||||
COMP=$? # 0 means the same, 1 means TARGET is newer, 2 means INSTALLED is newer
|
||||
echo "COMPARISON: ${COMP}"
|
||||
|
||||
if [ "${COMP}" -eq 1 ]; then
|
||||
echo "Installed version is older than ${TARGET_VERSION}."
|
||||
exit 0
|
||||
else
|
||||
echo "Installed version is the same or newer than ${TARGET_VERSION}."
|
||||
exit 1
|
||||
fi
|
||||
72
MDM/MDMMosyle install.sh
Normal file
72
MDM/MDMMosyle install.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
PKG_ID="com.scriptingosx.Installomator"
|
||||
TARGET_VERSION="0.7.0"
|
||||
URLDOWNLOAD="%MosyleCDNFile:blah-blah-blah%"
|
||||
######################################################################
|
||||
# Installation using Installomator (enter the software to install separated with spaces in the "what"-variable)
|
||||
what="handbrake theunarchiver microsoftoffice365"
|
||||
# Covered by Mosyle Catalog: "brave firefox googlechrome microsoftedge microsoftteams signal sublimetext vlc webex zoom" among others
|
||||
######################################################################
|
||||
|
||||
## Mark: Code here
|
||||
|
||||
# No sleeping
|
||||
/usr/bin/caffeinate -d -i -m -u &
|
||||
caffeinatepid=$!
|
||||
caffexit () {
|
||||
kill "$caffeinatepid"
|
||||
exit $1
|
||||
}
|
||||
|
||||
# Mark: Condition for Installomator installation
|
||||
|
||||
INSTALLED_VERSION="$(pkgutil --pkg-info $PKG_ID 2>/dev/null | grep -i "^version" | awk '{print $2}')"
|
||||
|
||||
echo "Current Version: ${INSTALLED_VERSION}"
|
||||
|
||||
if [[ "$TARGET_VERSION" != "$INSTALLED_VERSION" ]]; then
|
||||
TMPDIR=$(mktemp -d )
|
||||
if ! cd "$TMPDIR"; then
|
||||
echo "error changing directory $TMPDIR"
|
||||
caffexit 98
|
||||
fi
|
||||
NAME=$TMPDIR/$(date +%s).pkg
|
||||
if ! curl -fsL "$URLDOWNLOAD" -o "$NAME"; then
|
||||
echo "error downloading $URLDOWNLOAD to $NAME."
|
||||
caffexit 97
|
||||
fi
|
||||
installer -pkg "$NAME" -target /
|
||||
rm -rf "$TMPDIR"
|
||||
else
|
||||
echo "Installomator version $INSTALLED_VERSION already installed!"
|
||||
fi
|
||||
|
||||
|
||||
# Mark: Start Installomator label(s) installation
|
||||
|
||||
# Count errors
|
||||
errorCount=0
|
||||
|
||||
# Verify that Installomator has been installed
|
||||
destFile="/usr/local/Installomator/Installomator.sh"
|
||||
if [ ! -e "${destFile}" ]; then
|
||||
echo "Installomator not found here:"
|
||||
echo "${destFile}"
|
||||
echo "Exiting."
|
||||
caffexit 99
|
||||
fi
|
||||
|
||||
for item in $what; do
|
||||
#echo $item
|
||||
${destFile} ${item} LOGO=mosyle NOTIFY=all BLOCKING_PROCESS_ACTION=tell_user #NOTIFY=silent BLOCKING_PROCESS_ACTION=quit_kill #INSTALL=force
|
||||
if [ $? != 0 ]; then
|
||||
# Error handling
|
||||
echo "[$(DATE)] Error installing ${item}. Exit code $?"
|
||||
let errorCount++
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Errors: $errorCount"
|
||||
echo "[$(DATE)][LOG-END]"
|
||||
|
||||
caffexit $errorCount
|
||||
41
MDM/Manual valuesfromarguments.sh
Executable file
41
MDM/Manual valuesfromarguments.sh
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
# Installation using Installomator
|
||||
# Example of installing software using valuesfromarguments to install a custom software
|
||||
|
||||
what="valuesfromarguments" # enter the software to install
|
||||
|
||||
# No sleeping
|
||||
/usr/bin/caffeinate -d -i -m -u &
|
||||
caffeinatepid=$!
|
||||
caffexit () {
|
||||
kill "$caffeinatepid"
|
||||
exit $1
|
||||
}
|
||||
|
||||
# Verify that Installomator has been installed
|
||||
destFile="/usr/local/Installomator/Installomator.sh"
|
||||
if [ ! -e "${destFile}" ]; then
|
||||
echo "Installomator not found here:"
|
||||
echo "${destFile}"
|
||||
echo "Exiting."
|
||||
caffexit 99
|
||||
fi
|
||||
|
||||
${destFile} valuesfromarguments \
|
||||
name=\"Zoho\ WorkDrive\" \
|
||||
type=dmg \
|
||||
downloadURL=https://files-accl.zohopublic.com/public/wdbin/download/46f971e4fc4a32b68ad5d7dade38a7d2 \
|
||||
appNewVersion=2.6.25 \
|
||||
expectedTeamID=TZ824L8Y37 \
|
||||
BLOCKING_PROCESS_ACTION=quit \
|
||||
NOTIFY=all
|
||||
|
||||
# ${destFile} ${what} BLOCKING_PROCESS_ACTION=ignore NOTIFY=silent
|
||||
if [ $? != 0 ]; then
|
||||
# This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
|
||||
echo "Error installing ${what}. Exit code $?"
|
||||
caffexit $?
|
||||
fi
|
||||
|
||||
echo "[$(DATE)][LOG-END]"
|
||||
caffexit 0
|
||||
13
MDM/RemoveInstallomator.sh
Normal file
13
MDM/RemoveInstallomator.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/zsh
|
||||
|
||||
# how to remove Installomator.
|
||||
|
||||
# Mark: This fork
|
||||
pkgutil --forget "com.scriptingosx.Installomator"
|
||||
rm /usr/local/Installomator/Installomator.sh
|
||||
rmdir /usr/local/Installomator
|
||||
|
||||
# Mark: Theile fork
|
||||
pkgutil --forget "dk.theilgaard.pkg.Installomator"
|
||||
rm /usr/local/bin/Installomator.sh
|
||||
rm /usr/local/bin/InstallomatorLabels.sh
|
||||
42
README.md
42
README.md
@@ -4,7 +4,7 @@ _The one installer script to rule them all._
|
||||
|
||||
   
|
||||
|
||||
This script is in the "we find it useful, it is working for us" stage.
|
||||
This script is in the “we find it useful, it is working for us” stage.
|
||||
|
||||
Your production and deployment environment will be different, please test thoroughly before rolling it out to your production.
|
||||
|
||||
@@ -12,11 +12,13 @@ I have put a lot of work into making it stable and safe, but I cannot - of cours
|
||||
|
||||
## Support and Contributing
|
||||
|
||||
__Please note, that if you are contributing to this project with new labels or other suggestions in PRs, please put your changes in the fragmented files, not the full `Installomator.sh` script. The full script is now a build of the fragments, and will be overwritten. See the REAMDME.md file in the `utils` directory for detailed instructions.__
|
||||
|
||||
Discussion, support and advice around Installomator happens in the `#installomator` channel in the [MacAdmins.org Slack](https://macadmins.org). Go there for support questions.
|
||||
|
||||
Do not create an issue just when you have a questions, but do file an issue or pull request for bugs or wrong behavior. When in doubt, ask in the above Slack channel.
|
||||
Do not create an issue just when you have a questions, but do file an issue or pull request (PR) for bugs or wrong behavior. When in doubt, ask in the above Slack channel.
|
||||
|
||||
If you have added a new label, then please file a pull request. (and Thank you!)
|
||||
Please see [CONTRIBUTING.md](https://github.com/Installomator/Installomator/blob/dev/CONTRIBUTING.md) for how to contribute.
|
||||
|
||||
## More reading
|
||||
|
||||
@@ -85,7 +87,7 @@ Installomator can work with the following common archive and installer types:
|
||||
- dmg: for the common 'drag app to /Applications' installation style
|
||||
- zip: the application is just compressed with zip or or tbz
|
||||
|
||||
When the download yields a pkg file, Installomator will run `installer` to install it on the current system.
|
||||
When the download yields a pkg file, Installomator will run `installer` to install it on the current system.
|
||||
|
||||
Applications in dmgs or zips will be copied to `/Applications` and their owner will be set to the current user, so the install works like a standard drag'n drop installation.
|
||||
|
||||
@@ -131,7 +133,9 @@ googlechrome)
|
||||
|
||||
When you know how to extract these pieces of information from the application and/or download, then you can add an application to Installomator.
|
||||
|
||||
The script buildCaseStatement.sh can help with the label creation.
|
||||
The script `buildCaseStatement.sh` can help with the label creation.
|
||||
|
||||
Please note: Labels should be named in small caps, numbers 0-9, “-”, and “_”. No other characters allowed.
|
||||
|
||||
### Not specific to a management system
|
||||
|
||||
@@ -227,11 +231,12 @@ There are eight options:
|
||||
- `prompt_user`: (default) show a user dialog for each blocking process found abort after three attempts to quit (only if user accepts to quit the apps, otherwise the update is cancelled).
|
||||
- `prompt_user_then_kill`: show a user dialog for each blocking process found, attempt to quit two times, kill the process finally.
|
||||
- `prompt_user_loop`: Like prompt-user, but clicking "Not Now", will just wait an hour, and then it will ask again.
|
||||
WARNING! It might block the MDM agent on the machine, as the scripts gets stuct in waiting until the hour has passed, possibly blocking for other management actions in this time.
|
||||
- `tell_user`: User will be showed a notification about the important update, but user is only allowed to quit and continue, and then we ask the app to quit.
|
||||
- `tell_user_then_kill`: Show dialog 2 times, and if the quitting fails, the blocking processes will be killed.
|
||||
- `kill`: kill process without prompting or giving the user a chance to save.
|
||||
|
||||
If any process was closed, Installomator will try to open the app again, after the update process is done.
|
||||
If any process was closed, Installomator will try to open the app again, after the update process is done.
|
||||
|
||||
### Notification
|
||||
|
||||
@@ -252,6 +257,12 @@ The `LOGO` variable is used for the icon shown in dialog boxes. There are these
|
||||
- `addigy`: Addigy
|
||||
Path can also be set in the command call, and if file exists, it will be used, like `LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"` (spaces are escaped).
|
||||
|
||||
### App Store apps handling
|
||||
Default is `IGNORE_APP_STORE_APPS=no`
|
||||
__options:__
|
||||
- `no`: If installed app is from App Store (which include VPP installed apps) it will not be touched, no matter it's version (default)
|
||||
- `yes`: Replace App Store (and VPP) version of app and handle future updates using Installomator, even if latest version. Shouldn’t give any problems for the user in most cases. Known bad example: Slack will loose all settings.
|
||||
|
||||
### Install behavior (force installation)
|
||||
|
||||
Since we now make a version checking, and only installs the software if the version is different, an `INSTALL` variable can be used to force the installation:
|
||||
@@ -339,7 +350,7 @@ Depending on the application or pkg there are a few more variables you can or ne
|
||||
dmg or zip:
|
||||
Applications will be copied to this directory.
|
||||
Default value is '`/Applications`' for dmg and zip installations.
|
||||
pkg:
|
||||
pkg:
|
||||
`targetDir` is used as the install-location. Default is '`/`'.
|
||||
|
||||
- `blockingProcesses`: (optional)
|
||||
@@ -361,10 +372,23 @@ Depending on the application or pkg there are a few more variables you can or ne
|
||||
`$updateTool $updateArguments`
|
||||
Will be run instead of of downloading and installing a complete new version.
|
||||
Use this when the `updateTool` does differential and optimized downloads.
|
||||
e.g. `msupdate` (see microsoft installations)
|
||||
e.g. `msupdate` (see various Microsoft installations).
|
||||
|
||||
- `updateToolRunAsCurrentUser`:
|
||||
When this variable is set (any value), `$updateTool` will be run as the current user. Default is unset and
|
||||
When this variable is set (any value), `$updateTool` will be run as the current user. Default is unset and
|
||||
|
||||
- `CLIInstaller`:
|
||||
- `CLIArguments`:
|
||||
If the downloaded dmg is actually an installer that we can call using CLI, we can use these two variables for what to call.
|
||||
We need to define `name` for the installed app (to be version checked), as well as `installerTool` for the installer app (if named differently that `name`. Installomator will add the path to the folder/disk image with the binary, and it will be called like this:
|
||||
`$CLIInstaller $CLIArguments`
|
||||
For most installations `CLIInstaller` should contain the `installerTool` for the CLI call (if it’s the same).
|
||||
We can support a whole range of other software titles by implementing this.
|
||||
See label adobecreativeclouddesktop.
|
||||
|
||||
- `installerTool`:
|
||||
Introduced as part of `CLIInstaller`. If the installer in the DMG or ZIP is named differently than the installed app, then this variable can be used to name the installer that should be located after mounting/expanding the downloaded archive.
|
||||
See label adobecreativeclouddesktop
|
||||
|
||||
### Configuration from Arguments
|
||||
|
||||
|
||||
@@ -36,9 +36,20 @@ done
|
||||
# lowercase the label
|
||||
label=${label:l}
|
||||
|
||||
# separate check for 'version' in order to print plain version number without any other information
|
||||
if [[ $label == "version" ]]; then
|
||||
echo "$VERSION"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
printlog "################## Start Installomator v. $VERSION"
|
||||
printlog "################## $label"
|
||||
|
||||
# Check for DEBUG mode
|
||||
if [[ $DEBUG -gt 0 ]]; then
|
||||
printlog "DEBUG mode $DEBUG enabled."
|
||||
fi
|
||||
|
||||
# How we get version number from app
|
||||
# (alternative is "CFBundleVersion", that can be used in labels)
|
||||
versionKey="CFBundleShortVersionString"
|
||||
@@ -49,11 +60,6 @@ currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print
|
||||
|
||||
# MARK: labels in case statement
|
||||
case $label in
|
||||
version)
|
||||
# print the script VERSION
|
||||
printlog "$VERSION"
|
||||
exit 0
|
||||
;;
|
||||
longversion)
|
||||
# print the script version
|
||||
printlog "Installomater: version $VERSION ($VERSIONDATE)"
|
||||
|
||||
7
fragments/broken/mightymike.sh
Normal file
7
fragments/broken/mightymike.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
mightymike)
|
||||
name="Nanosaur"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit jorio MightyMike)
|
||||
appNewVersion=$(versionFromGit jorio MightyMike)
|
||||
expectedTeamID="RVNL7XC27G"
|
||||
;;
|
||||
7
fragments/broken/nanosaur.sh
Normal file
7
fragments/broken/nanosaur.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
nanosaur)
|
||||
name="Nanosaur"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit jorio Nanosaur)
|
||||
appNewVersion=$(versionFromGit jorio Nanosaur)
|
||||
expectedTeamID="RVNL7XC27G"
|
||||
;;
|
||||
@@ -1,10 +0,0 @@
|
||||
|
||||
cdef)
|
||||
# cdef currently not signed
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="cdef"
|
||||
type="pkg"
|
||||
downloadURL=$(downloadURLFromGit Shufflepuck cdef)
|
||||
appNewVersion=$(versionFromGit Shufflepuck cdef)
|
||||
#expectedTeamID="EM3ER8T33A"
|
||||
;;
|
||||
8
fragments/disabled/parallels.sh
Normal file
8
fragments/disabled/parallels.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
parallels)
|
||||
# This downloads an installer app, so not really useful here
|
||||
name="Parallels Desktop"
|
||||
type="dmg"
|
||||
downloadURL="https://parallels.com/directdownload/pd15/"
|
||||
appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i ^location | tail -1 | cut -d "/" -f6)
|
||||
expectedTeamID="4C6364ACXT"
|
||||
;;
|
||||
@@ -148,6 +148,7 @@ getAppVersion() {
|
||||
appversion="$(pkgutil --pkg-info-plist ${packageID} 2>/dev/null | grep -A 1 pkg-version | tail -1 | sed -E 's/.*>([0-9.]*)<.*/\1/g')"
|
||||
if [[ $appversion != "" ]]; then
|
||||
printlog "found packageID $packageID installed, version $appversion"
|
||||
updateDetected="YES"
|
||||
return
|
||||
else
|
||||
printlog "No version found using packageID $packageID"
|
||||
@@ -162,7 +163,11 @@ getAppVersion() {
|
||||
else
|
||||
applist=$(mdfind "kind:application $appName" -0 )
|
||||
fi
|
||||
printlog "App(s) found: ${applist}"
|
||||
if [[ -z applist ]]; then
|
||||
printlog "No previous app found"
|
||||
else
|
||||
printlog "App(s) found: ${applist}"
|
||||
fi
|
||||
|
||||
appPathArray=( ${(0)applist} )
|
||||
|
||||
@@ -173,6 +178,17 @@ getAppVersion() {
|
||||
#appversion=$(mdls -name kMDItemVersion -raw $installedAppPath )
|
||||
appversion=$(defaults read $installedAppPath/Contents/Info.plist $versionKey) #Not dependant on Spotlight indexing
|
||||
printlog "found app at $installedAppPath, version $appversion"
|
||||
updateDetected="YES"
|
||||
# Is current app from App Store
|
||||
if [[ -d "$installedAppPath"/Contents/_MASReceipt ]];then
|
||||
printlog "Installed $appName is from App Store, use “IGNORE_APP_STORE_APPS=yes” to replace."
|
||||
if [[ $IGNORE_APP_STORE_APPS == "yes" ]]; then
|
||||
printlog "Replacing App Store apps, no matter the version"
|
||||
appversion=0
|
||||
else
|
||||
cleanupAndExit 1 "App previously installed from App Store, and we respect that"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
printlog "could not determine location of $appName"
|
||||
fi
|
||||
@@ -332,10 +348,10 @@ installAppWithPath() { # $1: path to app to install in $targetDir
|
||||
# versioncheck
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
appNewVersion=$(defaults read $appPath/Contents/Info.plist $versionKey)
|
||||
if [[ $appversion == $appNewVersion ]]; then
|
||||
if [[ -n $appNewVersion && $appversion == $appNewVersion ]]; then
|
||||
printlog "Downloaded version of $name is $appNewVersion, same as installed."
|
||||
if [[ $INSTALL != "force" ]]; then
|
||||
message="$name, version $appNewVersion, is the latest version."
|
||||
message="$name, version $appNewVersion, is the latest version."
|
||||
if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
|
||||
printlog "notifying"
|
||||
displaynotification "$message" "No update for $name!"
|
||||
@@ -359,26 +375,44 @@ installAppWithPath() { # $1: path to app to install in $targetDir
|
||||
# not running as root
|
||||
cleanupAndExit 6 "not running as root, exiting"
|
||||
fi
|
||||
|
||||
# Test if variable CLIInstaller is set
|
||||
if [[ -z $CLIInstaller ]]; then
|
||||
|
||||
# remove existing application
|
||||
if [ -e "$targetDir/$appName" ]; then
|
||||
printlog "Removing existing $targetDir/$appName"
|
||||
rm -Rf "$targetDir/$appName"
|
||||
fi
|
||||
|
||||
# remove existing application
|
||||
if [ -e "$targetDir/$appName" ]; then
|
||||
printlog "Removing existing $targetDir/$appName"
|
||||
rm -Rf "$targetDir/$appName"
|
||||
fi
|
||||
# copy app to /Applications
|
||||
printlog "Copy $appPath to $targetDir"
|
||||
if ! ditto "$appPath" "$targetDir/$appName"; then
|
||||
cleanupAndExit 7 "Error while copying"
|
||||
fi
|
||||
|
||||
# copy app to /Applications
|
||||
printlog "Copy $appPath to $targetDir"
|
||||
if ! ditto "$appPath" "$targetDir/$appName"; then
|
||||
cleanupAndExit 7 "Error while copying"
|
||||
fi
|
||||
# set ownership to current user
|
||||
if [ "$currentUser" != "loginwindow" ]; then
|
||||
printlog "Changing owner to $currentUser"
|
||||
chown -R "$currentUser" "$targetDir/$appName"
|
||||
else
|
||||
printlog "No user logged in, not changing user"
|
||||
fi
|
||||
|
||||
elif [[ ! -z $CLIInstaller ]]; then
|
||||
mountname=$(dirname $appPath)
|
||||
printlog "CLIInstaller exists, running installer command $mountname/$CLIInstaller $CLIArguments" #INFO
|
||||
|
||||
# set ownership to current user
|
||||
if [ "$currentUser" != "loginwindow" ]; then
|
||||
printlog "Changing owner to $currentUser"
|
||||
chown -R "$currentUser" "$targetDir/$appName"
|
||||
else
|
||||
printlog "No user logged in, not changing user"
|
||||
CLIoutput=$("$mountname/$CLIInstaller" "${CLIArguments[@]}" 2>&1)
|
||||
CLIstatus=$(echo $?)
|
||||
logoutput="$CLIoutput" # dedupliatelogs "$CLIoutput"
|
||||
|
||||
if [ $CLIstatus -ne 0 ] ; then
|
||||
cleanupAndExit 3 "Error installing $mountname/$CLIInstaller $CLIArguments error:\n$logoutput" #ERROR
|
||||
else
|
||||
printlog "Succesfully ran $mountname/$CLIInstaller $CLIArguments"
|
||||
fi
|
||||
printlog "Debugging enabled, update tool output was:\n$logoutput" #DEBUG
|
||||
fi
|
||||
|
||||
}
|
||||
@@ -401,7 +435,6 @@ mountDMG() {
|
||||
|
||||
installFromDMG() {
|
||||
mountDMG
|
||||
|
||||
installAppWithPath "$dmgmount/$appName"
|
||||
}
|
||||
|
||||
@@ -440,7 +473,7 @@ installFromPKG() {
|
||||
if [[ $appversion == $appNewVersion ]]; then
|
||||
printlog "Downloaded version of $name is the same as installed."
|
||||
if [[ $INSTALL != "force" ]]; then
|
||||
message="$name, version $appNewVersion, is the latest version."
|
||||
message="$name, version $appNewVersion, is the latest version."
|
||||
if [[ $currentUser != "loginwindow" && $NOTIFY == "all" ]]; then
|
||||
printlog "notifying"
|
||||
displaynotification "$message" "No update for $name!"
|
||||
@@ -588,7 +621,7 @@ runUpdateTool() {
|
||||
}
|
||||
|
||||
finishing() {
|
||||
printlog "Finishing…"
|
||||
printlog "Finishing..."
|
||||
sleep 10 # wait a moment to let spotlight catch up
|
||||
getAppVersion
|
||||
|
||||
@@ -602,7 +635,11 @@ finishing() {
|
||||
|
||||
if [[ $currentUser != "loginwindow" && ( $NOTIFY == "success" || $NOTIFY == "all" ) ]]; then
|
||||
printlog "notifying"
|
||||
displaynotification "$message" "$name update/installation complete!"
|
||||
if [[ $updateDetected == "YES" ]]; then
|
||||
displaynotification "$message" "$name update complete!"
|
||||
else
|
||||
displaynotification "$message" "$name installation complete!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ NOTIFY=success
|
||||
|
||||
|
||||
# behavior when blocking processes are found
|
||||
BLOCKING_PROCESS_ACTION=prompt_user
|
||||
BLOCKING_PROCESS_ACTION=tell_user
|
||||
# options:
|
||||
# - ignore continue even when blocking processes are found
|
||||
# - quit app will be told to quit nicely, if running
|
||||
@@ -51,6 +51,9 @@ BLOCKING_PROCESS_ACTION=prompt_user
|
||||
# - prompt_user_loop
|
||||
# Like prompt-user, but clicking "Not Now", will just wait an hour,
|
||||
# and then it will ask again.
|
||||
# WARNING! It might block the MDM agent on the machine, as
|
||||
# the scripts gets stuct in waiting until the hour has passed,
|
||||
# possibly blocking for other management actions in this time.
|
||||
# - tell_user User will be showed a notification about the important update,
|
||||
# but user is only allowed to quit and continue, and then we
|
||||
# ask the app to quit.
|
||||
@@ -68,7 +71,20 @@ LOGO=appstore
|
||||
# - mosyleb Mosyle Business
|
||||
# - mosylem Mosyle Manager (Education)
|
||||
# - addigy Addigy
|
||||
# path can also be set in the command call, and if file exists, it will be used, like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"' (spaces are escaped).
|
||||
# path can also be set in the command call, and if file exists, it will be used.
|
||||
# Like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"'
|
||||
# (spaces have to be escaped).
|
||||
|
||||
|
||||
# App Store apps handling
|
||||
IGNORE_APP_STORE_APPS=no
|
||||
# options:
|
||||
# - no If installed app is from App Store (which include VPP installed apps)
|
||||
# it will not be touched, no matter it's version (default)
|
||||
# - yes Replace App Store (and VPP) version of app and handle future
|
||||
# updates using Installomator, even if latest version.
|
||||
# Shouldn’t give any problems for the user in most cases.
|
||||
# Known bad example: Slack will loose all settings.
|
||||
|
||||
|
||||
# install behavior
|
||||
@@ -148,6 +164,8 @@ REOPEN="yes"
|
||||
# - archiveName: (optional)
|
||||
# The name of the downloaded file.
|
||||
# When not given the archiveName is derived from the $name.
|
||||
# Note: This has to be defined BEFORE calling downloadURLFromGit or
|
||||
# versionFromGit functions in the label.
|
||||
#
|
||||
# - appName: (optional)
|
||||
# File name of the app bundle in the dmg to verify and copy (include .app).
|
||||
@@ -180,8 +198,27 @@ REOPEN="yes"
|
||||
# $updateTool $updateArguments
|
||||
# Will be run instead of of downloading and installing a complete new version.
|
||||
# Use this when the updateTool does differential and optimized downloads.
|
||||
# e.g. msupdate
|
||||
# e.g. msupdate on various Microsoft labels
|
||||
#
|
||||
# - updateToolRunAsCurrentUser:
|
||||
# When this variable is set (any value), $updateTool will be run as the current user.
|
||||
#
|
||||
# - CLIInstaller:
|
||||
# - CLIArguments:
|
||||
# If the downloaded dmg is actually an installer that we can call using CLI, we can
|
||||
# use these two variables for what to call.
|
||||
# We need to define `name` for the installed app (to be version checked), as well as
|
||||
# `installerTool` for the installer app (if named differently that `name`. Installomator
|
||||
# will add the path to the folder/disk image with the binary, and it will be called like this:
|
||||
`$CLIInstaller $CLIArguments`
|
||||
# For most installations `CLIInstaller` should contain the `installerTool` for the CLI call
|
||||
# (if it’s the same).
|
||||
# We can support a whole range of other software titles by implementing this.
|
||||
# See label adobecreativeclouddesktop
|
||||
#
|
||||
# - installerTool:
|
||||
# Introduced as part of `CLIInstaller`. If the installer in the DMG or ZIP is named
|
||||
# differently than the installed app, then this variable can be used to name the
|
||||
# installer that should be located after mounting/expanding the downloaded archive.
|
||||
# See label adobecreativeclouddesktop
|
||||
#
|
||||
|
||||
17
fragments/labels/adobecreativeclouddesktop.sh
Normal file
17
fragments/labels/adobecreativeclouddesktop.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
adobecreativeclouddesktop)
|
||||
name="Adobe Creative Cloud"
|
||||
#appName="Install.app"
|
||||
type="dmg"
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
installerTool="Install.app"
|
||||
CLIInstaller="Install.app/Contents/MacOS/Install"
|
||||
CLIArguments=(--mode=silent)
|
||||
expectedTeamID="JQ525L2MZD"
|
||||
Company="Adobe"
|
||||
;;
|
||||
@@ -3,6 +3,6 @@ airserver)
|
||||
name="AirServer"
|
||||
type="dmg"
|
||||
downloadURL="https://www.airserver.com/download/mac/latest"
|
||||
#appNewVersion=$() # Cannot find version history or release notes on home page
|
||||
appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i "location" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g')
|
||||
expectedTeamID="6C755KS5W3"
|
||||
;;
|
||||
|
||||
7
fragments/labels/airtame.sh
Normal file
7
fragments/labels/airtame.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
airtame)
|
||||
name="Airtame"
|
||||
type="dmg"
|
||||
downloadURL="$(curl -fs https://airtame.com/download/ | grep -i platform=mac | head -1 | grep -o -i -E "https.*" | cut -d '"' -f1)"
|
||||
appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^location | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g')"
|
||||
expectedTeamID="4TPSP88HN2"
|
||||
;;
|
||||
7
fragments/labels/alephone.sh
Normal file
7
fragments/labels/alephone.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
alephone)
|
||||
name="Aleph One"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit Aleph-One-Marathon alephone)
|
||||
appNewVersion=$(versionFromGit Aleph-One-Marathon alephone)
|
||||
expectedTeamID="E8K89CXZE7"
|
||||
;;
|
||||
@@ -2,5 +2,6 @@ apparency)
|
||||
name="Apparency"
|
||||
type="dmg"
|
||||
downloadURL="https://www.mothersruin.com/software/downloads/Apparency.dmg"
|
||||
appNewVersion=$(curl -fs https://mothersruin.com/software/Apparency/data/ApparencyVersionInfo.plist | grep -A1 CFBundleShortVersionString | tail -1 | sed -E 's/.*>([0-9.]*)<.*/\1/g')
|
||||
expectedTeamID="936EB786NH"
|
||||
;;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
applenyfonts)
|
||||
name="Apple New York Font Collection"
|
||||
type="pkgInDmg"
|
||||
downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY-Font.dmg"
|
||||
downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY.dmg"
|
||||
packageID="com.apple.pkg.NYFonts"
|
||||
expectedTeamID="Development Update"
|
||||
;;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
applesfcompact)
|
||||
name="San Francisco Compact"
|
||||
type="pkgInDmg"
|
||||
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Compact.dmg"
|
||||
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg"
|
||||
packageID="com.apple.pkg.SanFranciscoCompact"
|
||||
expectedTeamID="Development Update"
|
||||
;;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
applesfpro)
|
||||
name="San Francisco Pro"
|
||||
type="pkgInDmg"
|
||||
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Pro.dmg"
|
||||
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"
|
||||
packageID="com.apple.pkg.SanFranciscoPro"
|
||||
expectedTeamID="Development Update"
|
||||
;;
|
||||
|
||||
8
fragments/labels/applesfsymbols.sh
Normal file
8
fragments/labels/applesfsymbols.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
applesfsymbols|\
|
||||
sfsymbols)
|
||||
name="SF Symbols"
|
||||
type="pkgInDmg"
|
||||
downloadURL=$( curl -fs "https://developer.apple.com/sf-symbols/" | grep -oe "https.*\.dmg" | head -1 )
|
||||
appNewVersion=$( echo "$downloadURL" | head -1 | sed -E 's/.*SF-Symbols-([0-9.]*)\..*/\1/g')
|
||||
expectedTeamID="Software Update"
|
||||
;;
|
||||
@@ -1,8 +1,7 @@
|
||||
audacity)
|
||||
# credit: Gabe Marchan (gabemarchan.com - @darklink87)
|
||||
name="Audacity"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit audacity audacity)
|
||||
appNewVersion=$(versionFromGit audacity audacity)
|
||||
expectedTeamID="T3N4JQ7YY6"
|
||||
expectedTeamID="AWEYX923UX"
|
||||
;;
|
||||
|
||||
7
fragments/labels/authydesktop.sh
Normal file
7
fragments/labels/authydesktop.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
authydesktop)
|
||||
name="Authy Desktop"
|
||||
type="dmg"
|
||||
downloadURL="https://electron.authy.com/download?channel=stable&arch=x64&platform=darwin&version=latest&product=authy"
|
||||
appNewVersion="$(curl -sfL --output /dev/null -r 0-0 "${downloadURL}" --remote-header-name --remote-name -w "%{url_effective}\n" | grep -o -E '([a-zA-Z0-9\_.%-]*)\.(dmg|pkg|zip|tbz)$' | sed -E 's/.*-([0-9.]*)\.dmg/\1/g')"
|
||||
expectedTeamID="9EVH78F4V4"
|
||||
;;
|
||||
@@ -1,7 +1,7 @@
|
||||
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 .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)
|
||||
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
|
||||
expectedTeamID="68UA947AUU"
|
||||
;;
|
||||
|
||||
@@ -2,7 +2,7 @@ bluejeans)
|
||||
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://.*BlueJeansInstaller.*arm.*.pkg" )
|
||||
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
|
||||
|
||||
6
fragments/labels/boxsync.sh
Normal file
6
fragments/labels/boxsync.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
boxsync)
|
||||
name="Box Sync"
|
||||
type="dmg"
|
||||
downloadURL="https://e3.boxcdn.net/box-installers/sync/Sync+4+External/Box%20Sync%20Installer.dmg"
|
||||
expectedTeamID="M683GB7CPW"
|
||||
;;
|
||||
@@ -1,6 +1,6 @@
|
||||
boxtools)
|
||||
name="Box Tools"
|
||||
type="pkg"
|
||||
downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg"
|
||||
expectedTeamID="M683GB7CPW"
|
||||
;;
|
||||
name="Box Tools"
|
||||
type="pkg"
|
||||
downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg"
|
||||
expectedTeamID="M683GB7CPW"
|
||||
;;
|
||||
|
||||
7
fragments/labels/bugdom.sh
Normal file
7
fragments/labels/bugdom.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
bugdom)
|
||||
name="Bugdom"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit jorio Bugdom)
|
||||
appNewVersion=$(versionFromGit jorio Bugdom)
|
||||
expectedTeamID="RVNL7XC27G"
|
||||
;;
|
||||
@@ -4,5 +4,9 @@ calibre)
|
||||
type="dmg"
|
||||
downloadURL="https://calibre-ebook.com/dist/osx"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
|
||||
#Maybe change to GitHub for this title. Looks like 5.28.0 release is the first to also release a binary, so maybe see what the next release will be to decide if we should switch.
|
||||
#downloadURL=$(downloadURLFromGit kovidgoyal calibre )
|
||||
#appNewVersion=$(versionFromGit kovidgoyal calibre )
|
||||
#archiveName="OS X dmg"
|
||||
expectedTeamID="NTY7FVCEKP"
|
||||
;;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
camostudio)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="Camo Studio"
|
||||
type="zip"
|
||||
downloadURL="https://reincubate.com/res/labs/camo/camo-macos-latest.zip"
|
||||
appNewVersion=$(curl -s -L https://reincubate.com/support/camo/release-notes/ | grep -m2 "has-m-t-0" | head -1 | cut -d ">" -f2 | cut -d " " -f1)
|
||||
#appNewVersion=$(curl -s -L https://reincubate.com/support/camo/release-notes/ | grep -m2 "has-m-t-0" | head -1 | cut -d ">" -f2 | cut -d " " -f1)
|
||||
appNewVersion=$( curl -fs "https://uds.reincubate.com/release-notes/camo/" | head -1 | cut -d "," -f3 | grep -o -e "[0-9.]*" )
|
||||
# Camo Studio will ask for admin permissions to install som plug-ins. that has not been handled.
|
||||
expectedTeamID="Q248YREB53"
|
||||
;;
|
||||
|
||||
11
fragments/labels/canva.sh
Normal file
11
fragments/labels/canva.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
canva)
|
||||
name="Canva"
|
||||
type="dmg"
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
downloadURL=$(curl -fsLI -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" -H "accept-encoding: gzip, deflate, br" -H "accept-language: en-US,en;q=0.9" -H "Referrer Policy: strict-origin-when-cross-origin" -H "upgrade-insecure-requests: 1" -H "sec-fetch-dest: document" -H "sec-gpc: 1" -H "sec-fetch-user: ?1" -H "sec-fetch-mode: navigate" -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" "https://www.canva.com/download/mac/arm/canva-desktop/" | grep -i "^location" | cut -d " " -f2 | tr -d '\r')
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
downloadURL=$(curl -fsLI -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" -H "accept-encoding: gzip, deflate, br" -H "Referrer Policy: strict-origin-when-cross-origin" -H "upgrade-insecure-requests: 1" -H "sec-fetch-dest: document" -H "sec-gpc: 1" -H "sec-fetch-user: ?1" -H "accept-language: en-US,en;q=0.9" -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" -H "sec-fetch-mode: navigate" "https://www.canva.com/download/mac/intel/canva-desktop/" | grep -i "^location" | cut -d " " -f2 | tr -d '\r')
|
||||
fi
|
||||
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
|
||||
expectedTeamID="5HD2ARTBFS"
|
||||
;;
|
||||
6
fragments/labels/chatwork.sh
Normal file
6
fragments/labels/chatwork.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
chatwork)
|
||||
name="Chatwork"
|
||||
type="dmg"
|
||||
downloadURL="https://desktop-app.chatwork.com/installer/Chatwork.dmg"
|
||||
expectedTeamID="H34A3H2Y54"
|
||||
;;
|
||||
7
fragments/labels/cisdem-documentreader.sh
Normal file
7
fragments/labels/cisdem-documentreader.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
cisdem-documentreader)
|
||||
name="cisdem-documentreader"
|
||||
type="dmg"
|
||||
downloadURL="https://download.cisdem.com/cisdem-documentreader.dmg"
|
||||
expectedTeamID="5HGV8EX6BQ"
|
||||
appName="Cisdem Document Reader.app"
|
||||
;;
|
||||
@@ -1,8 +1,7 @@
|
||||
clevershare2)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="Clevershare"
|
||||
type="dmg"
|
||||
downloadURL=$(curl -fs https://archive.clevertouch.com/clevershare2g | grep -i "_Mac" | tr '"' "\n" | grep "^http.*dmg")
|
||||
downloadURL=$(curl -fs https://www.clevertouch.com/eu/clevershare2g | grep -i -o -E "https.*Mac.*\.dmg")
|
||||
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z-]*_Mac\.([0-9.]*)\.[0-9]*\.dmg$/\1/g' )
|
||||
expectedTeamID="P76M9BE8DQ"
|
||||
;;
|
||||
|
||||
7
fragments/labels/closeio.sh
Normal file
7
fragments/labels/closeio.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
closeio)
|
||||
name="Close.io"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit closeio closeio-desktop-releases)
|
||||
appNewVersion=$(versionFromGit closeio closeio-desktop-releases)
|
||||
expectedTeamID="WTNQ6773UC"
|
||||
;;
|
||||
7
fragments/labels/cloudya.sh
Normal file
7
fragments/labels/cloudya.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
cloudya)
|
||||
name="Cloudya"
|
||||
type="appInDmgInZip"
|
||||
downloadURL="$(curl -fs https://www.nfon.com/de/service/downloads | grep -i -E -o "https://cdn.cloudya.com/Cloudya-[.0-9]+-mac.zip")"
|
||||
appNewVersion="$(curl -fs https://www.nfon.com/de/service/downloads | grep -i -E -o "Cloudya Desktop App MAC [0-9.]*" | sed 's/^.*\ \([^ ]\{0,7\}\)$/\1/g')"
|
||||
expectedTeamID="X26F74J8TH"
|
||||
;;
|
||||
@@ -1,8 +1,8 @@
|
||||
colourcontrastanalyser)
|
||||
name="Colour Contrast Analyser (CCA)"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe)
|
||||
appNewVersion=$(versionFromGit ThePacielloGroup CCAe)
|
||||
expectedTeamID="34RS4UC3M6"
|
||||
blockingProcesses=( NONE )
|
||||
;;
|
||||
name="Colour Contrast Analyser (CCA)"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe)
|
||||
appNewVersion=$(versionFromGit ThePacielloGroup CCAe)
|
||||
expectedTeamID="34RS4UC3M6"
|
||||
blockingProcesses=( NONE )
|
||||
;;
|
||||
|
||||
8
fragments/labels/craftmanager.sh
Normal file
8
fragments/labels/craftmanager.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
craftmanager)
|
||||
name="CraftManager"
|
||||
type="zip"
|
||||
#downloadURL="https://craft-assets.invisionapp.com/CraftManager/production/CraftManager.zip"
|
||||
downloadURL="$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)"
|
||||
appNewVersion="$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)"
|
||||
expectedTeamID="VRXQSNCL5W"
|
||||
;;
|
||||
8
fragments/labels/dialog.sh
Normal file
8
fragments/labels/dialog.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
dialog)
|
||||
name="Dialog"
|
||||
type="pkg"
|
||||
packageID="au.csiro.dialogcli"
|
||||
downloadURL="$(downloadURLFromGit bartreardon Dialog)"
|
||||
appNewVersion="$(versionFromGit bartreardon Dialog)"
|
||||
expectedTeamID="PWA5E9TQ59"
|
||||
;;
|
||||
9
fragments/labels/eshareosx.sh
Normal file
9
fragments/labels/eshareosx.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
eshareosx)
|
||||
name="e-Share"
|
||||
type="pkg"
|
||||
packageID="com.ncryptedcloud.e-Share.pkg"
|
||||
downloadURL=https://www.ncryptedcloud.com/static/downloads/osx/$(curl -fs https://www.ncryptedcloud.com/static/downloads/osx/ | grep -o -i "href.*\".*\"" | cut -d '"' -f2)
|
||||
versionKey="CFBundleVersion"
|
||||
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z\-]*_([0-9.]*)\.pkg/\1/g' )
|
||||
expectedTeamID="X9MBQS7DDC"
|
||||
;;
|
||||
7
fragments/labels/exifrenamer.sh
Normal file
7
fragments/labels/exifrenamer.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
exifrenamer)
|
||||
name="ExifRenamer"
|
||||
type="dmg"
|
||||
downloadURL="https://www.qdev.de/"$(curl -fs "https://www.qdev.de/download.php?file=ExifRenamer.dmg" | grep -o -e "URL=[a-zA-Z/]*.dmg" | cut -d "=" -f2)
|
||||
appNewVersion=$(curl -fs "https://www.qdev.de/?location=downloads" | grep -A1 -m1 "ExifRenamer" | tail -1 | cut -d ">" -f2 | cut -d " " -f1)
|
||||
expectedTeamID="MLF9FE35AM"
|
||||
;;
|
||||
7
fragments/labels/fastscripts.sh
Normal file
7
fragments/labels/fastscripts.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
fastscripts)
|
||||
name="FastScripts"
|
||||
type="zip"
|
||||
downloadURL=$( curl -fs "https://redsweater.com/fastscripts/appcast3.php" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2 )
|
||||
appNewVersion=$( curl -fs "https://redsweater.com/fastscripts/appcast3.php" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2 )
|
||||
expectedTeamID="493CVA9A35"
|
||||
;;
|
||||
@@ -1,6 +1,11 @@
|
||||
figma)
|
||||
name="Figma"
|
||||
type="zip"
|
||||
downloadURL="https://desktop.figma.com/mac/Figma.zip"
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
downloadURL="https://desktop.figma.com/mac-arm/Figma.zip"
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
downloadURL="https://desktop.figma.com/mac/Figma.zip"
|
||||
fi
|
||||
appNewVersion="$(curl -fsL https://desktop.figma.com/mac/RELEASE.json | awk -F '"' '{ print $8 }')"
|
||||
expectedTeamID="T8RA8NE3B7"
|
||||
;;
|
||||
|
||||
7
fragments/labels/findanyfile.sh
Normal file
7
fragments/labels/findanyfile.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
findanyfile)
|
||||
name="Find Any File"
|
||||
type="zip"
|
||||
downloadURL=$(curl -fs "https://findanyfile.app/appcast2.php" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2)
|
||||
appNewVersion=$(curl -fs "https://findanyfile.app/appcast2.php" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2)
|
||||
expectedTeamID="25856V4B4X"
|
||||
;;
|
||||
@@ -2,7 +2,7 @@ firefox)
|
||||
name="Firefox"
|
||||
type="dmg"
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
|
||||
appNewVersion=$(/usr/bin/curl https://www.mozilla.org/en-US/firefox/releases/ --silent | /usr/bin/grep '<html' | /usr/bin/awk -F\" '{ print $8 }') # Credit: William Smith (@meck)
|
||||
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
;;
|
||||
|
||||
@@ -2,7 +2,7 @@ firefox_da)
|
||||
name="Firefox"
|
||||
type="dmg"
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=da"
|
||||
appNewVersion=$(/usr/bin/curl https://www.mozilla.org/en-US/firefox/releases/ --silent | /usr/bin/grep '<html' | /usr/bin/awk -F\" '{ print $8 }') # Credit: William Smith (@meck)
|
||||
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
;;
|
||||
|
||||
@@ -17,7 +17,7 @@ firefox_intl)
|
||||
printlog "Download not found for that language. Using en-US"
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
|
||||
fi
|
||||
appNewVersion=$(/usr/bin/curl -sl https://www.mozilla.org/en-US/firefox/releases/ | /usr/bin/grep '<html' | /usr/bin/awk -F\" '{ print $8 }') # Credit: William Smith (@meck)
|
||||
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
;;
|
||||
|
||||
8
fragments/labels/flowjo.sh
Normal file
8
fragments/labels/flowjo.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
flowjo)
|
||||
name="FlowJo-OSX64-10.8.0"
|
||||
type="dmg"
|
||||
downloadURL="$(curl -fs "https://www.flowjo.com/solutions/flowjo/downloads" | grep -i -o -E "https.*\.dmg")"
|
||||
appNewVersion=$(echo "${downloadURL}" | tr "-" "\n" | grep dmg | sed -E 's/([0-9.]*)\.dmg/\1/g')
|
||||
expectedTeamID="C79HU5AD9V"
|
||||
appName="FlowJo.app"
|
||||
;;
|
||||
@@ -4,11 +4,11 @@ googlechrome)
|
||||
if [[ $(arch) != "i386" ]]; then
|
||||
printlog "Architecture: arm64 (not i386)"
|
||||
downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg"
|
||||
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}') # Credit: William Smith (@meck)
|
||||
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
|
||||
else
|
||||
printlog "Architecture: i386"
|
||||
downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg"
|
||||
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac,stable/{print $3; exit}') # Credit: William Smith (@meck)
|
||||
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac,stable/{print $3; exit}')
|
||||
fi
|
||||
expectedTeamID="EQHXZ8M8AV"
|
||||
;;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
handbrake)
|
||||
name="HandBrake"
|
||||
type="dmg"
|
||||
downloadURL=$(curl --silent --fail "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" \
|
||||
| awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ { print \$4 }")
|
||||
appNewVersion=$(curl -sf "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" | awk -F '"' "/tag_name/ { print \$4 }")
|
||||
downloadURL=$(downloadURLFromGit HandBrake HandBrake )
|
||||
appNewVersion=$(versionFromGit HandBrake HandBrake )
|
||||
expectedTeamID="5X9DE89KYV"
|
||||
;;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
imazingprofileeditor)
|
||||
# Credit: Bilal Habib @Pro4TLZZZ
|
||||
# Credit: Bilal Habib @Pro4TLZZ
|
||||
name="iMazing Profile Editor"
|
||||
type="dmg"
|
||||
downloadURL="https://downloads.imazing.com/mac/iMazing-Profile-Editor/iMazingProfileEditorMac.dmg"
|
||||
|
||||
@@ -2,7 +2,8 @@ inkscape)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="Inkscape"
|
||||
type="dmg"
|
||||
downloadURL="https://inkscape.org$(curl -fs https://inkscape.org$(curl -fsJL https://inkscape.org/release/ | grep "/release/" | grep en | head -n 1 | cut -d '"' -f 6)mac-os-x/1010-1015/dl/ | grep "click here" | cut -d '"' -f 2)"
|
||||
#appNewVersion=$(curl -fsJL https://inkscape.org/release/ | grep "<h2>Inkscape" | cut -d '>' -f 3 | cut -d '<' -f 1 | sed 's/[^0-9.]*//g') # Can't figure out where exact new version is found. Currently returns 1.0, but version is "1.0.0 (4035a4f)"
|
||||
downloadURL="https://inkscape.org$(curl -fs https://inkscape.org$(curl -fsJL https://inkscape.org/release/ | grep "/release/" | grep en | head -n 1 | cut -d '"' -f 6)mac-os-x/dmg/dl/ | grep "click here" | cut -d '"' -f 2)"
|
||||
appCustomVersion() { /Applications/Inkscape.app/Contents/MacOS/inkscape --version | cut -d " " -f2 }
|
||||
appNewVersion=$(curl -fsJL https://inkscape.org/release/ | grep "<title>" | grep -o -e "[0-9.]*")
|
||||
expectedTeamID="SW3D6BB6A6"
|
||||
;;
|
||||
|
||||
7
fragments/labels/insomnia.sh
Normal file
7
fragments/labels/insomnia.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
insomnia)
|
||||
name="insomnia"
|
||||
type="dmg"
|
||||
downloadURL=$(downloadURLFromGit kong insomnia)
|
||||
appNewVersion=$(versionFromGit kong insomnia)
|
||||
expectedTeamID="FX44YY62GV"
|
||||
;;
|
||||
10
fragments/labels/installomator.sh
Normal file
10
fragments/labels/installomator.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
installomator|\
|
||||
installomator_theile)
|
||||
name="Installomator"
|
||||
type="pkg"
|
||||
packageID="com.scriptingosx.Installomator"
|
||||
downloadURL=$(downloadURLFromGit Installomator Installomator )
|
||||
appNewVersion=$(versionFromGit Installomator Installomator )
|
||||
expectedTeamID="JME5BW3F3R"
|
||||
blockingProcesses=( NONE )
|
||||
;;
|
||||
@@ -1,11 +0,0 @@
|
||||
installomator_theile)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="Installomator"
|
||||
type="pkg"
|
||||
packageID="dk.theilgaard.pkg.Installomator"
|
||||
downloadURL=$(downloadURLFromGit theile Installomator )
|
||||
appNewVersion=$(versionFromGit theile Installomator )
|
||||
#appCustomVersion(){/usr/local/bin/Installomator.sh version | tail -1 | awk '{print $4}'}
|
||||
expectedTeamID="FXW6QXBFW5"
|
||||
blockingProcesses=( NONE )
|
||||
;;
|
||||
@@ -1,7 +1,8 @@
|
||||
jabradirect)
|
||||
name="Jabra Direct"
|
||||
type="dmg"
|
||||
type="pkgInDmg"
|
||||
packageID="com.jabra.directonline"
|
||||
downloadURL="https://jabraxpressonlineprdstor.blob.core.windows.net/jdo/JabraDirectSetup.dmg"
|
||||
appNewVersion=$(curl -fs https://www.jabra.com/Support/release-notes/release-note-jabra-direct | grep -oe "Release version:.*[0-9.]*<" | head -1 | cut -d ">" -f2 | cut -d "<" -f1 | sed 's/ //g')
|
||||
expectedTeamID="55LV32M29R"
|
||||
appNewVersion=$(curl -fs https://www.jabra.com/Support/release-notes/release-note-jabra-direct | grep -o "Jabra Direct macOS:*.*<" | head -1 | cut -d ":" -f2 | cut -d " " -f2 | cut -d "<" -f1)
|
||||
;;
|
||||
|
||||
6
fragments/labels/jamfconnectconfiguration.sh
Normal file
6
fragments/labels/jamfconnectconfiguration.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
jamfconnectconfiguration)
|
||||
name="Jamf Connect Configuration"
|
||||
type="dmg"
|
||||
downloadURL="https://files.jamfconnect.com/JamfConnect.dmg"
|
||||
expectedTeamID="483DWKW443"
|
||||
;;
|
||||
12
fragments/labels/jetbrainsclion.sh
Normal file
12
fragments/labels/jetbrainsclion.sh
Normal file
@@ -0,0 +1,12 @@
|
||||
jetbrainsclion)
|
||||
name="CLion"
|
||||
type="dmg"
|
||||
jetbrainscode="CL"
|
||||
jetbrainsdistribution="mac"
|
||||
if [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
@@ -1,12 +1,13 @@
|
||||
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"
|
||||
;;
|
||||
name="DataGrip"
|
||||
type="dmg"
|
||||
jetbrainscode="DG"
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
jetbrainsdistribution="mac"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
jetbrainsintellijidea)
|
||||
# credit: Gabe Marchan (gabemarchan.com - @darklink87)
|
||||
name="IntelliJ IDEA"
|
||||
type="dmg"
|
||||
downloadURL="https://download.jetbrains.com/product?code=II&latest&distribution=mac"
|
||||
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=II&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
|
||||
jetbrainscode="II"
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
jetbrainsdistribution="mac"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
|
||||
@@ -2,7 +2,13 @@ jetbrainsintellijideace|\
|
||||
intellijideace)
|
||||
name="IntelliJ IDEA CE"
|
||||
type="dmg"
|
||||
downloadURL="https://download.jetbrains.com/product?code=IIC&latest&distribution=mac"
|
||||
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=IIC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
|
||||
jetbrainscode="IIC"
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
jetbrainsdistribution="mac"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
jetbrainsphpstorm)
|
||||
# credit: Casey Jensen (@cajenson01 on MacAdmins Slack)Appended by Skylar Damiano @catdad on MacAdmins Slack
|
||||
name="JetBrains PHPStorm"
|
||||
name="PHPStorm"
|
||||
type="dmg"
|
||||
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PS&latest=true&type=release" | grep -o "mac*.*.dmg" | cut -d '"' -f5)
|
||||
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PS&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
|
||||
jetbrainscode="PS"
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
jetbrainsdistribution="mac"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
jetbrainspycharm)
|
||||
# This is the Pro version of PyCharm.
|
||||
# Do not confuse with PyCharm CE.
|
||||
# This is the Pro version of PyCharm. Do not confuse with PyCharm CE.
|
||||
name="PyCharm"
|
||||
type="dmg"
|
||||
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCP&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=mac"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=macM1"
|
||||
jetbrainscode="PCP"
|
||||
jetbrainsdistribution="mac"
|
||||
if [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
|
||||
@@ -2,11 +2,12 @@ jetbrainspycharmce|\
|
||||
pycharmce)
|
||||
name="PyCharm CE"
|
||||
type="dmg"
|
||||
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=mac"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=macM1"
|
||||
jetbrainscode="PCC"
|
||||
jetbrainsdistribution="mac"
|
||||
if [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
|
||||
13
fragments/labels/jetbrainsrubymine.sh
Normal file
13
fragments/labels/jetbrainsrubymine.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
jetbrainsrubymine)
|
||||
name="RubyMine"
|
||||
type="dmg"
|
||||
jetbrainscode="RM"
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
jetbrainsdistribution="mac"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
12
fragments/labels/jetbrainstoolbox.sh
Normal file
12
fragments/labels/jetbrainstoolbox.sh
Normal file
@@ -0,0 +1,12 @@
|
||||
jetbrainstoolbox)
|
||||
name="JetBrains Toolbox"
|
||||
type="dmg"
|
||||
jetbrainscode="TBA"
|
||||
jetbrainsdistribution="mac"
|
||||
if [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
12
fragments/labels/jetbrainswebstorm.sh
Normal file
12
fragments/labels/jetbrainswebstorm.sh
Normal file
@@ -0,0 +1,12 @@
|
||||
jetbrainswebstorm)
|
||||
name="Webstorm"
|
||||
type="dmg"
|
||||
jetbrainscode="WS"
|
||||
jetbrainsdistribution="mac"
|
||||
if [[ $(arch) == arm64 ]]; then
|
||||
jetbrainsdistribution="macM1"
|
||||
fi
|
||||
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
|
||||
expectedTeamID="2ZEFAR8TH3"
|
||||
;;
|
||||
6
fragments/labels/keybase.sh
Normal file
6
fragments/labels/keybase.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
keybase)
|
||||
name="Keybase"
|
||||
type="dmg"
|
||||
downloadURL=$(curl -s https://keybase.io/docs/the_app/install_macos | grep data-target | cut -d '"' -f2)
|
||||
expectedTeamID="99229SGT5K"
|
||||
;;
|
||||
@@ -1,8 +1,6 @@
|
||||
lexarrecoverytool)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="Lexar Recovery Tool"
|
||||
type="appInDmgInZip"
|
||||
downloadURL="https://www.lexar.com$( curl -fs "https://www.lexar.com/support/downloads/" | grep -i "mac" | grep -i "recovery" | head -1 | tr '"' '\n' | grep -i ".zip" )"
|
||||
#appNewVersion=""
|
||||
downloadURL="https://www.lexar.com/wp-content/uploads/product_images/Lexar-Recovery-Tool-Mac.zip"
|
||||
expectedTeamID="Y8HM6WR2DV"
|
||||
;;
|
||||
|
||||
@@ -3,7 +3,7 @@ logitechoptions)
|
||||
name="Logitech Options"
|
||||
type="pkgInZip"
|
||||
downloadURL=$(curl -fs -L https://www.logitech.com/en-us/product/options | grep -m 1 -o "https.*zip" | sed 's/\"//' | awk '{print $1}')
|
||||
appNewVersion=$(curl -fs -L https://www.logitech.com/en-us/product/options | grep -m 1 -o "https.*zip" | sed 's/\"//' | awk '{print $1}' | sed -E 's/.*_([0-9\.]*)[-\.].*/\1/' )
|
||||
#appNewVersion=$(curl -fs -L https://www.logitech.com/en-us/product/options | grep -m 1 -o "https.*zip" | sed 's/\"//' | awk '{print $1}' | sed -E 's/.*_([0-9\.]*)[-\.].*/\1/' )
|
||||
pkgName="LogiMgr Installer ${appNewVersion}.app/Contents/Resources/LogiMgr.pkg"
|
||||
expectedTeamID="QED4VVPZWA"
|
||||
;;
|
||||
|
||||
13
fragments/labels/logseq.sh
Normal file
13
fragments/labels/logseq.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
logseq)
|
||||
name="Logseq"
|
||||
type="dmg"
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
archiveName="darwin-arm64-[0-9.]*.dmg"
|
||||
downloadURL=$(downloadURLFromGit logseq logseq)
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
archiveName="darwin-x64-[0-9.]*.dmg"
|
||||
downloadURL=$(downloadURLFromGit logseq logseq)
|
||||
fi
|
||||
appNewVersion=$(versionFromGit logseq logseq)
|
||||
expectedTeamID="3K44EUN829"
|
||||
;;
|
||||
@@ -1,7 +1,9 @@
|
||||
lulu)
|
||||
name="LuLu"
|
||||
type="dmg"
|
||||
downloadURL=$( curl -fs "https://objective-see.com/products/lulu.html" | grep https | grep "$type" | head -1 | tr '"' "\n" | grep "^http" )
|
||||
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' )
|
||||
#downloadURL=$( curl -fs "https://objective-see.com/products/lulu.html" | grep https | grep "$type" | head -1 | tr '"' "\n" | grep "^http" )
|
||||
#appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' )
|
||||
downloadURL=$(downloadURLFromGit objective-see LuLu)
|
||||
appNewVersion=$(versionFromGit objective-see LuLu)
|
||||
expectedTeamID="VBG97UB4TA"
|
||||
;;
|
||||
|
||||
7
fragments/labels/maccyapp.sh
Normal file
7
fragments/labels/maccyapp.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
maccyapp)
|
||||
name="Maccy"
|
||||
type="zip"
|
||||
downloadURL="$(downloadURLFromGit p0deje Maccy)"
|
||||
appNewVersion="$(versionFromGit p0deje Maccy)"
|
||||
expectedTeamID="MN3X4648SC"
|
||||
;;
|
||||
23
fragments/labels/macports.sh
Normal file
23
fragments/labels/macports.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
macports)
|
||||
name="MacPorts"
|
||||
type="pkg"
|
||||
#buildVersion=$(uname -r | cut -d '.' -f 1)
|
||||
case $(uname -r | cut -d '.' -f 1) in
|
||||
21)
|
||||
archiveName="Monterey.pkg"
|
||||
;;
|
||||
20)
|
||||
archiveName="BigSur.pkg"
|
||||
;;
|
||||
19)
|
||||
archiveName="Catalina.pkg"
|
||||
;;
|
||||
*)
|
||||
cleanupAndExit 1 "macOS 10.14 or earlier not supported by Installomator."
|
||||
;;
|
||||
esac
|
||||
downloadURL=$(downloadURLFromGit macports macports-base)
|
||||
appNewVersion=$(versionFromGit macports macports-base)
|
||||
appCustomVersion(){ if [ -x /opt/local/bin/port ]; then /opt/local/bin/port version | awk '{print $2}'; else "0"; fi }
|
||||
expectedTeamID="QTA3A3B7F3"
|
||||
;;
|
||||
8
fragments/labels/marathon.sh
Normal file
8
fragments/labels/marathon.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
marathon)
|
||||
name="Marathon"
|
||||
type="dmg"
|
||||
archiveName="Marathon-[0-9.]*-Mac.dmg"
|
||||
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
|
||||
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
|
||||
expectedTeamID="E8K89CXZE7"
|
||||
;;
|
||||
8
fragments/labels/marathon2.sh
Normal file
8
fragments/labels/marathon2.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
marathon2)
|
||||
name="Marathon 2"
|
||||
type="dmg"
|
||||
archiveName="Marathon2-[0-9.]*-Mac.dmg"
|
||||
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
|
||||
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
|
||||
expectedTeamID="E8K89CXZE7"
|
||||
;;
|
||||
8
fragments/labels/marathoninfinity.sh
Normal file
8
fragments/labels/marathoninfinity.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
marathoninfinity)
|
||||
name="Marathon Infinity"
|
||||
type="dmg"
|
||||
archiveName="MarathonInfinity-[0-9.]*-Mac.dmg"
|
||||
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
|
||||
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
|
||||
expectedTeamID="E8K89CXZE7"
|
||||
;;
|
||||
@@ -1,12 +1,9 @@
|
||||
mattermost)
|
||||
name="Mattermost"
|
||||
type="dmg"
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
archiveName="mac.dmg"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
archiveName="mac-m1.dmg"
|
||||
fi
|
||||
archiveName="mac-universal.dmg"
|
||||
downloadURL=$(downloadURLFromGit mattermost desktop)
|
||||
appNewVersion=$(versionFromGit mattermost desktop )
|
||||
expectedTeamID="UQ8HT4Q2XM"
|
||||
Mattermost Helper (Renderer).app app.asar
|
||||
;;
|
||||
|
||||
8
fragments/labels/microsoftazurestorageexplorer.sh
Normal file
8
fragments/labels/microsoftazurestorageexplorer.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
microsoftazurestorageexplorer)
|
||||
name="Microsoft Azure Storage Explorer"
|
||||
type="zip"
|
||||
downloadURL=$(downloadURLFromGit microsoft AzureStorageExplorer )
|
||||
appNewVersion=$(versionFromGit microsoft AzureStorageExplorer )
|
||||
expectedTeamID="UBF8T346G9"
|
||||
archiveName="Mac_StorageExplorer.zip"
|
||||
;;
|
||||
@@ -5,6 +5,10 @@ microsoftcompanyportal)
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.intunecompanyportal.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/CompanyPortal_.*pkg" | cut -d "_" -f 2 | cut -d "-" -f 1)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps IMCP01 )
|
||||
;;
|
||||
|
||||
@@ -5,6 +5,10 @@ microsoftdefenderatp)
|
||||
appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.defender.standalone"]/version' 2>/dev/null | sed -E 's/<version>([0-9.]*) .*/\1/')
|
||||
# No version number in download url
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps WDAV00 )
|
||||
;;
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
microsoftedge|\
|
||||
microsoftedgeconsumerstable)
|
||||
microsoftedgeconsumerstable|\
|
||||
microsoftedgeenterprisestable)
|
||||
name="Microsoft Edge"
|
||||
type="pkg"
|
||||
downloadURL="https://go.microsoft.com/fwlink/?linkid=2069148"
|
||||
downloadURL="https://go.microsoft.com/fwlink/?linkid=2093504"
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.edge"]/cfbundleversion' 2>/dev/null | sed -E 's/<cfbundleversion>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/MicrosoftEdge.*pkg" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g')
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps EDGE01 )
|
||||
;;
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
microsoftedgeenterprisestable)
|
||||
name="Microsoft Edge"
|
||||
type="pkg"
|
||||
downloadURL="https://go.microsoft.com/fwlink/?linkid=2093438"
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.edge"]/version' 2>/dev/null | sed -E 's/<version>([0-9.]*) .*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/MicrosoftEdge.*pkg" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g')
|
||||
expectedTeamID="UBF8T346G9"
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps EDGE01 )
|
||||
;;
|
||||
@@ -5,6 +5,10 @@ microsoftexcel)
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.excel.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps XCEL2019 )
|
||||
;;
|
||||
|
||||
@@ -7,6 +7,10 @@ microsoftoffice365)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
# using MS PowerPoint as the 'stand-in' for the entire suite
|
||||
#appName="Microsoft PowerPoint.app"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
blockingProcesses=( "Microsoft AutoUpdate" "Microsoft Word" "Microsoft PowerPoint" "Microsoft Excel" "Microsoft OneNote" "Microsoft Outlook" "OneDrive" )
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install )
|
||||
|
||||
@@ -2,9 +2,14 @@ microsoftofficebusinesspro)
|
||||
name="MicrosoftOfficeBusinessPro"
|
||||
type="pkg"
|
||||
downloadURL="https://go.microsoft.com/fwlink/?linkid=2009112"
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
# using MS PowerPoint as the 'stand-in' for the entire suite
|
||||
appName="Microsoft PowerPoint.app"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
blockingProcesses=( "Microsoft AutoUpdate" "Microsoft Word" "Microsoft PowerPoint" "Microsoft Excel" "Microsoft OneNote" "Microsoft Outlook" "OneDrive" "Teams")
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install )
|
||||
|
||||
@@ -5,6 +5,10 @@ microsoftonedrive)
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.onedrive.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | cut -d "/" -f 6 | cut -d "." -f 1-3)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps ONDR18 )
|
||||
;;
|
||||
|
||||
@@ -5,6 +5,10 @@ microsoftonenote)
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.onenote.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps ONMC2019 )
|
||||
;;
|
||||
|
||||
@@ -5,6 +5,10 @@ microsoftoutlook)
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.outlook.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps OPIM2019 )
|
||||
;;
|
||||
|
||||
@@ -5,6 +5,10 @@ microsoftpowerpoint)
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.powerpoint.standalone.365"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3 | cut -d "." -f 1-2)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps PPT32019 )
|
||||
;;
|
||||
|
||||
@@ -5,6 +5,10 @@ microsoftremotedesktop)
|
||||
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.remotedesktop.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/')
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_Remote_Desktop.*pkg" | cut -d "_" -f 4)
|
||||
expectedTeamID="UBF8T346G9"
|
||||
if [[ -x "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" && $INSTALL != "force" && $DEBUG -eq 0 ]]; then
|
||||
printlog "Running msupdate --list"
|
||||
"/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" --list
|
||||
fi
|
||||
updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
|
||||
updateToolArguments=( --install --apps MSRD10 )
|
||||
;;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user