422 Commits

Author SHA1 Message Date
Armin Briegel
b333528379 Merge pull request #744 from jaredsiegel/patch-2
Update README.md
2022-11-18 14:25:58 +01:00
Armin Briegel
89dfe63606 updated version 2022-11-18 13:49:28 +01:00
Armin Briegel
88cd4114ae updated for release 2022-11-18 13:41:38 +01:00
Armin Briegel
b1dc94ad1d fixed files not ending in newline 2022-11-18 13:29:39 +01:00
Armin Briegel
0b5495ffbf new label: ibmnotifier 2022-11-18 13:14:10 +01:00
Armin Briegel
1fae99b322 new label: lucidlink 2022-11-18 13:13:26 +01:00
Armin Briegel
c8677eddf5 new label: adobereaderdc 2022-11-18 13:12:20 +01:00
Armin Briegel
40bc37c2f6 new label: logitechoptionsplus 2022-11-18 13:11:14 +01:00
Armin Briegel
b9f8d569b6 new label: subethaedit 2022-11-18 13:10:03 +01:00
Armin Briegel
a618c63b50 new label: sublimemerge 2022-11-18 13:09:15 +01:00
Armin Briegel
9aef18b89d new label: googleadseditor 2022-11-18 13:08:01 +01:00
Armin Briegel
0a8eeaf0f6 new label: ipvisionconnect 2022-11-18 13:04:53 +01:00
Armin Briegel
f0b7e579e3 new label: venturablocker 2022-11-18 13:03:06 +01:00
Armin Briegel
e066a7c3bf new label: vysor 2022-11-18 13:02:10 +01:00
Armin Briegel
7c45573a0e new label: projectplace 2022-11-18 13:00:00 +01:00
Armin Briegel
c26cfa24ba new label: mactex 2022-11-18 12:49:03 +01:00
Armin Briegel
87b671f0e5 new label: tunnelblick 2022-11-18 11:23:38 +01:00
Armin Briegel
2b5ce2f90e Merge branch 'pr/581' 2022-11-18 11:20:25 +01:00
Armin Briegel
fc33d2aaff better error message 2022-11-18 11:20:17 +01:00
Søren Theilgaard
bc4a612e15 Merge pull request #738 from Theile/MDM-scripts-logging-changes
Mdm scripts logging changes
2022-11-17 15:38:25 +01:00
Adam Codega
b7d67e6967 Merge pull request #750 from KMTMark/openvpnconnectv3-fix
Openvpnconnectv3 fix
2022-11-15 14:34:05 -05:00
Theile
8c853ddd30 GitHub API call is now primary 2022-11-15 11:22:28 +01:00
macmangr
fa26867583 Changed download link
Changed download link to grab the latest version
2022-11-12 17:46:21 +01:00
Mark Skrzypczyk
dbcdea3a72 add new line at EOF 2022-11-01 14:59:44 +00:00
Mark Skrzypczyk
68d389ab7f Update to include pkg name for each arch type 2022-11-01 14:58:43 +00:00
Theile
8dbabec280 Create ipvisionconnect.sh 2022-11-01 12:33:11 +01:00
Theile
98f0fb1a77 Many fewer icon logs. 2022-10-25 20:57:11 +02:00
jaredsiegel
d795598a22 Update README.md
typo correction
2022-10-25 11:21:16 -07:00
Theile
afc906161a Minor change in NOTIFY setting, that was missed 2022-10-25 10:48:52 +02:00
Theile
a8a1082d34 Final log-fixes 2022-10-24 13:10:15 +02:00
Theile
dfc9950a31 Update App browser-security Auto-install.sh 2022-10-24 12:39:04 +02:00
Theile
e22a7754bd Improved logging
Overall purpose was to improve the logging in the scripts. But the handling of macOS version and Installomator version in order to utilize swiftDialog has been improved, too.
2022-10-24 12:38:46 +02:00
Theile
2362e8a9d0 Improved logging 2022-10-21 14:01:59 +02:00
Theile
a7224fcbea Check to see if dialog CLI is also there 2022-10-21 13:07:19 +02:00
Theile
2a0385d30d Check to see if Dialog CLI is also there 2022-10-21 13:05:55 +02:00
Theile
03177d4e9d Get Installomator.log from client 2022-10-21 10:39:22 +02:00
Theile
8b19773a7f Correcting logging 2022-10-21 10:38:58 +02:00
Theile
9ef19139d2 Improved logging 2022-10-21 09:50:26 +02:00
Theile
c4fbcd6f3a Update googleadseditor.sh 2022-10-21 09:37:55 +02:00
Theile
6ee318f655 Create sublimemerge.sh 2022-10-13 14:50:46 +02:00
Theile
b0bc3c3c81 Create subethaedit.sh 2022-10-13 14:29:53 +02:00
Theile
f75d789322 appNewVersion fixed! 2022-10-12 10:11:04 +02:00
Theile
94a1d2fc32 Merge branch 'main' of https://github.com/Theile/Installomator 2022-10-12 08:43:53 +02:00
Theile
97f8b9ad26 Revert "Too many label names"
This reverts commit 651a5ce067.
2022-10-12 08:43:46 +02:00
Theile
b5a51c3cbf Update lucidlink.sh
`name` is now the name of the app. App has perfect values in it's version, so no need for `packageID`. Since `name` matches the name of the app, `blockingProcesses` comes for free.
2022-10-12 08:37:34 +02:00
Søren Theilgaard
719fe6e925 Merge branch 'Installomator:main' into main 2022-10-11 20:41:34 +02:00
Theile
651a5ce067 Too many label names
`adobereaderdc` is now only that, as another label is `adobereaderdc-install`.
2022-10-11 20:40:36 +02:00
Iñaky Martinez
b1df345814 Updated name
Updated name :)
2022-10-11 14:23:09 +02:00
Iñaky Martinez
a626375906 Update lucid.sh 2022-10-11 13:07:25 +02:00
Iñaky Martinez
5d968b0816 Update lucid.sh 2022-10-11 10:30:39 +02:00
Iñaky Martinez
69c959c923 Create lucid.sh 2022-10-11 09:54:23 +02:00
Pro4TLZZ
e88e2a56ea Add fragments/labels/logitechoptionsplus.sh
Add label for Logitech Options+
2022-10-07 10:06:36 +01:00
Armin Briegel
95901cfa6b Merge pull request #717 from dan-snelson/main
Omit Label name when used with switftDialog
2022-10-06 10:24:06 -07:00
Dan K. Snelson
7dabe54f18 Omit ' - ' when used with switftDialog 2022-10-06 11:17:03 -06:00
Theile
ac874a9f28 IBM Notifier
IBM for some reason is adding too much to the “tag” on Github, so they have “Version 2.9.1 Build 96” for the current latest version. That ends up being read as 2.9.196, and not only 2.9.1 that the app version is.

I upload this, so we have it ready, but not sure if `appNewVersion` should stay or be commented out.
2022-10-06 15:28:59 +02:00
Theile
3c8a4ff067 Create venturablocker.sh
```
2022-10-04 20:54:54 : INFO  : venturablocker : setting variable from argument DEBUG=2
2022-10-04 20:54:54 : REQ   : venturablocker : ################## Start Installomator v. 10.0beta3, date 2022-10-04
2022-10-04 20:54:54 : INFO  : venturablocker : ################## Version: 10.0beta3
2022-10-04 20:54:54 : INFO  : venturablocker : ################## Date: 2022-10-04
2022-10-04 20:54:54 : INFO  : venturablocker : ################## venturablocker
2022-10-04 20:54:54 : DEBUG : venturablocker : DEBUG mode 2 enabled.
2022-10-04 20:54:56 : DEBUG : venturablocker : name=venturablocker
2022-10-04 20:54:56 : DEBUG : venturablocker : appName=
2022-10-04 20:54:56 : DEBUG : venturablocker : type=pkg
2022-10-04 20:54:56 : DEBUG : venturablocker : archiveName=
2022-10-04 20:54:56 : DEBUG : venturablocker : downloadURL=https://github.com/Theile/venturablocker/releases/download/v20221004/venturablocker-20221004.pkg
2022-10-04 20:54:56 : DEBUG : venturablocker : curlOptions=
2022-10-04 20:54:56 : DEBUG : venturablocker : appNewVersion=20221004
2022-10-04 20:54:56 : DEBUG : venturablocker : appCustomVersion function: Not defined
2022-10-04 20:54:56 : DEBUG : venturablocker : versionKey=CFBundleShortVersionString
2022-10-04 20:54:56 : DEBUG : venturablocker : packageID=dk.envo-it.venturablocker
2022-10-04 20:54:56 : DEBUG : venturablocker : pkgName=
2022-10-04 20:54:56 : DEBUG : venturablocker : choiceChangesXML=
2022-10-04 20:54:56 : DEBUG : venturablocker : expectedTeamID=FXW6QXBFW5
2022-10-04 20:54:56 : DEBUG : venturablocker : blockingProcesses=
2022-10-04 20:54:56 : DEBUG : venturablocker : installerTool=
2022-10-04 20:54:56 : DEBUG : venturablocker : CLIInstaller=
2022-10-04 20:54:56 : DEBUG : venturablocker : CLIArguments=
2022-10-04 20:54:56 : DEBUG : venturablocker : updateTool=
2022-10-04 20:54:56 : DEBUG : venturablocker : updateToolArguments=
2022-10-04 20:54:56 : DEBUG : venturablocker : updateToolRunAsCurrentUser=
2022-10-04 20:54:56 : INFO  : venturablocker : BLOCKING_PROCESS_ACTION=tell_user
2022-10-04 20:54:56 : INFO  : venturablocker : NOTIFY=success
2022-10-04 20:54:56 : INFO  : venturablocker : LOGGING=DEBUG
2022-10-04 20:54:56 : INFO  : venturablocker : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-10-04 20:54:56 : INFO  : venturablocker : Label type: pkg
2022-10-04 20:54:56 : INFO  : venturablocker : archiveName: venturablocker.pkg
2022-10-04 20:54:56 : INFO  : venturablocker : no blocking processes defined, using venturablocker as default
2022-10-04 20:54:56 : DEBUG : venturablocker : Changing directory to /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.nLLDwJfl
2022-10-04 20:54:56 : INFO  : venturablocker : No version found using packageID dk.envo-it.venturablocker
2022-10-04 20:54:56 : INFO  : venturablocker : name: venturablocker, appName: venturablocker.app
2022-10-04 20:54:56.273 mdfind[91898:6894403] [UserQueryParser] Loading keywords and predicates for locale "en_US"
2022-10-04 20:54:56.274 mdfind[91898:6894403] [UserQueryParser] Loading keywords and predicates for locale "en"
2022-10-04 20:54:56.323 mdfind[91898:6894403] Couldn't determine the mapping between prefab keywords and predicates.
2022-10-04 20:54:56 : WARN  : venturablocker : No previous app found
2022-10-04 20:54:56 : WARN  : venturablocker : could not find venturablocker.app
2022-10-04 20:54:56 : INFO  : venturablocker : appversion:
2022-10-04 20:54:56 : INFO  : venturablocker : Latest version of venturablocker is 20221004
2022-10-04 20:54:56 : REQ   : venturablocker : Downloading https://github.com/Theile/venturablocker/releases/download/v20221004/venturablocker-20221004.pkg to venturablocker.pkg
2022-10-04 20:54:56 : DEBUG : venturablocker : No Dialog connection, just download
2022-10-04 20:54:57 : DEBUG : venturablocker : File list: -rw-r--r--  1 root  wheel    44K Oct  4 20:54 venturablocker.pkg
2022-10-04 20:54:57 : DEBUG : venturablocker : File type: venturablocker.pkg: xar archive compressed TOC: 4475, SHA-1 checksum
2022-10-04 20:54:57 : DEBUG : venturablocker : curl output was:
*   Trying 140.82.121.3:443...
* Connected to github.com (140.82.121.3) port 443 (#0)
…
* Connection #1 to host objects.githubusercontent.com left intact

2022-10-04 20:54:57 : REQ   : venturablocker : no more blocking processes, continue with update
2022-10-04 20:54:57 : REQ   : venturablocker : Installing venturablocker
2022-10-04 20:54:57 : INFO  : venturablocker : Verifying: venturablocker.pkg
2022-10-04 20:54:57 : DEBUG : venturablocker : File list: -rw-r--r--  1 root  wheel    44K Oct  4 20:54 venturablocker.pkg
2022-10-04 20:54:57 : DEBUG : venturablocker : File type: venturablocker.pkg: xar archive compressed TOC: 4475, SHA-1 checksum
2022-10-04 20:54:57 : DEBUG : venturablocker : spctlOut is venturablocker.pkg: accepted
2022-10-04 20:54:57 : DEBUG : venturablocker : source=Notarized Developer ID
2022-10-04 20:54:57 : DEBUG : venturablocker : origin=Developer ID Installer: ENVO IT AS (FXW6QXBFW5)
2022-10-04 20:54:57 : INFO  : venturablocker : Team ID: FXW6QXBFW5 (expected: FXW6QXBFW5 )
2022-10-04 20:54:57 : DEBUG : venturablocker : Deleting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.nLLDwJfl
2022-10-04 20:54:57 : DEBUG : venturablocker : Debugging enabled, Deleting tmpDir output was:
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.nLLDwJfl/venturablocker.pkg
2022-10-04 20:54:57 : DEBUG : venturablocker : /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.nLLDwJfl
2022-10-04 20:54:57 : INFO  : venturablocker : App not closed, so no reopen.
2022-10-04 20:54:57 : DEBUG : venturablocker : DEBUG mode 2 enabled, exiting
2022-10-04 20:54:57 : REQ   : venturablocker : ################## End Installomator, exit code 0
```
2022-10-04 20:58:01 +02:00
Armin Briegel
3364e6cf07 updated Labels and main script 2022-10-03 16:09:30 -07:00
Armin Briegel
a4f8b65932 Update CHANGELOG.md 2022-10-03 16:08:39 -07:00
Armin Briegel
3748080fa7 new label: inetclearreportsdesigner 2022-10-03 16:05:44 -07:00
Armin Briegel
47acb6443d Update CHANGELOG.md 2022-10-03 16:05:25 -07:00
Armin Briegel
e8b777babb re-Merge branch 'pr/612' 2022-10-03 14:51:57 -07:00
Armin Briegel
116937a948 Update CHANGELOG.md 2022-10-03 14:50:26 -07:00
Armin Briegel
c36c14c2d6 removed extraneous file 2022-10-03 14:43:35 -07:00
Armin Briegel
01d1238b0d fixed parallelsrasclient file name 2022-10-03 13:57:56 -07:00
Armin Briegel
bf89f4b42b added missing line breaks 2022-10-03 13:56:12 -07:00
Adam Codega
ec1e6e6dc9 Merge pull request #711 from Installomator/acodega-MDMscriptsREADME
Update and reformatting of README
2022-10-03 13:55:26 -04:00
Theile
76ee861038 Smart quotes and a few italic and bold formatting 2022-10-03 19:49:47 +02:00
Adam Codega
3ef2b8e3fb Update and reformatting of README 2022-10-03 13:18:19 -04:00
Adam Codega
bcf9ddf248 Clarify beta statement regarding repos 2022-10-03 12:36:21 -04:00
Theile
57fd2e57fc vysor label
[https://github.com/koush/vysor.io](https://github.com/koush/vysor.io)

Vysor - Mirror and Control your Phone
2022-10-03 13:03:46 +02:00
Theile
d01cb5fb97 10.0beta3, 2022-09-30 2022-09-30 22:37:21 +02:00
Søren Theilgaard
180da16722 Merge pull request #608 from macmangr/jdk18
New Label: Java SE Development Kit 18
2022-09-30 22:33:00 +02:00
Theile
6b6ce8e23e Beta-warning! 2022-09-30 22:21:22 +02:00
Theile
b45c2f81ea 10.0beta3, 2022-09-30 2022-09-30 22:18:29 +02:00
Søren Theilgaard
2b67f3db9e Merge pull request #655 from FletcherS7/label-Egnyte-Core
New Label: Egnyte Desktop Core
2022-09-30 22:15:51 +02:00
Theile
ee02bee37c 10.0beta3, 2022-09-30 2022-09-30 22:12:09 +02:00
Søren Theilgaard
3f3f32db9b Merge pull request #605 from macmangr/libreoffice
Update libreoffice.sh
2022-09-30 22:08:30 +02:00
Søren Theilgaard
ac3815b758 Merge branch 'main' into libreoffice 2022-09-30 22:08:16 +02:00
Fletcher Salesky
2c378360c4 Omit xpath error lines from output 2022-09-30 13:07:25 -07:00
Søren Theilgaard
940fc5a0d6 Merge pull request #609 from macmangr/filemakerpro
New Label: Filemaker Pro
2022-09-30 22:04:49 +02:00
Søren Theilgaard
b5ead8f650 Merge pull request #610 from macmangr/horos
New Label: Horos
2022-09-30 22:03:54 +02:00
Søren Theilgaard
6bdddff6d7 Merge pull request #617 from macmangr/chronoagent
New Label: ChronoAgent
2022-09-30 22:00:15 +02:00
Søren Theilgaard
4a52d8ce46 Merge pull request #620 from xdgc/label-tailscale
Add Tailscale label
2022-09-30 21:54:58 +02:00
Søren Theilgaard
bc85c8195e Merge pull request #616 from macmangr/chronosync
New Label: ChronoSync
2022-09-30 21:53:44 +02:00
Søren Theilgaard
36860fd694 Merge pull request #624 from macmangr/awpst
New Label: Archiware P5
2022-09-30 21:52:06 +02:00
Søren Theilgaard
377e7e039c Merge pull request #625 from macmangr/awb2go
New Label: Archiware P5 Backup2Go
2022-09-30 21:51:08 +02:00
Søren Theilgaard
cb7c00751a Merge pull request #633 from FletcherS7/label-Nudge-Suite
New Label: Nudge Suite
2022-09-30 21:49:27 +02:00
Søren Theilgaard
1744c65773 Merge pull request #634 from kryptonit1/zotero-label
New Label: Zotero
2022-09-30 21:45:05 +02:00
Søren Theilgaard
5b9da39349 Merge pull request #621 from kenchan0130/patch-2
santa and nomad are forced to ignore blocking
2022-09-30 21:35:52 +02:00
Søren Theilgaard
67ae307f86 Merge pull request #708 from dnikles/Update-audacity-label
Update audacity label to check for arch
2022-09-30 21:35:13 +02:00
Søren Theilgaard
f5f2c3c605 Merge pull request #701 from Theile/MDM-scripts-with-Dialog-and-adding-to-Dock
Mdm scripts with dialog and adding to dock
2022-09-30 21:31:32 +02:00
Søren Theilgaard
1903e8da80 Merge pull request #691 from Theile/Fall-back-on-GitHub-downloadURL
If GitHub does not give an URL we can fall back on API call
2022-09-30 21:30:53 +02:00
Søren Theilgaard
0ceb8d2803 Merge pull request #658 from Theile/Dialog-additions
Dialog update when app is already at the latest version
2022-09-30 21:30:34 +02:00
Søren Theilgaard
e33dbc1c6d Merge pull request #656 from FletcherS7/label-zoom-outlook
New Label: Zoom Outlook Plugin
2022-09-30 21:29:53 +02:00
Søren Theilgaard
939119da83 Merge pull request #660 from buckbanzai/add-splashtopbusiness
Add splashtopbusiness Label
2022-09-30 21:29:00 +02:00
Søren Theilgaard
3f860cd2cb Merge pull request #661 from speedybutters/New-Label-bitrix24
New Label: bitrix24
2022-09-30 21:27:48 +02:00
Søren Theilgaard
32327ae03a Merge pull request #662 from speedybutters/New-Label-Origin
New Label: origin
2022-09-30 21:26:24 +02:00
Søren Theilgaard
90efc9f110 Merge pull request #670 from meschwartz/New-Label-Charles-Proxy
Created new label for Charles Proxy
2022-09-30 21:21:39 +02:00
Søren Theilgaard
d926ac34b4 Merge pull request #671 from FletcherS7/label-polylens
New Label: Poly Lens
2022-09-30 21:20:53 +02:00
Søren Theilgaard
44793e5b5e Merge pull request #678 from Theile/acroniscyberprotectconnectagent
Update acroniscyberprotectconnectagent.sh
2022-09-30 21:14:30 +02:00
Søren Theilgaard
125cb221d3 Merge pull request #690 from Theile/gfxCardStatus-label
gfxCardStatus label
2022-09-30 21:12:37 +02:00
Søren Theilgaard
3b44907148 Merge pull request #684 from kryptonit1/latexit-label
New Label: LaTeXiT
2022-09-30 21:11:13 +02:00
Søren Theilgaard
758c8b4687 Merge pull request #689 from kryptonit1/cytoscape-label
New Label: Cytoscape
2022-09-30 21:06:29 +02:00
Søren Theilgaard
f62b100cfe Merge pull request #692 from FletcherS7/update-obs-label
Update OBS Label
2022-09-30 21:05:43 +02:00
Søren Theilgaard
3d304a1a29 Merge pull request #704 from Theile/DuckDuckGo-web-browser-label-update
DuckDuckGo label — Latest url and version is last in appcast feed
2022-09-30 21:04:01 +02:00
Søren Theilgaard
2f4bbb2c68 Merge pull request #702 from Theile/R-project
R project for Apple Silicon and intel
2022-09-30 21:03:43 +02:00
Søren Theilgaard
a8d0f636d3 Merge pull request #707 from Theile/Adobe-labels-from-Isaac
Adobe labels from isaac
2022-09-30 21:03:26 +02:00
Søren Theilgaard
e700bbe7b7 Merge pull request #705 from Theile/VLC-version-on-file-name
VLC version from file name
2022-09-30 21:02:57 +02:00
Søren Theilgaard
1394d3968d Merge pull request #680 from Theile/xcreds-version-fix
Change `appNewVersion`
2022-09-30 21:00:45 +02:00
Søren Theilgaard
33c2dd626f Merge pull request #607 from macmangr/rasclient
New Label: Parallels Client
2022-09-30 20:58:26 +02:00
Søren Theilgaard
25ca38b95e Merge pull request #599 from duongt01/fellow
New Label: Fellow
2022-09-30 20:53:10 +02:00
Søren Theilgaard
11e953057a Merge pull request #598 from Chriscodinglife/fujifilmwebcam
New Label: Fujifilmwebcam
2022-09-30 20:52:36 +02:00
Søren Theilgaard
a7cefea5dd Merge pull request #665 from niavlysAO/label-screamingfrogspider-dmg-per-arch
label screamingfrogspider.sh fix, dmg per arch
2022-09-30 20:40:03 +02:00
dnikles
be62fa9895 check for arch
previous version of label was downloading the arm64 version every time
2022-09-30 11:07:30 -04:00
Theile
dd3ac338b3 Examples 2022-09-30 13:41:20 +02:00
Theile
feedc86a0a Works with version 9 and 10 comment. 2022-09-30 10:57:04 +02:00
Theile
3f41926cf9 adobecreativeclouddesktop and adobereaderdc-update
Fixing #694 and fixing #687
2022-09-30 10:14:13 +02:00
Theile
5e1dba614a Merge remote-tracking branch 'upstream/acodega-fix-AdobeCC-urls' into Adobe-labels-from-Isaac 2022-09-30 09:23:27 +02:00
Theile
d404e93365 adobeacrobatprodc, adobereaderdc 2022-09-30 09:22:29 +02:00
Theile
e0222cfe49 API call first, then fall back on home page url. 2022-09-29 16:10:36 +02:00
Theile
c955a69e47 App-update scripts
And added a bit to the README.md.
2022-09-29 13:07:42 +02:00
Theile
c5ad2291e0 VLC version from file name
```
# utils/assemble.sh vlc DEBUG=0
2022-09-28 15:22:49 : INFO  : vlc : setting variable from argument DEBUG=0
2022-09-28 15:22:49 : REQ   : vlc : ################## Start Installomator v. 10.0beta3, date 2022-09-28
2022-09-28 15:22:49 : INFO  : vlc : ################## Version: 10.0beta3
2022-09-28 15:22:49 : INFO  : vlc : ################## Date: 2022-09-28
2022-09-28 15:22:49 : INFO  : vlc : ################## vlc
2022-09-28 15:22:49 : INFO  : vlc : BLOCKING_PROCESS_ACTION=tell_user
2022-09-28 15:22:49 : INFO  : vlc : NOTIFY=success
2022-09-28 15:22:49 : INFO  : vlc : LOGGING=INFO
2022-09-28 15:22:49 : INFO  : vlc : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-09-28 15:22:49 : INFO  : vlc : Label type: dmg
2022-09-28 15:22:49 : INFO  : vlc : archiveName: VLC.dmg
2022-09-28 15:22:49 : INFO  : vlc : no blocking processes defined, using VLC as default
2022-09-28 15:22:49 : INFO  : vlc : App(s) found: /Applications/VLC.app
2022-09-28 15:22:49 : INFO  : vlc : found app at /Applications/VLC.app, version 3.0.17.3, on versionKey CFBundleShortVersionString
2022-09-28 15:22:49 : INFO  : vlc : appversion: 3.0.17.3
2022-09-28 15:22:49 : INFO  : vlc : Latest version of VLC is 3.0.17.3
2022-09-28 15:22:49 : INFO  : vlc : There is no newer version available.
2022-09-28 15:22:49 : INFO  : vlc : App not closed, so no reopen.
2022-09-28 15:22:49 : REQ   : vlc : No newer version.
2022-09-28 15:22:49 : REQ   : vlc : ################## End Installomator, exit code 0
```
2022-09-28 15:24:02 +02:00
Theile
3d2c72a672 Examples 2022-09-28 13:45:38 +02:00
Theile
f87df8bd99 Update README.md 2022-09-28 12:41:50 +02:00
Theile
2a9fd6292c Latest version is last in appcast feed 2022-09-28 10:00:34 +02:00
Theile
b7c8214b62 Variables cleaning 2022-09-27 11:22:59 +02:00
Theile
9faa9a17a9 Variables cleaning 2022-09-27 10:52:58 +02:00
Theile
e7ebeecc5b Variables cleaning 2022-09-27 10:49:58 +02:00
Theile
fdb717019f Examples 2022-09-27 10:14:56 +02:00
Theile
e3f5b2bebd Making LOGO empty 2022-09-27 08:58:52 +02:00
Theile
ddc7a67e38 Corrections and fixes 2022-09-26 16:13:35 +02:00
Theile
a68ac0d065 Missing notification and other fields for Installomator call 2022-09-26 15:45:51 +02:00
Theile
1c45e09134 RStudio with a matching appNewVersion 2022-09-26 15:11:51 +02:00
Theile
82b429a4be R project for Apple Silicon and intel 2022-09-26 14:43:43 +02:00
Theile
92d7bec606 Update README.md 2022-09-26 11:50:17 +02:00
Theile
d00ddbc891 Create README.md 2022-09-23 16:27:24 +02:00
Theile
515087f7e9 More minor tweaks 2022-09-23 14:48:09 +02:00
Theile
0a4c8cfe6e Cleaning 2022-09-21 17:36:03 +02:00
Theile
91af2427fa Fix for #698
GitHub download links changed, fixed #698.
2022-09-21 11:58:56 +02:00
Theile
24c550477a GitHub download fix 2022-09-21 11:34:01 +02:00
Theile
44cee15ac2 Dialog cmd file: /var/tmp/dialog.log 2022-09-21 09:05:05 +02:00
Theile
53cbc342c3 Minor renaming of a few file names 2022-09-21 09:04:06 +02:00
Theile
5b39697bf8 No printlog function so echo it is 2022-09-21 08:43:31 +02:00
Theile
e6088a2eda Install swiftDialog in preparation script 2022-09-20 16:34:12 +02:00
Theile
938a40943e Cleaning and adding prevention scripts 2022-09-20 09:50:54 +02:00
Theile
c0a850848b Version number matching 2022-09-20 08:36:55 +02:00
Theile
909a61fbe3 Improved icon checks and failovers 2022-09-19 21:40:03 +02:00
Theile
9c5ab45851 Version 9.4 of my MDM scripts 2022-09-19 11:38:43 +02:00
macmangr
6c829ed0d6 Added architecture check and ARM version of Horos
The developer has now also released an Apple Silicon version of the software, so a review of the processor and the appropriate download links have been added

The expectedTeamID is now a variable because the Apple Silicon version of the app has a different TeamID
2022-09-17 16:53:15 +02:00
macmangr
96380b2f27 Label name changed to "archiwarepst"
The name of the label has been changed from "awpst" to "archiwarepst"
2022-09-17 14:59:49 +02:00
macmangr
b061f37924 Label name changed to "archiwareb2go"
The name of the label has been changed from "awb2go" to "archiwareb2go"
2022-09-17 14:57:15 +02:00
macmangr
5a54cd92b6 Label name changed to "parallelsrasclient"
The name of the label has been changed from "rasclient" to "parallelsrasclient"
2022-09-17 14:52:08 +02:00
Fletcher Salesky
57ed4e77f4 Move archiveName before downloadURL 2022-09-14 16:34:03 -07:00
Fletcher Salesky
a01bfd7dae Update obs.sh 2022-09-14 16:25:56 -07:00
Theile
e5d309a9d9 Minor correction to the if statement 2022-09-14 16:19:57 +02:00
Theile
1412f86e69 If GItHub does not give an URL we can fall back on API call
Today something strange happened for Installomator on GitHub. Or latest release would spend too much time loading the assets, and would not return an URL, like here:

```
% gitusername="Installomator"; gitreponame="Installomator"; curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.pkg" | head -1
% gitusername="bartreardon"; gitreponame="swiftDialog"; curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.pkg" | head -1
/bartreardon/swiftDialog/releases/download/v1.11.2/dialog-1.11.2-3095.pkg
```

As can be seen above it worked for swiftDialog, but not for Installomator.

Now we can fall back on the API call if we do not get the URL in first try.
2022-09-14 15:45:00 +02:00
Theile
13d574bd0d Create gfxcardstatus.sh
Text run:
```
% utils/assemble.sh gfxcardstatus DEBUG=2
2022-09-14 10:26:07 : INFO  : gfxcardstatus : setting variable from argument DEBUG=2
2022-09-14 10:26:07 : REQ   : gfxcardstatus : ################## Start Installomator v. 10.0beta3, date 2022-09-14
2022-09-14 10:26:07 : INFO  : gfxcardstatus : ################## Version: 10.0beta3
2022-09-14 10:26:07 : INFO  : gfxcardstatus : ################## Date: 2022-09-14
2022-09-14 10:26:07 : INFO  : gfxcardstatus : ################## gfxcardstatus
2022-09-14 10:26:07 : DEBUG : gfxcardstatus : DEBUG mode 2 enabled.
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : name=gfxCardStatus
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : appName=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : type=zip
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : archiveName=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : downloadURL=https://github.com/codykrieger/gfxCardStatus/releases/download/v2.5/gfxCardStatus-2.5.zip
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : curlOptions=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : appNewVersion=2.5
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : appCustomVersion function: Not defined
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : versionKey=CFBundleShortVersionString
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : packageID=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : pkgName=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : choiceChangesXML=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : expectedTeamID=LF22FTQC25
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : blockingProcesses=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : installerTool=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : CLIInstaller=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : CLIArguments=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : updateTool=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : updateToolArguments=
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : updateToolRunAsCurrentUser=
2022-09-14 10:26:08 : INFO  : gfxcardstatus : BLOCKING_PROCESS_ACTION=tell_user
2022-09-14 10:26:08 : INFO  : gfxcardstatus : NOTIFY=success
2022-09-14 10:26:08 : INFO  : gfxcardstatus : LOGGING=DEBUG
2022-09-14 10:26:08 : INFO  : gfxcardstatus : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-09-14 10:26:08 : INFO  : gfxcardstatus : Label type: zip
2022-09-14 10:26:08 : INFO  : gfxcardstatus : archiveName: gfxCardStatus.zip
2022-09-14 10:26:08 : INFO  : gfxcardstatus : no blocking processes defined, using gfxCardStatus as default
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : Changing directory to /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6
2022-09-14 10:26:08 : INFO  : gfxcardstatus : name: gfxCardStatus, appName: gfxCardStatus.app
2022-09-14 10:26:08 : INFO  : gfxcardstatus : App(s) found: /Users/st/Downloads/2022-09-14-10-21-02/gfxCardStatus.app
2022-09-14 10:26:08 : WARN  : gfxcardstatus : could not determine location of gfxCardStatus.app
2022-09-14 10:26:08 : INFO  : gfxcardstatus : appversion:
2022-09-14 10:26:08 : INFO  : gfxcardstatus : Latest version of gfxCardStatus is 2.5
2022-09-14 10:26:08 : REQ   : gfxcardstatus : Downloading https://github.com/codykrieger/gfxCardStatus/releases/download/v2.5/gfxCardStatus-2.5.zip to gfxCardStatus.zip
2022-09-14 10:26:08 : DEBUG : gfxcardstatus : No Dialog connection, just download
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : File list: -rw-r--r--  1 st  staff   2,2M 14 Sep 10:26 gfxCardStatus.zip
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : File type: gfxCardStatus.zip: Zip archive data, at least v1.0 to extract, compression method=store
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : curl output was:
*   Trying 140.82.121.3:443...
* Connected to github.com (140.82.121.3) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
…
* Connection #1 to host objects.githubusercontent.com left intact

2022-09-14 10:26:10 : REQ   : gfxcardstatus : no more blocking processes, continue with update
2022-09-14 10:26:10 : REQ   : gfxcardstatus : Installing gfxCardStatus
2022-09-14 10:26:10 : INFO  : gfxcardstatus : Unzipping gfxCardStatus.zip
2022-09-14 10:26:10 : INFO  : gfxcardstatus : Verifying: /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6/gfxCardStatus.app
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : App size: 5,5M	/var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6/gfxCardStatus.app
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : Debugging enabled, App Verification output was:
/var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6/gfxCardStatus.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Cody Krieger (LF22FTQC25)

2022-09-14 10:26:10 : INFO  : gfxcardstatus : Team ID matching: LF22FTQC25 (expected: LF22FTQC25 )
2022-09-14 10:26:10 : INFO  : gfxcardstatus : Installing gfxCardStatus version 2.5 on versionKey CFBundleShortVersionString.
2022-09-14 10:26:10 : INFO  : gfxcardstatus : App has LSMinimumSystemVersion: 10.9
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : DEBUG mode 2 enabled, not installing anything, exiting
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : Deleting /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : Debugging enabled, Deleting tmpDir output was:
/var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6/gfxCardStatus.app/Contents/CodeResources
…
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6/gfxCardStatus.app
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6/gfxCardStatus.zip
2022-09-14 10:26:10 : DEBUG : gfxcardstatus : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.cR1129g6
2022-09-14 10:26:11 : INFO  : gfxcardstatus : App not closed, so no reopen.
2022-09-14 10:26:11 : INFO  : gfxcardstatus :
2022-09-14 10:26:11 : REQ   : gfxcardstatus : ################## End Installomator, exit code 0
```
2022-09-14 10:31:06 +02:00
Fredrik Larsson
4e003b2292 New Label: Cytoscape
2022-09-13 11:18:47 : REQ   : cytoscape : ################## Start Installomator v. 10.0beta3, date 2022-09-13
2022-09-13 11:18:47 : INFO  : cytoscape : ################## Version: 10.0beta3
2022-09-13 11:18:47 : INFO  : cytoscape : ################## Date: 2022-09-13
2022-09-13 11:18:47 : INFO  : cytoscape : ################## cytoscape
2022-09-13 11:18:47 : INFO  : cytoscape : SwiftDialog is not installed, clear cmd file var
2022-09-13 11:18:49 : INFO  : cytoscape : BLOCKING_PROCESS_ACTION=tell_user
2022-09-13 11:18:49 : INFO  : cytoscape : NOTIFY=success
2022-09-13 11:18:50 : INFO  : cytoscape : LOGGING=INFO
2022-09-13 11:18:50 : INFO  : cytoscape : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-09-13 11:18:50 : INFO  : cytoscape : Label type: dmg
2022-09-13 11:18:50 : INFO  : cytoscape : archiveName: Cytoscape.dmg
2022-09-13 11:18:50 : INFO  : cytoscape : no blocking processes defined, using Cytoscape as default
2022-09-13 11:18:50 : INFO  : cytoscape : name: Cytoscape, appName: Cytoscape.app
2022-09-13 11:18:50 : WARN  : cytoscape : No previous app found
2022-09-13 11:18:50 : WARN  : cytoscape : could not find Cytoscape.app
2022-09-13 11:18:50 : INFO  : cytoscape : appversion:
2022-09-13 11:18:50 : INFO  : cytoscape : Latest version of Cytoscape is 3.9.1
2022-09-13 11:18:50 : REQ   : cytoscape : Downloading https://github.com/cytoscape/cytoscape/releases/download/3.9.1/Cytoscape_3_9_1_macos.dmg to Cytoscape.dmg
2022-09-13 11:19:12 : REQ   : cytoscape : no more blocking processes, continue with update
2022-09-13 11:19:12 : REQ   : cytoscape : Installing Cytoscape
2022-09-13 11:19:12 : REQ   : cytoscape : installerTool used: Cytoscape Installer.app
2022-09-13 11:19:12 : INFO  : cytoscape : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.zwfhpav8/Cytoscape.dmg
2022-09-13 11:19:13 : INFO  : cytoscape : Mounted: /Volumes/Cytoscape 1
2022-09-13 11:19:13 : INFO  : cytoscape : Verifying: /Volumes/Cytoscape 1/Cytoscape Installer.app
2022-09-13 11:19:14 : INFO  : cytoscape : Team ID matching: 35LDCJ33QT (expected: 35LDCJ33QT )
2022-09-13 11:19:14 : INFO  : cytoscape : Installing Cytoscape version 3.9.1 on versionKey CFBundleShortVersionString.
2022-09-13 11:19:14 : INFO  : cytoscape : App has LSMinimumSystemVersion: 10.7.3
2022-09-13 11:19:14 : INFO  : cytoscape : CLIInstaller exists, running installer command /Volumes/Cytoscape 1/Cytoscape Installer.app/Contents/MacOS/JavaApplicationStub -q
2022-09-13 11:19:49 : INFO  : cytoscape : Succesfully ran /Volumes/Cytoscape 1/Cytoscape Installer.app/Contents/MacOS/JavaApplicationStub -q
2022-09-13 11:19:49 : INFO  : cytoscape : Finishing...
2022-09-13 11:19:52 : INFO  : cytoscape : name: Cytoscape, appName: Cytoscape Installer.app
2022-09-13 11:19:52 : INFO  : cytoscape : App(s) found: /Applications/Cytoscape_v3.9.1/Cytoscape Uninstaller.app/Applications/Cytoscape_v3.9.1/Cytoscape.app
2022-09-13 11:19:52 : WARN  : cytoscape : could not determine location of Cytoscape Installer.app
2022-09-13 11:19:52 : REQ   : cytoscape : Installed Cytoscape
2022-09-13 11:19:52 : INFO  : cytoscape : notifying
2022-09-13 11:19:53 : INFO  : cytoscape : App not closed, so no reopen.
2022-09-13 11:19:53 : REQ   : cytoscape : All done!
2022-09-13 11:19:53 : REQ   : cytoscape : ################## End Installomator, exit code 0
2022-09-13 11:29:16 +02:00
Søren Theilgaard
cd2637d30f Verify for “Adobe Installer” before running
Also added another option for getting current version that we could consider using. Removed some old stuff already commented out.
2022-09-13 09:05:04 +02:00
Fredrik Larsson
a5421ad226 New Label: Projectplace
2022-09-13 08:38:09 : REQ   : projectplace : ################## Start Installomator v. 10.0beta3, date 2022-09-13
2022-09-13 08:38:09 : INFO  : projectplace : ################## Version: 10.0beta3
2022-09-13 08:38:09 : INFO  : projectplace : ################## Date: 2022-09-13
2022-09-13 08:38:09 : INFO  : projectplace : ################## projectplace
2022-09-13 08:38:09 : INFO  : projectplace : SwiftDialog is not installed, clear cmd file var
2022-09-13 08:38:09 : INFO  : projectplace : BLOCKING_PROCESS_ACTION=tell_user
2022-09-13 08:38:09 : INFO  : projectplace : NOTIFY=success
2022-09-13 08:38:09 : INFO  : projectplace : LOGGING=INFO
2022-09-13 08:38:09 : INFO  : projectplace : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-09-13 08:38:09 : INFO  : projectplace : Label type: dmg
2022-09-13 08:38:09 : INFO  : projectplace : archiveName: Projectplace.dmg
2022-09-13 08:38:09 : INFO  : projectplace : no blocking processes defined, using Projectplace as default
2022-09-13 08:38:10 : INFO  : projectplace : name: Projectplace, appName: Projectplace.app
2022-09-13 08:38:10 : WARN  : projectplace : No previous app found
2022-09-13 08:38:10 : WARN  : projectplace : could not find Projectplace.app
2022-09-13 08:38:10 : INFO  : projectplace : appversion:
2022-09-13 08:38:10 : INFO  : projectplace : Latest version not specified.
2022-09-13 08:38:10 : REQ   : projectplace : Downloading https://service.projectplace.com/client_apps/desktop/Projectplace-for-mac.dmg to Projectplace.dmg
2022-09-13 08:38:11 : REQ   : projectplace : no more blocking processes, continue with update
2022-09-13 08:38:11 : REQ   : projectplace : Installing Projectplace
2022-09-13 08:38:11 : INFO  : projectplace : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.DSQ0lE6Y/Projectplace.dmg
2022-09-13 08:38:14 : INFO  : projectplace : Mounted: /Volumes/Projectplace
2022-09-13 08:38:14 : INFO  : projectplace : Verifying: /Volumes/Projectplace/Projectplace.app
2022-09-13 08:38:15 : INFO  : projectplace : Team ID matching: 8333HW99E8 (expected: 8333HW99E8 )
2022-09-13 08:38:15 : INFO  : projectplace : Installing Projectplace version 1.3.5 on versionKey CFBundleShortVersionString.
2022-09-13 08:38:15 : INFO  : projectplace : Copy /Volumes/Projectplace/Projectplace.app to /Applications
2022-09-13 08:38:15 : WARN  : projectplace : Changing owner to kryptonit
2022-09-13 08:38:15 : INFO  : projectplace : Finishing...
2022-09-13 08:38:18 : INFO  : projectplace : App(s) found: /Applications/Projectplace.app
2022-09-13 08:38:18 : INFO  : projectplace : found app at /Applications/Projectplace.app, version 1.3.5, on versionKey CFBundleShortVersionString
2022-09-13 08:38:18 : REQ   : projectplace : Installed Projectplace, version 1.3.5
2022-09-13 08:38:18 : INFO  : projectplace : notifying
2022-09-13 08:38:19 : INFO  : projectplace : App not closed, so no reopen.
2022-09-13 08:38:19 : REQ   : projectplace : All done!
2022-09-13 08:38:19 : REQ   : projectplace : ################## End Installomator, exit code 0
2022-09-13 08:39:21 +02:00
Adam Codega
22170a89ae Swap Adobe URL parsing filter
The filters for ARM and Intel were swapped by accident, this correctly returns the ARM URL for ARM and Intel URL for Intel.
2022-09-12 12:37:11 -04:00
Fredrik Larsson
5ab42971e5 New Label: MacTeX 2022-09-12 16:28:03 +02:00
Fredrik Larsson
527490e72f New Label: LaTeXiT
2022-09-12 14:49:00 : INFO  : latexit : setting variable from argument NOTIFY=silent
2022-09-12 14:49:00 : INFO  : latexit : setting variable from argument DEBUG=0
2022-09-12 14:49:00 : REQ   : latexit : ################## Start Installomator v. 10.0beta3, date 2022-09-12
2022-09-12 14:49:00 : INFO  : latexit : ################## Version: 10.0beta3
2022-09-12 14:49:00 : INFO  : latexit : ################## Date: 2022-09-12
2022-09-12 14:49:00 : INFO  : latexit : ################## latexit
2022-09-12 14:49:00 : INFO  : latexit : SwiftDialog is not installed, clear cmd file var
2022-09-12 14:49:01 : INFO  : latexit : BLOCKING_PROCESS_ACTION=tell_user
2022-09-12 14:49:01 : INFO  : latexit : NOTIFY=silent
2022-09-12 14:49:01 : INFO  : latexit : LOGGING=INFO
2022-09-12 14:49:01 : INFO  : latexit : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-09-12 14:49:01 : INFO  : latexit : Label type: dmg
2022-09-12 14:49:01 : INFO  : latexit : archiveName: LaTeXiT.dmg
2022-09-12 14:49:01 : INFO  : latexit : no blocking processes defined, using LaTeXiT as default
2022-09-12 14:49:01 : INFO  : latexit : name: LaTeXiT, appName: LaTeXiT.app
2022-09-12 14:49:01 : WARN  : latexit : No previous app found
2022-09-12 14:49:01 : WARN  : latexit : could not find LaTeXiT.app
2022-09-12 14:49:01 : INFO  : latexit : appversion:
2022-09-12 14:49:01 : INFO  : latexit : Latest version of LaTeXiT is 2.16.4
2022-09-12 14:49:01 : REQ   : latexit : Downloading https://pierre.chachatelier.fr/latexit/downloads/LaTeXiT-2_16_4.dmg to LaTeXiT.dmg
2022-09-12 14:49:03 : REQ   : latexit : no more blocking processes, continue with update
2022-09-12 14:49:04 : REQ   : latexit : Installing LaTeXiT
2022-09-12 14:49:04 : INFO  : latexit : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.p6c9hBly/LaTeXiT.dmg
2022-09-12 14:49:07 : INFO  : latexit : Mounted: /Volumes/LaTeXiT 2.16.4 1
2022-09-12 14:49:07 : INFO  : latexit : Verifying: /Volumes/LaTeXiT 2.16.4 1/LaTeXiT.app
2022-09-12 14:49:08 : INFO  : latexit : Team ID matching: 7SFX84GNR7 (expected: 7SFX84GNR7 )
2022-09-12 14:49:08 : INFO  : latexit : Installing LaTeXiT version 2.16.4 on versionKey CFBundleShortVersionString.
2022-09-12 14:49:08 : INFO  : latexit : App has LSMinimumSystemVersion: 10.9
2022-09-12 14:49:08 : INFO  : latexit : Copy /Volumes/LaTeXiT 2.16.4 1/LaTeXiT.app to /Applications
2022-09-12 14:49:12 : WARN  : latexit : Changing owner to kryptonit
2022-09-12 14:49:13 : INFO  : latexit : Finishing...
2022-09-12 14:49:16 : INFO  : latexit : App(s) found: /Applications/LaTeXiT.app
2022-09-12 14:49:16 : INFO  : latexit : found app at /Applications/LaTeXiT.app, version 2.16.4, on versionKey CFBundleShortVersionString
2022-09-12 14:49:16 : REQ   : latexit : Installed LaTeXiT, version 2.16.4
2022-09-12 14:49:16 : INFO  : latexit : App not closed, so no reopen.
2022-09-12 14:49:16 : REQ   : latexit : All done!
2022-09-12 14:49:16 : REQ   : latexit : ################## End Installomator, exit code 0
2022-09-12 14:51:56 +02:00
Søren Theilgaard
776c955cdd Comments to label 2022-09-05 10:17:09 +02:00
Søren Theilgaard
7239ec454a Change appNewVersion
GitHub tag contain “_” and not “.” so our function fails to get the right version, so isolating it out from the `downloadURL`.
2022-09-05 10:04:33 +02:00
Armin Briegel
0c4d7b0c56 Update version.sh 2022-09-02 15:22:35 +02:00
Armin Briegel
9e9a65337d updated changelog and main script 2022-09-02 15:17:51 +02:00
Søren Theilgaard
95bd32769c Update acroniscyberprotectconnectagent.sh
`blockingProcesses=( NONE )`
2022-09-02 14:57:04 +02:00
Armin Briegel
42126caa21 fixed labels without trailing new line 2022-09-02 13:29:16 +02:00
Armin Briegel
cee2b1d037 new label: dynalist 2022-09-02 13:05:43 +02:00
Armin Briegel
66d8f25847 new label: coconutbattery 2022-09-02 13:04:48 +02:00
Armin Briegel
960aa51770 new label: xcreds 2022-09-02 12:55:22 +02:00
Armin Briegel
d96c300cf8 updated label: libreoffice 2022-09-02 12:51:20 +02:00
Armin Briegel
6556cfd7d4 fixed typo 2022-09-02 12:51:00 +02:00
Armin Briegel
a4e12dd37f new label: mongodbcompass 2022-09-02 12:46:41 +02:00
Armin Briegel
efa40d90e4 new label: relatel 2022-09-02 12:45:34 +02:00
Armin Briegel
003647bab2 updated test script 2022-09-02 12:44:58 +02:00
Armin Briegel
18b5d87760 new label: awsvpnclient 2022-09-02 11:46:37 +02:00
Armin Briegel
daff74680e new label: lcadvancedvpnclient 2022-09-02 11:45:35 +02:00
Armin Briegel
a9fdf6132a new label: typinator 2022-09-02 11:44:28 +02:00
Armin Briegel
b7353eae7d new label: synologydriveclient 2022-09-02 11:43:21 +02:00
Armin Briegel
e1fdda65fe new test-pr.sh script 2022-09-02 11:42:56 +02:00
Armin Briegel
438191e4d3 assemble.sh now returns exit code from Installomator.sh 2022-09-02 11:41:33 +02:00
Armin Briegel
449276e587 new label: sonicvisualiser 2022-09-02 11:27:02 +02:00
Armin Briegel
54bf02886f new label: tencentmeeting 2022-09-02 11:23:34 +02:00
Armin Briegel
72a019b38d new label: masv 2022-09-02 11:11:47 +02:00
Armin Briegel
8edcefc181 new label: kap 2022-09-02 11:08:23 +02:00
Armin Briegel
8e519b342c Merge branch 'pr/562' 2022-09-02 11:05:36 +02:00
Armin Briegel
d1da823243 Merge branch 'pr/559' 2022-09-02 11:02:19 +02:00
Armin Briegel
f92428de8d Merge pull request #557 from macmangr/SynologyAssistant
New Label: SynologyAssistant
2022-09-02 11:00:14 +02:00
Armin Briegel
217486a118 Merge branch 'pr/556' 2022-09-02 10:58:33 +02:00
Armin Briegel
5f22889951 Merge branch 'pr/555' 2022-09-02 10:56:40 +02:00
Armin Briegel
bfaa243e4f Merge branch 'pr/554' 2022-09-02 10:53:25 +02:00
Armin Briegel
98ebfdca7c Merge branch 'pr/553' 2022-09-02 10:50:49 +02:00
Armin Briegel
3c6b8c8939 Merge branch 'pr/552' 2022-09-02 10:47:29 +02:00
Armin Briegel
dd6732ce97 Merge branch 'dev' 2022-09-02 10:45:41 +02:00
Armin Briegel
99bd9b78f4 Merge pull request #549 from imfromthebay/patch-1
New Label: KeepingYouAwake
2022-09-02 10:44:12 +02:00
Armin Briegel
baea19aa39 Merge pull request #589 from scriptingosx/boxtools-pkgid
added packageID to boxtools
2022-09-02 10:39:54 +02:00
Armin Briegel
a929f7d2ac Merge pull request #652 from scriptingosx/googleadseditor
moved label from repo root to proper folder
2022-09-02 10:39:19 +02:00
Armin Briegel
c981b093a2 Merge pull request #653 from mwmatter/main
Workspace ONE Support
2022-09-02 10:31:05 +02:00
Armin Briegel
a479c66dbe Merge branch 'main' into pr/664 2022-09-02 10:23:14 +02:00
Armin Briegel
4ad76adf7b Merge branch 'pr/659' 2022-09-02 10:10:12 +02:00
Armin Briegel
c138404604 updated version to 10.0beta2 2022-09-02 10:06:33 +02:00
Søren Theilgaard
ec45fcf945 Moving XCreds to GitHub download
```
% GitHub/Installomator-theile/utils/assemble.sh xcreds DEBUG=2
2022-09-01 14:19:53 : INFO  : xcreds : setting variable from argument DEBUG=2
2022-09-01 14:19:53 : REQ   : xcreds : ################## Start Installomator v. 10.0beta1, date 2022-09-01
2022-09-01 14:19:53 : INFO  : xcreds : ################## Version: 10.0beta1
2022-09-01 14:19:53 : INFO  : xcreds : ################## Date: 2022-09-01
2022-09-01 14:19:53 : INFO  : xcreds : ################## xcreds
2022-09-01 14:19:53 : DEBUG : xcreds : DEBUG mode 2 enabled.
2022-09-01 14:19:54 : INFO  : xcreds : BLOCKING_PROCESS_ACTION=tell_user
2022-09-01 14:19:54 : INFO  : xcreds : NOTIFY=success
2022-09-01 14:19:54 : INFO  : xcreds : LOGGING=DEBUG
2022-09-01 14:19:54 : INFO  : xcreds : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-09-01 14:19:54 : INFO  : xcreds : Label type: pkg
2022-09-01 14:19:54 : INFO  : xcreds : archiveName: XCreds.pkg
2022-09-01 14:19:54 : INFO  : xcreds : no blocking processes defined, using XCreds as default
2022-09-01 14:19:54 : DEBUG : xcreds : Changing directory to /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.LJYgKZS3
2022-09-01 14:19:54 : INFO  : xcreds : App(s) found: /Applications/XCreds.app
2022-09-01 14:19:55 : INFO  : xcreds : found app at /Applications/XCreds.app, version 1.0, on versionKey CFBundleShortVersionString
2022-09-01 14:19:55 : INFO  : xcreds : appversion: 1.0
2022-09-01 14:19:55 : INFO  : xcreds : Latest version of XCreds is 20
2022-09-01 14:19:55 : REQ   : xcreds : Downloading https://github.com/twocanoes/xcreds/releases/download/release_v2_0/XCreds_Build-3261_Version-2.0.pkg to XCreds.pkg
2022-09-01 14:19:55 : DEBUG : xcreds : No Dialog connection, just download
2022-09-01 14:19:55 : DEBUG : xcreds : File list: -rw-r--r--  1 st  staff   2,2M  1 Sep 14:19 XCreds.pkg
2022-09-01 14:19:55 : DEBUG : xcreds : File type: XCreds.pkg: xar archive compressed TOC: 5980, SHA-1 checksum
2022-09-01 14:19:55 : DEBUG : xcreds : curl output was:
*   Trying 140.82.121.3:443...
* Connected to github.com (140.82.121.3) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [315 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [2459 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=GitHub, Inc.; CN=github.com
*  start date: Mar 15 00:00:00 2022 GMT
*  expire date: Mar 15 23:59:59 2023 GMT
*  subjectAltName: host "github.com" matched cert's "github.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS Hybrid ECC SHA384 2020 CA1
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x11e811400)
> GET /twocanoes/xcreds/releases/download/release_v2_0/XCreds_Build-3261_Version-2.0.pkg HTTP/2
> Host: github.com
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 302
< server: GitHub.com
< date: Thu, 01 Sep 2022 12:19:55 GMT
< content-type: text/html; charset=utf-8
< vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With
< permissions-policy: interest-cohort=()
< location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/494661701/0a8cfad5-2aa5-485a-957c-2cbd75f57136?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220901T121955Z&X-Amz-Expires=300&X-Amz-Signature=1867f1e5e0e3ccdc87aaf258551d3be85c62a9b860e4ae665c01db34babeff6b&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=494661701&response-content-disposition=attachment%3B%20filename%3DXCreds_Build-3261_Version-2.0.pkg&response-content-type=application%2Foctet-stream
< cache-control: no-cache
< strict-transport-security: max-age=31536000; includeSubdomains; preload
< x-frame-options: deny
< x-content-type-options: nosniff
< x-xss-protection: 0
< referrer-policy: no-referrer-when-downgrade
< expect-ct: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
< content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com objects-origin.githubusercontent.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events *.actions.githubusercontent.com wss://*.actions.githubusercontent.com online.visualstudio.com/api/v1/locations github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src render.githubusercontent.com viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: github.githubassets.com identicons.github.com github-cloud.s3.amazonaws.com secured-user-images.githubusercontent.com/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/
< content-length: 0
< x-github-request-id: F408:8530:EED4F3:10A1E04:6310A36B
<
{ [0 bytes data]
* Connection #0 to host github.com left intact
* Issue another request to this URL: 'https://objects.githubusercontent.com/github-production-release-asset-2e65be/494661701/0a8cfad5-2aa5-485a-957c-2cbd75f57136?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220901T121955Z&X-Amz-Expires=300&X-Amz-Signature=1867f1e5e0e3ccdc87aaf258551d3be85c62a9b860e4ae665c01db34babeff6b&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=494661701&response-content-disposition=attachment%3B%20filename%3DXCreds_Build-3261_Version-2.0.pkg&response-content-type=application%2Foctet-stream'
*   Trying 185.199.111.133:443...
* Connected to objects.githubusercontent.com (185.199.111.133) port 443 (#1)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [334 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [3051 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=GitHub, Inc.; CN=*.github.io
*  start date: Mar 18 00:00:00 2022 GMT
*  expire date: Mar 21 23:59:59 2023 GMT
*  subjectAltName: host "objects.githubusercontent.com" matched cert's "*.githubusercontent.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS RSA SHA256 2020 CA1
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x11e811400)
> GET /github-production-release-asset-2e65be/494661701/0a8cfad5-2aa5-485a-957c-2cbd75f57136?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220901T121955Z&X-Amz-Expires=300&X-Amz-Signature=1867f1e5e0e3ccdc87aaf258551d3be85c62a9b860e4ae665c01db34babeff6b&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=494661701&response-content-disposition=attachment%3B%20filename%3DXCreds_Build-3261_Version-2.0.pkg&response-content-type=application%2Foctet-stream HTTP/2
> Host: objects.githubusercontent.com
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 200
< content-type: application/octet-stream
< content-md5: RrLFcfXK8EDq/0K9qLCThA==
< last-modified: Wed, 31 Aug 2022 15:53:35 GMT
< etag: "0x8DA8B68F6C2079A"
< server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
< x-ms-request-id: b7ffb877-b01e-006c-76fc-bdc9f2000000
< x-ms-version: 2020-04-08
< x-ms-creation-time: Wed, 31 Aug 2022 15:53:35 GMT
< x-ms-lease-status: unlocked
< x-ms-lease-state: available
< x-ms-blob-type: BlockBlob
< content-disposition: attachment; filename=XCreds_Build-3261_Version-2.0.pkg
< x-ms-server-encrypted: true
< fastly-restarts: 1
< accept-ranges: bytes
< date: Thu, 01 Sep 2022 12:19:55 GMT
< via: 1.1 varnish
< age: 83
< x-served-by: cache-cph2320020-CPH
< x-cache: HIT
< x-cache-hits: 1
< x-timer: S1662034796.510835,VS0,VE99
< content-length: 2321014
<
{ [16375 bytes data]
* Connection #1 to host objects.githubusercontent.com left intact

2022-09-01 14:19:55 : REQ   : xcreds : no more blocking processes, continue with update
2022-09-01 14:19:55 : REQ   : xcreds : Installing XCreds
2022-09-01 14:19:55 : INFO  : xcreds : Verifying: XCreds.pkg
updateDialog:26: no such file or directory:
2022-09-01 14:19:55 : DEBUG : xcreds : File list: -rw-r--r--  1 st  staff   2,2M  1 Sep 14:19 XCreds.pkg
2022-09-01 14:19:55 : DEBUG : xcreds : File type: XCreds.pkg: xar archive compressed TOC: 5980, SHA-1 checksum
2022-09-01 14:19:55 : DEBUG : xcreds : spctlOut is XCreds.pkg: accepted
2022-09-01 14:19:55 : DEBUG : xcreds : source=Notarized Developer ID
2022-09-01 14:19:55 : DEBUG : xcreds : origin=Developer ID Installer: Twocanoes Software, Inc. (UXP6YEHSPW)
2022-09-01 14:19:55 : INFO  : xcreds : Team ID: UXP6YEHSPW (expected: UXP6YEHSPW )
2022-09-01 14:19:55 : DEBUG : xcreds : Deleting /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.LJYgKZS3
2022-09-01 14:19:55 : DEBUG : xcreds : Debugging enabled, Deleting tmpDir output was:
/var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.LJYgKZS3/XCreds.pkg
2022-09-01 14:19:55 : DEBUG : xcreds : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.LJYgKZS3
2022-09-01 14:19:55 : INFO  : xcreds : App not closed, so no reopen.
2022-09-01 14:19:55 : DEBUG : xcreds : DEBUG mode 2 enabled, exiting
2022-09-01 14:19:55 : REQ   : xcreds : ################## End Installomator, exit code 0
```
2022-09-01 14:20:58 +02:00
Søren Theilgaard
160dd78ec9 XCreds
```
% GitHub/Installomator-theile/utils/assemble.sh xcreds DEBUG=2
2022-09-01 13:00:21 : INFO  : xcreds : setting variable from argument DEBUG=2
2022-09-01 13:00:21 : REQ   : xcreds : ################## Start Installomator v. 10.0beta1, date 2022-09-01
2022-09-01 13:00:21 : INFO  : xcreds : ################## Version: 10.0beta1
2022-09-01 13:00:21 : INFO  : xcreds : ################## Date: 2022-09-01
2022-09-01 13:00:21 : INFO  : xcreds : ################## xcreds
2022-09-01 13:00:21 : DEBUG : xcreds : DEBUG mode 2 enabled.
2022-09-01 13:00:22 : INFO  : xcreds : BLOCKING_PROCESS_ACTION=tell_user
2022-09-01 13:00:22 : INFO  : xcreds : NOTIFY=success
2022-09-01 13:00:22 : INFO  : xcreds : LOGGING=DEBUG
2022-09-01 13:00:22 : INFO  : xcreds : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-09-01 13:00:22 : INFO  : xcreds : Label type: pkgInZip
2022-09-01 13:00:22 : INFO  : xcreds : archiveName: XCreds.zip
2022-09-01 13:00:22 : INFO  : xcreds : no blocking processes defined, using XCreds as default
2022-09-01 13:00:22 : DEBUG : xcreds : Changing directory to /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b
2022-09-01 13:00:22 : INFO  : xcreds : App(s) found: /Applications/XCreds.app
2022-09-01 13:00:22 : INFO  : xcreds : found app at /Applications/XCreds.app, version 1.0, on versionKey CFBundleShortVersionString
2022-09-01 13:00:22 : INFO  : xcreds : appversion: 1.0
2022-09-01 13:00:22 : INFO  : xcreds : Latest version of XCreds is 2.0
2022-09-01 13:00:22 : REQ   : xcreds : Downloading https://twocanoes-software-updates.s3.amazonaws.com/xcreds/XCreds2.zip to XCreds.zip
2022-09-01 13:00:22 : DEBUG : xcreds : No Dialog connection, just download
2022-09-01 13:00:23 : DEBUG : xcreds : File list: -rw-r--r--  1 st  staff   2,2M  1 Sep 13:00 XCreds.zip
2022-09-01 13:00:23 : DEBUG : xcreds : File type: XCreds.zip: Zip archive data, at least v2.0 to extract, compression method=store
2022-09-01 13:00:23 : DEBUG : xcreds : curl output was:
*   Trying 52.216.27.92:443...
* Connected to twocanoes-software-updates.s3.amazonaws.com (52.216.27.92) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [348 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [106 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [4960 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=*.s3.amazonaws.com
*  start date: Dec 15 00:00:00 2021 GMT
*  expire date: Dec  3 23:59:59 2022 GMT
*  subjectAltName: host "twocanoes-software-updates.s3.amazonaws.com" matched cert's "*.s3.amazonaws.com"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
> GET /xcreds/XCreds2.zip HTTP/1.1
> Host: twocanoes-software-updates.s3.amazonaws.com
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< x-amz-id-2: zpibNPiaMcUDxjERKPuwezj2NFmFylFdjsNCFRrAvu6wq13iFiatThxKgoRm4EOi6TLongUrdW8=
< x-amz-request-id: GEM1A4AV0HBMPPDT
< Date: Thu, 01 Sep 2022 11:00:23 GMT
< Last-Modified: Tue, 30 Aug 2022 22:26:04 GMT
< ETag: "fe639f47a7e6a07604165864755276f5"
< Accept-Ranges: bytes
< Content-Type: application/zip
< Server: AmazonS3
< Content-Length: 2323121
<
{ [7826 bytes data]
* Connection #0 to host twocanoes-software-updates.s3.amazonaws.com left intact

2022-09-01 13:00:23 : REQ   : xcreds : no more blocking processes, continue with update
2022-09-01 13:00:23 : REQ   : xcreds : Installing XCreds
2022-09-01 13:00:23 : INFO  : xcreds : Unzipping XCreds.zip
2022-09-01 13:00:23 : DEBUG : xcreds : Found pkg(s):
/var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/XCreds_Build-3261_Version-2.0.pkg
2022-09-01 13:00:23 : INFO  : xcreds : found pkg: /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/XCreds_Build-3261_Version-2.0.pkg
2022-09-01 13:00:23 : INFO  : xcreds : Verifying: /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/XCreds_Build-3261_Version-2.0.pkg
updateDialog:26: no such file or directory:
2022-09-01 13:00:23 : DEBUG : xcreds : File list: -rw-r--r--@ 1 st  staff   2,2M 31 Aug 00:18 /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/XCreds_Build-3261_Version-2.0.pkg
2022-09-01 13:00:23 : DEBUG : xcreds : File type: /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/XCreds_Build-3261_Version-2.0.pkg: xar archive compressed TOC: 5980, SHA-1 checksum
2022-09-01 13:00:23 : DEBUG : xcreds : spctlOut is /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/XCreds_Build-3261_Version-2.0.pkg: accepted
2022-09-01 13:00:23 : DEBUG : xcreds : source=Notarized Developer ID
2022-09-01 13:00:23 : DEBUG : xcreds : origin=Developer ID Installer: Twocanoes Software, Inc. (UXP6YEHSPW)
2022-09-01 13:00:23 : INFO  : xcreds : Team ID: UXP6YEHSPW (expected: UXP6YEHSPW )
2022-09-01 13:00:23 : DEBUG : xcreds : Deleting /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b
2022-09-01 13:00:23 : DEBUG : xcreds : Debugging enabled, Deleting tmpDir output was:
/var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds.zip
2022-09-01 13:00:23 : DEBUG : xcreds : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/XCreds_Build-3261_Version-2.0.pkg
2022-09-01 13:00:23 : DEBUG : xcreds : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/xcreds_example_azure.mobileconfig
2022-09-01 13:00:23 : DEBUG : xcreds : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/com.twocanoes.xcreds.plist
2022-09-01 13:00:23 : DEBUG : xcreds : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2/xcreds_example_google.mobileconfig
2022-09-01 13:00:23 : DEBUG : xcreds : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b/XCreds2
2022-09-01 13:00:23 : DEBUG : xcreds : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.FhnTIS2b
2022-09-01 13:00:23 : INFO  : xcreds : App not closed, so no reopen.
2022-09-01 13:00:23 : DEBUG : xcreds : DEBUG mode 2 enabled, exiting
2022-09-01 13:00:23 : REQ   : xcreds : ################## End Installomator, exit code 0
```
2022-09-01 13:02:11 +02:00
Søren Theilgaard
3b098acaac wickrme and wickrpro moved to disabled 2022-08-31 09:49:28 +02:00
Søren Theilgaard
c5af1a338e SupportApp pkg will handle reinstallation if it's already running 2022-08-31 09:18:32 +02:00
Søren Theilgaard
96f5bb15e2 wickrme and wickrpro does not work
Servers has been changed, so various headers are needed to get the API to work.

Have tried this:
```
curl -H "accept: */*" -H "accept-encoding: gzip, deflate, br" -H "accept-language: en-US,en;q=0.9" -H "content-length: 30" -H "content-type: application/json" -H "origin: https://me-download.wickr.com" -H "referer: https://me-download.wickr.com/" -H "sec-fetch-dest: empty" -H "sec-fetch-mode: cors" -H "sec-fetch-site: same-origin" -H "sec-gpc: 1" -H "user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" "https://me-download.wickr.com/api/download"
```

Two different hosts for Me and Pro:
[https://me-download.wickr.com/](https://me-download.wickr.com/)
[https://pro-download.wickr.com/](https://pro-download.wickr.com/)

I have tried with Brave browser to detect what headers are needed to get the api to work, but it refuses.
2022-08-30 10:58:05 +02:00
Takanori TANIGUCHI
32721128f6 Duplicate #659 2022-08-30 09:55:20 +09:00
Søren Theilgaard
4f5479aa18 Opera is really making an effort to make it difficult for us 😜 2022-08-29 23:02:47 +02:00
Søren Theilgaard
8092b226f7 Remotix bought by Acronis 2022-08-29 21:54:44 +02:00
Søren Theilgaard
3f35f63d23 Fixed! 2022-08-29 21:21:52 +02:00
Søren Theilgaard
350c897c8a Now available on GitHub 2022-08-29 21:13:53 +02:00
Søren Theilgaard
c1607fe63c Update insomnia.sh
The release various variants on GitHub, so have to use their own download link from the web page, as well as isolating version from that.
2022-08-29 21:09:13 +02:00
Søren Theilgaard
4fa29967bc No Microsoft Yammer anymore… 2022-08-29 20:48:36 +02:00
Søren Theilgaard
8f50f04725 No "fix" needed after github download fix 2022-08-29 20:40:31 +02:00
Søren Theilgaard
2399dc5c1e No "fix" needed after github download fix. 2022-08-29 20:39:22 +02:00
Søren Theilgaard
dcde2e97f2 No "fix" needed after fixing github download 2022-08-29 20:38:20 +02:00
Søren Theilgaard
3d8ba13ca6 It works after fixing github 2022-08-29 20:34:15 +02:00
Søren Theilgaard
1155a9ee1e Reverse my previous fix
Not needed…
2022-08-29 14:25:09 +02:00
Søren Theilgaard
7458f8656b Label icons with no credit line 2022-08-29 14:24:09 +02:00
Søren Theilgaard
f7e2c5e000 Final fix for GitHub downloadURL
For all labels tested it gives the same results as API-URL.
2022-08-29 12:50:28 +02:00
Søren Theilgaard
9157d4763b Better new GitHub downloadURL 2022-08-29 09:45:27 +02:00
Takanori TANIGUCHI
4a60dcb017 revert 2022-08-28 09:57:18 +09:00
Takanori TANIGUCHI
6876114fdf Fix libreoffice download url 2022-08-28 09:45:14 +09:00
Takanori TANIGUCHI
ab6aedc460 Fix downloadURLFromGit() 2022-08-28 09:44:30 +09:00
Takanori TANIGUCHI
8127c30c5e Fix downloadURLFromGit() returns sigle line. 2022-08-27 22:46:30 +09:00
Fletcher Salesky
d18fd7f221 Create polylens.sh 2022-08-27 02:57:27 -07:00
Takanori TANIGUCHI
4467f2ce46 Fix curl switch for libreoffice and some change 2022-08-27 15:31:24 +09:00
meschwartz
cabe867b30 Created new label for Charles Proxy
Output:
```
# ./Installomator/utils/assemble.sh charles DEBUG=0
2022-08-25 13:31:09 : INFO  : charles : setting variable from argument DEBUG=0
2022-08-25 13:31:09 : REQ   : charles : ################## Start Installomator v. 10.0beta1, date 2022-08-25
2022-08-25 13:31:09 : INFO  : charles : ################## Version: 10.0beta1
2022-08-25 13:31:10 : INFO  : charles : ################## Date: 2022-08-25
2022-08-25 13:31:10 : INFO  : charles : ################## charles
2022-08-25 13:31:10 : INFO  : charles : SwiftDialog is not installed, clear cmd file var
2022-08-25 13:31:10 : INFO  : charles : BLOCKING_PROCESS_ACTION=tell_user
2022-08-25 13:31:10 : INFO  : charles : NOTIFY=success
2022-08-25 13:31:10 : INFO  : charles : LOGGING=INFO
2022-08-25 13:31:10 : INFO  : charles : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-25 13:31:10 : INFO  : charles : Label type: dmg
2022-08-25 13:31:10 : INFO  : charles : archiveName: Charles.dmg
2022-08-25 13:31:10 : INFO  : charles : no blocking processes defined, using Charles as default
2022-08-25 13:31:10 : INFO  : charles : name: Charles, appName: Charles.app
2022-08-25 13:31:10 : WARN  : charles : No previous app found
2022-08-25 13:31:10 : WARN  : charles : could not find Charles.app
2022-08-25 13:31:10 : INFO  : charles : appversion:
2022-08-25 13:31:10 : INFO  : charles : Latest version of Charles is 4.6.2
2022-08-25 13:31:10 : REQ   : charles : Downloading https://www.charlesproxy.com/assets/release/4.6.2/charles-proxy-4.6.2.dmg to Charles.dmg
2022-08-25 13:31:32 : REQ   : charles : no more blocking processes, continue with update
2022-08-25 13:31:32 : REQ   : charles : Installing Charles
2022-08-25 13:31:32 : INFO  : charles : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.MO2B5ihQ/Charles.dmg
2022-08-25 13:31:37 : INFO  : charles : Mounted: /Volumes/Charles Proxy v4.6.2
2022-08-25 13:31:37 : INFO  : charles : Verifying: /Volumes/Charles Proxy v4.6.2/Charles.app
updateDialog:26: no such file or directory:
2022-08-25 13:31:45 : INFO  : charles : Team ID matching: 9A5PCU4FSD (expected: 9A5PCU4FSD )
2022-08-25 13:31:45 : INFO  : charles : Installing Charles version 4.6.2 on versionKey CFBundleShortVersionString.
2022-08-25 13:31:45 : INFO  : charles : App has LSMinimumSystemVersion: 10.7
2022-08-25 13:31:45 : INFO  : charles : Copy /Volumes/Charles Proxy v4.6.2/Charles.app to /Applications
2022-08-25 13:31:46 : WARN  : charles : Changing owner to schwartzm
updateDialog:26: no such file or directory:
2022-08-25 13:31:46 : INFO  : charles : Finishing...
2022-08-25 13:31:49 : INFO  : charles : App(s) found: /Applications/Charles.app
2022-08-25 13:31:49 : INFO  : charles : found app at /Applications/Charles.app, version 4.6.2, on versionKey CFBundleShortVersionString
2022-08-25 13:31:49 : REQ   : charles : Installed Charles, version 4.6.2
2022-08-25 13:31:49 : INFO  : charles : notifying
2022-08-25 13:31:49 : INFO  : charles : App not closed, so no reopen.
2022-08-25 13:31:49 : REQ   : charles : All done!
2022-08-25 13:31:49 : REQ   : charles : ################## End Installomator, exit code 0
```
2022-08-25 13:32:28 -04:00
Søren Theilgaard
e1e64d5e7e coderunner with appNewVersion 2022-08-24 10:10:06 +02:00
Søren Theilgaard
9047d5d68f sap renamed to SAP
And added `archiveName` to make sure we find the correct file and not the source code.
2022-08-23 17:03:25 +02:00
Søren Theilgaard
cf412bda3c Output label variables in DEBUG log 2022-08-23 16:47:29 +02:00
Søren Theilgaard
a2d2abf4f5 Update checkLabels.sh
Removing these lines again. They don't tell much.
2022-08-23 15:28:57 +02:00
Søren Theilgaard
b238cec2fe Update hyper.sh 2022-08-23 15:11:56 +02:00
Søren Theilgaard
916da6283e Change mathing on archiveName for GitHub. 2022-08-23 15:10:55 +02:00
Søren Theilgaard
1521ade445 bz2 support in checkLabels.sh 2022-08-23 14:35:27 +02:00
Søren Theilgaard
7d1067f379 Update handbrake.sh
Specified the correct binary in the distribution, it would automatically find CLI-version.
2022-08-23 14:05:01 +02:00
Søren Theilgaard
b87c5e1ada Update golang.sh
Different `downloadURL` for architectures. They even call `x86` for `amd`.
2022-08-23 13:56:55 +02:00
Søren Theilgaard
eee730ba9c Update ferdi.sh
Fixed `archiveName` so that `.zip` is expected in the end of the name.
2022-08-23 13:46:35 +02:00
Søren Theilgaard
4db4ab4eef Update drawio.sh
Wrong distribution was found, so had to specify the `archiveName` to expect .dmg to be in the end of the match with a `$` in the RegEx.
2022-08-23 13:42:38 +02:00
Søren Theilgaard
f689f7e10c a fix for how this script detect versions in github
Replaced it with the one from functions.sh
2022-08-23 13:37:30 +02:00
Søren Theilgaard
78cd103121 dangerzone moved to a different user 2022-08-23 13:35:18 +02:00
Sylvain Roche
6db51a0ab1 label screamingfrogspider.sh fix, dmg per arch
ScreamingFrogSpider now has different dmg per CPU arch.
Download page provides 2 dmg links, therefore we must fix downloadURL grep
2022-08-23 12:20:47 +02:00
Søren Theilgaard
c3d6775d27 Update clevershare2.sh 2022-08-23 09:40:31 +02:00
Søren Theilgaard
ee9fe1fd66 Update colourcontrastanalyser.sh 2022-08-23 08:53:39 +02:00
Søren Theilgaard
980fb61afb Update colourcontrastanalyser.sh 2022-08-23 08:52:27 +02:00
Søren Theilgaard
9b029ee174 Fixed colourcontrastanalyser, cryptomator, and dangerzone 2022-08-23 08:43:53 +02:00
speedybutters
f8b82a3c5f Create origin.sh
New label for Origin app.

Couldn't find a way to specify appNewVersion, sorry.

Output:

sudo /Users/user/Documents/GitHub/Installomator/utils/assemble.sh origin DEBUG=0
Password:
2022-08-22 16:29:17 : INFO  : origin : setting variable from argument DEBUG=0
2022-08-22 16:29:17 : REQ   : origin : ################## Start Installomator v. 10.0beta1, date 2022-08-22
2022-08-22 16:29:17 : INFO  : origin : ################## Version: 10.0beta1
2022-08-22 16:29:17 : INFO  : origin : ################## Date: 2022-08-22
2022-08-22 16:29:17 : INFO  : origin : ################## origin
2022-08-22 16:29:17 : INFO  : origin : BLOCKING_PROCESS_ACTION=tell_user
2022-08-22 16:29:17 : INFO  : origin : NOTIFY=success
2022-08-22 16:29:17 : INFO  : origin : LOGGING=INFO
2022-08-22 16:29:18 : INFO  : origin : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-22 16:29:18 : INFO  : origin : Label type: dmg
2022-08-22 16:29:18 : INFO  : origin : archiveName: Origin.dmg
2022-08-22 16:29:18 : INFO  : origin : App(s) found: /Applications/Origin.app
2022-08-22 16:29:18 : INFO  : origin : found app at /Applications/Origin.app, version 10.5.113.50894, on versionKey CFBundleShortVersionString
2022-08-22 16:29:18 : INFO  : origin : appversion: 10.5.113.50894
2022-08-22 16:29:18 : INFO  : origin : Latest version not specified.
2022-08-22 16:29:18 : REQ   : origin : Downloading https://www.dm.origin.com/mac/download/Origin.dmg to Origin.dmg
2022-08-22 16:29:23 : REQ   : origin : no more blocking processes, continue with update
2022-08-22 16:29:23 : REQ   : origin : Installing Origin
2022-08-22 16:29:23 : INFO  : origin : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.ZcXEV9XX/Origin.dmg
2022-08-22 16:29:27 : INFO  : origin : Mounted: /Volumes/Origin
2022-08-22 16:29:27 : INFO  : origin : Verifying: /Volumes/Origin/Origin.app
updateDialog:26: no such file or directory:
2022-08-22 16:29:29 : INFO  : origin : Team ID matching: TSTV75T6Q5 (expected: TSTV75T6Q5 )
2022-08-22 16:29:29 : INFO  : origin : Downloaded version of Origin is 10.5.115.51547 on versionKey CFBundleShortVersionString (replacing version 10.5.113.50894).
2022-08-22 16:29:29 : INFO  : origin : App has LSMinimumSystemVersion: 10.6
2022-08-22 16:29:29 : WARN  : origin : Removing existing /Applications/Origin.app
2022-08-22 16:29:29 : INFO  : origin : Copy /Volumes/Origin/Origin.app to /Applications
2022-08-22 16:29:31 : WARN  : origin : Changing owner to adam
updateDialog:26: no such file or directory:
2022-08-22 16:29:31 : INFO  : origin : Finishing...
2022-08-22 16:29:34 : INFO  : origin : App(s) found: /Applications/Origin.app
2022-08-22 16:29:34 : INFO  : origin : found app at /Applications/Origin.app, version 10.5.115.51547, on versionKey CFBundleShortVersionString
2022-08-22 16:29:34 : REQ   : origin : Installed Origin, version 10.5.115.51547
2022-08-22 16:29:34 : INFO  : origin : notifying
2022-08-22 16:29:34 : INFO  : origin : App not closed, so no reopen.
2022-08-22 16:29:34 : REQ   : origin : All done!
2022-08-22 16:29:34 : REQ   : origin : ################## End Installomator, exit code 0
2022-08-22 16:30:11 +01:00
speedybutters
958cf59a64 Create bitrix24.sh
New label for Bitrix24 app.

Couldn't find a way to specify appNewVersion, sorry.

Output:

sudo /Users/user/Documents/GitHub/Installomator/utils/assemble.sh bitrix24 DEBUG=0
Password:
2022-08-22 16:23:13 : INFO  : bitrix24 : setting variable from argument DEBUG=0
2022-08-22 16:23:13 : REQ   : bitrix24 : ################## Start Installomator v. 10.0beta1, date 2022-08-22
2022-08-22 16:23:13 : INFO  : bitrix24 : ################## Version: 10.0beta1
2022-08-22 16:23:13 : INFO  : bitrix24 : ################## Date: 2022-08-22
2022-08-22 16:23:13 : INFO  : bitrix24 : ################## bitrix24
2022-08-22 16:23:13 : INFO  : bitrix24 : BLOCKING_PROCESS_ACTION=tell_user
2022-08-22 16:23:13 : INFO  : bitrix24 : NOTIFY=success
2022-08-22 16:23:13 : INFO  : bitrix24 : LOGGING=INFO
2022-08-22 16:23:13 : INFO  : bitrix24 : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-22 16:23:13 : INFO  : bitrix24 : Label type: dmg
2022-08-22 16:23:13 : INFO  : bitrix24 : archiveName: bitrix24_desktop.dmg
2022-08-22 16:23:13 : INFO  : bitrix24 : name: Bitrix24, appName: Bitrix24.app
2022-08-22 16:23:13 : WARN  : bitrix24 : No previous app found
2022-08-22 16:23:13 : WARN  : bitrix24 : could not find Bitrix24.app
2022-08-22 16:23:13 : INFO  : bitrix24 : appversion:
2022-08-22 16:23:13 : INFO  : bitrix24 : Latest version not specified.
2022-08-22 16:23:13 : REQ   : bitrix24 : Downloading https://dl.bitrix24.com/b24/bitrix24_desktop.dmg to bitrix24_desktop.dmg
2022-08-22 16:23:18 : REQ   : bitrix24 : no more blocking processes, continue with update
2022-08-22 16:23:18 : REQ   : bitrix24 : Installing Bitrix24
2022-08-22 16:23:18 : INFO  : bitrix24 : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.DrdpdQ4H/bitrix24_desktop.dmg
2022-08-22 16:23:27 : INFO  : bitrix24 : Mounted: /Volumes/Bitrix24 for macOS
2022-08-22 16:23:27 : INFO  : bitrix24 : Verifying: /Volumes/Bitrix24 for macOS/Bitrix24.app
updateDialog:26: no such file or directory:
2022-08-22 16:23:41 : INFO  : bitrix24 : Team ID matching: 5B3T3A994N (expected: 5B3T3A994N )
2022-08-22 16:23:41 : INFO  : bitrix24 : Installing Bitrix24 version 14.0.16 on versionKey CFBundleShortVersionString.
2022-08-22 16:23:41 : INFO  : bitrix24 : App has LSMinimumSystemVersion: 10.11
2022-08-22 16:23:41 : INFO  : bitrix24 : Copy /Volumes/Bitrix24 for macOS/Bitrix24.app to /Applications
2022-08-22 16:23:54 : WARN  : bitrix24 : Changing owner to adam
updateDialog:26: no such file or directory:
2022-08-22 16:23:54 : INFO  : bitrix24 : Finishing...
2022-08-22 16:23:57 : INFO  : bitrix24 : App(s) found: /Applications/Bitrix24.app
2022-08-22 16:23:57 : INFO  : bitrix24 : found app at /Applications/Bitrix24.app, version 14.0.16, on versionKey CFBundleShortVersionString
2022-08-22 16:23:57 : REQ   : bitrix24 : Installed Bitrix24, version 14.0.16
2022-08-22 16:23:57 : INFO  : bitrix24 : notifying
2022-08-22 16:23:58 : INFO  : bitrix24 : App not closed, so no reopen.
2022-08-22 16:23:58 : REQ   : bitrix24 : All done!
2022-08-22 16:23:58 : REQ   : bitrix24 : ################## End Installomator, exit code 0
2022-08-22 16:25:12 +01:00
Søren Theilgaard
84da5ac168 Update alephone.sh 2022-08-22 11:43:13 +02:00
Liam Steckler
faffd059db Add newline at end of file 2022-08-19 09:10:52 -07:00
Liam Steckler
d864c8e410 Add splashtopbusiness label 2022-08-19 09:07:52 -07:00
Søren Theilgaard
a8ba97b87e One $ too many 2022-08-19 15:08:42 +02:00
Søren Theilgaard
25c39caafc Also without archiveName
… do we only need on line result.

So `tail -1` has been added to the other part as well.

Several labels failed in test.
2022-08-19 15:07:44 +02:00
Søren Theilgaard
9c155d3fed WIth archiveName 2022-08-19 14:30:41 +02:00
Søren Theilgaard
780bc3924b Minor change if archiveName is used
Only return the last URL, if more lines are returned on the `archiveName` grep.
2022-08-19 14:30:29 +02:00
Søren Theilgaard
759974f051 cocoapods labels 2022-08-19 14:13:41 +02:00
Søren Theilgaard
cd441c88d9 bz2 support
as tbz.
2022-08-19 14:13:31 +02:00
Søren Theilgaard
de55a96e9c bz2 support 2022-08-19 14:09:46 +02:00
Søren Theilgaard
dcfd7d8328 More Dialog messages 2022-08-19 11:19:12 +02:00
Søren Theilgaard
7bf47ff9e5 Dialog update when app is already at the latest version
Not sure I use the correct values in the `updateDialog` call, but it works fine.
2022-08-19 11:10:04 +02:00
Fletcher Salesky
3d3114515a Create zoomoutlookplugin.sh 2022-08-17 15:28:26 -07:00
Fletcher Salesky
f124e2321b Create egnytecore.sh 2022-08-17 11:23:48 -07:00
Søren Theilgaard
a3db297935 archiveName had to be used.
```
% /Users/st/Documents/GitHub/Installomator-theile/utils/assemble.sh mongodbcompass DEBUG=2
2022-08-17 09:22:32 : INFO  : mongodbcompass : setting variable from argument DEBUG=2
2022-08-17 09:22:32 : REQ   : mongodbcompass : ################## Start Installomator v. 10.0beta1, date 2022-08-17
2022-08-17 09:22:32 : INFO  : mongodbcompass : ################## Version: 10.0beta1
2022-08-17 09:22:32 : INFO  : mongodbcompass : ################## Date: 2022-08-17
2022-08-17 09:22:32 : INFO  : mongodbcompass : ################## mongodbcompass
2022-08-17 09:22:32 : DEBUG : mongodbcompass : DEBUG mode 2 enabled.
2022-08-17 09:22:35 : INFO  : mongodbcompass : BLOCKING_PROCESS_ACTION=tell_user
2022-08-17 09:22:35 : INFO  : mongodbcompass : NOTIFY=success
2022-08-17 09:22:35 : INFO  : mongodbcompass : LOGGING=DEBUG
2022-08-17 09:22:35 : INFO  : mongodbcompass : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-17 09:22:35 : INFO  : mongodbcompass : Label type: dmg
2022-08-17 09:22:35 : INFO  : mongodbcompass : archiveName: mongodb-compass-[0-9.]*-darwin-x64.dmg
2022-08-17 09:22:35 : INFO  : mongodbcompass : no blocking processes defined, using MongoDB Compass as default
2022-08-17 09:22:35 : DEBUG : mongodbcompass : Changing directory to /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.lH2tEMCm
2022-08-17 09:22:35 : INFO  : mongodbcompass : name: MongoDB Compass, appName: MongoDB Compass.app
2022-08-17 09:22:35 : WARN  : mongodbcompass : No previous app found
2022-08-17 09:22:35 : WARN  : mongodbcompass : could not find MongoDB Compass.app
2022-08-17 09:22:35 : INFO  : mongodbcompass : appversion:
2022-08-17 09:22:35 : INFO  : mongodbcompass : Latest version of MongoDB Compass is 1.32.6
2022-08-17 09:22:35 : REQ   : mongodbcompass : Downloading https://github.com/mongodb-js/compass/releases/download/v1.32.6/mongodb-compass-1.32.6-darwin-x64.dmg to mongodb-compass-[0-9.]*-darwin-x64.dmg
2022-08-17 09:22:35 : DEBUG : mongodbcompass : No Dialog connection, just download
2022-08-17 09:23:05 : DEBUG : mongodbcompass : File list: -rw-r--r--  1 st  staff   105M 17 Aug 09:23 mongodb-compass-[0-9.]*-darwin-x64.dmg
2022-08-17 09:23:05 : DEBUG : mongodbcompass : File type: mongodb-compass-[0-9.]*-darwin-x64.dmg: zlib compressed data
2022-08-17 09:23:05 : DEBUG : mongodbcompass : curl output was:
*   Trying 140.82.121.3:443...
* Connected to github.com (140.82.121.3) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [315 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [2459 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=GitHub, Inc.; CN=github.com
*  start date: Mar 15 00:00:00 2022 GMT
*  expire date: Mar 15 23:59:59 2023 GMT
*  subjectAltName: host "github.com" matched cert's "github.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS Hybrid ECC SHA384 2020 CA1
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x142012c00)
> GET /mongodb-js/compass/releases/download/v1.32.6/mongodb-compass-1.32.6-darwin-x64.dmg HTTP/2
> Host: github.com
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 302
< server: GitHub.com
< date: Wed, 17 Aug 2022 07:22:36 GMT
< content-type: text/html; charset=utf-8
< vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With
< permissions-policy: interest-cohort=()
< location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/31547508/5fee7e2d-c3c9-4050-ba74-3892430d8a44?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220817%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220817T072235Z&X-Amz-Expires=300&X-Amz-Signature=2a550fc170267b51db8bcd950adde582106a9960e884920427cc94179d3f7a52&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=31547508&response-content-disposition=attachment%3B%20filename%3Dmongodb-compass-1.32.6-darwin-x64.dmg&response-content-type=application%2Foctet-stream
< cache-control: no-cache
< strict-transport-security: max-age=31536000; includeSubdomains; preload
< x-frame-options: deny
< x-content-type-options: nosniff
< x-xss-protection: 0
< referrer-policy: no-referrer-when-downgrade
< expect-ct: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
< content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com objects-origin.githubusercontent.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events *.actions.githubusercontent.com wss://*.actions.githubusercontent.com online.visualstudio.com/api/v1/locations github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src render.githubusercontent.com viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: github.githubassets.com identicons.github.com github-cloud.s3.amazonaws.com secured-user-images.githubusercontent.com/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/
< content-length: 0
< x-github-request-id: D389:9E70:5C847:B141B:62FC973B
<
{ [0 bytes data]
* Connection #0 to host github.com left intact
* Issue another request to this URL: 'https://objects.githubusercontent.com/github-production-release-asset-2e65be/31547508/5fee7e2d-c3c9-4050-ba74-3892430d8a44?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220817%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220817T072235Z&X-Amz-Expires=300&X-Amz-Signature=2a550fc170267b51db8bcd950adde582106a9960e884920427cc94179d3f7a52&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=31547508&response-content-disposition=attachment%3B%20filename%3Dmongodb-compass-1.32.6-darwin-x64.dmg&response-content-type=application%2Foctet-stream'
*   Trying 185.199.108.133:443...
* Connected to objects.githubusercontent.com (185.199.108.133) port 443 (#1)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [334 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [3051 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=GitHub, Inc.; CN=*.github.io
*  start date: Mar 18 00:00:00 2022 GMT
*  expire date: Mar 21 23:59:59 2023 GMT
*  subjectAltName: host "objects.githubusercontent.com" matched cert's "*.githubusercontent.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS RSA SHA256 2020 CA1
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x142012c00)
> GET /github-production-release-asset-2e65be/31547508/5fee7e2d-c3c9-4050-ba74-3892430d8a44?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220817%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220817T072235Z&X-Amz-Expires=300&X-Amz-Signature=2a550fc170267b51db8bcd950adde582106a9960e884920427cc94179d3f7a52&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=31547508&response-content-disposition=attachment%3B%20filename%3Dmongodb-compass-1.32.6-darwin-x64.dmg&response-content-type=application%2Foctet-stream HTTP/2
> Host: objects.githubusercontent.com
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 200
< content-type: application/octet-stream
< content-md5: YVXRK4TfSa4JKJtuG+byVg==
< last-modified: Thu, 04 Aug 2022 13:18:01 GMT
< etag: "0x8DA761BC2004D97"
< server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
< x-ms-request-id: f21174ed-101e-0038-630a-b286a5000000
< x-ms-version: 2020-04-08
< x-ms-creation-time: Thu, 04 Aug 2022 13:18:01 GMT
< x-ms-lease-status: unlocked
< x-ms-lease-state: available
< x-ms-blob-type: BlockBlob
< content-disposition: attachment; filename=mongodb-compass-1.32.6-darwin-x64.dmg
< x-ms-server-encrypted: true
< fastly-restarts: 1
< accept-ranges: bytes
< age: 0
< date: Wed, 17 Aug 2022 07:22:36 GMT
< via: 1.1 varnish
< x-served-by: cache-cph2320026-CPH
< x-cache: MISS
< x-cache-hits: 0
< x-timer: S1660720956.256578,VS0,VE286
< content-length: 109941343
<
{ [1369 bytes data]
* Connection #1 to host objects.githubusercontent.com left intact

2022-08-17 09:23:05 : REQ   : mongodbcompass : no more blocking processes, continue with update
2022-08-17 09:23:05 : REQ   : mongodbcompass : Installing MongoDB Compass
2022-08-17 09:23:05 : INFO  : mongodbcompass : Mounting /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.lH2tEMCm/mongodb-compass-[0-9.]*-darwin-x64.dmg
2022-08-17 09:23:10 : DEBUG : mongodbcompass : Debugging enabled, dmgmount output was:
Beregner checksum af Protective Master Boot Record (MBR : 0)…
Protective Master Boot Record (MBR :: kontrolleret   CRC32 $CE7C9421
Beregner checksum af GPT Header (Primary GPT Header : 1)…
GPT Header (Primary GPT Header : 1): kontrolleret   CRC32 $B0665E30
Beregner checksum af GPT Partition Data (Primary GPT Table : 2)…
GPT Partition Data (Primary GPT Tabl: kontrolleret   CRC32 $554080CE
Beregner checksum af  (Apple_Free : 3)…
(Apple_Free : 3): kontrolleret   CRC32 $00000000
Beregner checksum af disk image (Apple_HFS : 4)…
disk image (Apple_HFS : 4): kontrolleret   CRC32 $B7372FDD
Beregner checksum af  (Apple_Free : 5)…
(Apple_Free : 5): kontrolleret   CRC32 $00000000
Beregner checksum af GPT Partition Data (Backup GPT Table : 6)…
GPT Partition Data (Backup GPT Table: kontrolleret   CRC32 $554080CE
Beregner checksum af GPT Header (Backup GPT Header : 7)…
GPT Header (Backup GPT Header : 7): kontrolleret   CRC32 $412D19E4
kontrolleret   CRC32 $985F83BF
/dev/disk5          	GUID_partition_scheme
/dev/disk5s1        	Apple_HFS                      	/Volumes/MongoDB Compass

2022-08-17 09:23:10 : INFO  : mongodbcompass : Mounted: /Volumes/MongoDB Compass
2022-08-17 09:23:10 : INFO  : mongodbcompass : Verifying: /Volumes/MongoDB Compass/MongoDB Compass.app
updateDialog:26: no such file or directory:
2022-08-17 09:23:10 : DEBUG : mongodbcompass : App size: 267M	/Volumes/MongoDB Compass/MongoDB Compass.app
2022-08-17 09:23:12 : DEBUG : mongodbcompass : Debugging enabled, App Verification output was:
/Volumes/MongoDB Compass/MongoDB Compass.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: MongoDB, Inc. (4XWMY46275)

2022-08-17 09:23:12 : INFO  : mongodbcompass : Team ID matching: 4XWMY46275 (expected: 4XWMY46275 )
2022-08-17 09:23:12 : INFO  : mongodbcompass : Installing MongoDB Compass version 1.32.6 on versionKey CFBundleShortVersionString.
2022-08-17 09:23:12 : INFO  : mongodbcompass : App has LSMinimumSystemVersion: 10.11.0
2022-08-17 09:23:12 : DEBUG : mongodbcompass : DEBUG mode 2 enabled, not installing anything, exiting
2022-08-17 09:23:12 : DEBUG : mongodbcompass : Unmounting /Volumes/MongoDB Compass
2022-08-17 09:23:12 : DEBUG : mongodbcompass : Debugging enabled, Unmounting output was:
"disk5" ejected.
2022-08-17 09:23:12 : DEBUG : mongodbcompass : Deleting /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.lH2tEMCm
2022-08-17 09:23:12 : DEBUG : mongodbcompass : Debugging enabled, Deleting tmpDir output was:
/var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.lH2tEMCm/mongodb-compass-[0-9.]*-darwin-x64.dmg
2022-08-17 09:23:12 : DEBUG : mongodbcompass : /var/folders/gy/vrjt7sl52t9ghzn1lnttjtg40000gp/T/tmp.lH2tEMCm
2022-08-17 09:23:12 : INFO  : mongodbcompass : App not closed, so no reopen.
2022-08-17 09:23:12 : INFO  : mongodbcompass :
2022-08-17 09:23:12 : REQ   : mongodbcompass : ################## End Installomator, exit code 0
```
2022-08-17 09:26:30 +02:00
Søren Theilgaard
cfa05aa902 Create mongodbcompass.sh 2022-08-17 09:14:32 +02:00
Mike Matter
87cdb11039 Workspace ONE Support
Revised PR for Workspace ONE support.
2022-08-16 15:18:04 -05:00
Armin Briegel
b44fe47bf0 moved label from repo root to proper folder, see #651 2022-08-16 16:19:40 +02:00
Armin Briegel
0d3831d074 Update Installomator.sh 2022-08-16 16:16:55 +02:00
Adam Codega
834780a294 Merge pull request #651 from Installomator/revert-541-NewLabel-GoogleAdsEditor
Revert "New label: Google Ads Editor"
2022-08-16 09:17:35 -04:00
Adam Codega
7f0ba6d690 Revert "New label: Google Ads Editor" 2022-08-16 09:16:35 -04:00
Armin Briegel
f28f24b0cd Merge branch 'main' of github.com:Installomator/Installomator 2022-08-12 17:05:55 +02:00
Armin Briegel
b210d94b0c Merge branch 'main' into dev 2022-08-12 17:04:50 +02:00
Armin Briegel
e7c72349d0 preparing for 10beta1 release 2022-08-12 17:01:34 +02:00
Armin Briegel
58ee21152c Merge pull request #641 from scriptingosx/swiftdialog
swiftDialog Integration
2022-08-12 16:35:40 +02:00
Armin Briegel
d46ee662cd Merge pull request #645 from scriptingosx/vmware-horizon
updates vmwarehorizonclient
2022-08-12 16:34:41 +02:00
Armin Briegel
d5cbee8cb7 Merge pull request #643 from scriptingosx/exitcodes
updated redundant exit codes
2022-08-12 16:34:22 +02:00
Armin Briegel
f07a77de33 Merge pull request #576 from unfo33/patch-1
Update grammarly.sh
2022-08-12 16:32:31 +02:00
Armin Briegel
cfffd74cca Merge pull request #585 from FletcherS7/update-wireshark-label
Update Wireshark download URL
2022-08-12 16:32:02 +02:00
Armin Briegel
b7b7958137 Merge pull request #563 from FletcherS7/update-google-drive-label
Update Google Drive Label
2022-08-12 16:30:33 +02:00
Armin Briegel
fb5e7ea2b4 Merge pull request #548 from FletcherS7/label-duodevicehealth
New Label: Duo Device Health
2022-08-12 16:29:38 +02:00
Armin Briegel
819e812726 Merge pull request #545 from buckbanzai/add-ipswupdater
Add ipswupdater label using JSON parsing
2022-08-12 16:29:13 +02:00
Armin Briegel
30e63cecc7 Merge pull request #541 from MacMike077/NewLabel-GoogleAdsEditor
New label: Google Ads Editor
2022-08-12 16:28:35 +02:00
Armin Briegel
d259228aa1 Merge pull request #538 from MacMike077/NewLabel-Prune
Create prune.sh
2022-08-12 16:28:08 +02:00
Armin Briegel
78e4a8a5cb Merge pull request #536 from buckbanzai/talkdeskcallbar-jxa-json
Update talkdeskcallbar to use JSON parsing
2022-08-12 16:27:50 +02:00
Armin Briegel
c2fbc23396 Merge pull request #537 from buckbanzai/talkdeskcxcloud-jxa-json
Update talkdeskcxcloud to use JSON parsing
2022-08-12 16:27:28 +02:00
Armin Briegel
d02b2e6198 updates vmwarehorizonclient, closes #511 2022-08-12 16:22:53 +02:00
Armin Briegel
75fb56f9a5 Merge pull request #593 from mrazishere/patch-1
Update sublimetext.sh
2022-08-12 16:12:36 +02:00
Armin Briegel
a00997ef46 Merge pull request #543 from Installomator/GitHub-calls-without-API
GitHub without API calls
2022-08-12 14:56:12 +02:00
Armin Briegel
77a3bdeb8e Merge pull request #473 from scriptsandthings/dev
Added BlueJeans Events by Verizon label
2022-08-12 14:54:13 +02:00
Armin Briegel
46d47bc60f Merge pull request #493 from acodega/acodega-AgnosticInstall
Add simple, no prerequisite install script installInstallomator.sh
2022-08-12 14:48:30 +02:00
Armin Briegel
1477457155 updated redundant exit codes, closes #561
See also: https://github.com/Installomator/Installomator/wiki/Installomator-Exit-Codes
2022-08-12 13:47:44 +02:00
Søren Theilgaard
45112e3f32 Create xcreds.sh
## Great solution for IdP Password Syncing by TwoCanoes!

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

```
% GitHub/Installomator/utils/assemble.sh xcreds DEBUG=0
2022-08-12 09:25:38 : WARN  : xcreds : setting variable from argument DEBUG=0
2022-08-12 09:25:38 : REQ   : xcreds : ################## Start Installomator v. 10.0beta, date 2022-08-12
2022-08-12 09:25:38 : INFO  : xcreds : ################## Version: 10.0beta
2022-08-12 09:25:38 : INFO  : xcreds : ################## Date: 2022-08-12
2022-08-12 09:25:38 : INFO  : xcreds : ################## xcreds
2022-08-12 09:25:38 : INFO  : xcreds : BLOCKING_PROCESS_ACTION=tell_user
2022-08-12 09:25:38 : INFO  : xcreds : NOTIFY=success
2022-08-12 09:25:38 : INFO  : xcreds : LOGGING=INFO
2022-08-12 09:25:38 : INFO  : xcreds : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-12 09:25:38 : INFO  : xcreds : Label type: pkg
2022-08-12 09:25:38 : INFO  : xcreds : archiveName: XCreds.pkg
2022-08-12 09:25:38 : INFO  : xcreds : no blocking processes defined, using XCreds as default
2022-08-12 09:25:38 : INFO  : xcreds : No version found using packageID com.twocanoes.pkg.secureremoteaccess
2022-08-12 09:25:38 : INFO  : xcreds : name: XCreds, appName: XCreds.app
2022-08-12 09:25:38 : WARN  : xcreds : No previous app found
2022-08-12 09:25:38 : WARN  : xcreds : could not find XCreds.app
2022-08-12 09:25:38 : INFO  : xcreds : appversion:
2022-08-12 09:25:38 : INFO  : xcreds : Latest version of XCreds is 1.0.0
2022-08-12 09:25:38 : REQ   : xcreds : Downloading https://github.com/twocanoes/xcreds/releases/download/v1.0.0/XCreds_1_0_0_Build-1272_Version.pkg to XCreds.pkg
2022-08-12 09:25:39 : REQ   : xcreds : no more blocking processes, continue with update
2022-08-12 09:25:39 : REQ   : xcreds : Installing XCreds
2022-08-12 09:25:39 : INFO  : xcreds : Verifying: XCreds.pkg
2022-08-12 09:25:39 : INFO  : xcreds : Team ID: UXP6YEHSPW (expected: UXP6YEHSPW )
2022-08-12 09:25:39 : INFO  : xcreds : Installing XCreds.pkg to /
2022-08-12 09:25:42 : INFO  : xcreds : Finishing...
2022-08-12 09:25:52 : INFO  : xcreds : found packageID com.twocanoes.pkg.secureremoteaccess installed, version 1.2
2022-08-12 09:25:52 : REQ   : xcreds : Installed XCreds, version 1.2
2022-08-12 09:25:52 : INFO  : xcreds : notifying
2022-08-12 09:25:52 : INFO  : xcreds : App not closed, so no reopen.
2022-08-12 09:25:52 : REQ   : xcreds : All done!
2022-08-12 09:25:52 : REQ   : xcreds : ################## End Installomator, exit code 0
```
2022-08-12 09:31:04 +02:00
Armin Briegel
ef19aa28fe added a sleep before the killall to give SD time to quit 2022-08-11 16:54:04 +02:00
Armin Briegel
614da59311 removed --ontop because it hogs the UI on updates 2022-08-11 16:53:39 +02:00
Armin Briegel
dff9dd5a03 fixed typo 2022-08-11 15:01:59 +02:00
Armin Briegel
cc5326ce24 more cleanup and comments 2022-08-11 14:15:50 +02:00
Armin Briegel
0656aa67e3 code cleanup 2022-08-11 14:05:45 +02:00
Armin Briegel
8862c4a1e7 added ReadMe 2022-08-11 14:05:39 +02:00
Armin Briegel
52a9117de8 added sample policy scripts 2022-08-11 13:13:57 +02:00
Armin Briegel
e1ad0c0132 fixed logic error and added --mini window for dialog 2022-08-10 14:54:51 +02:00
Armin Briegel
92a4c4f3cb fixed dialog check 2022-08-03 10:46:47 +02:00
Armin Briegel
629aa22017 added single app example for SwiftDialog 2022-08-03 09:02:38 +02:00
Armin Briegel
a094ffca67 now shows verifying step, code cleanup 2022-08-02 17:04:35 +02:00
Armin Briegel
719ca81bcb fixed wrong status icons 2022-08-02 16:51:56 +02:00
Armin Briegel
a308ccbc29 code cleanup 2022-08-02 14:51:18 +02:00
dnikles
ddf5e6da29 use getJSONValue
replace sed json parsing with getJSONValue
2022-08-01 13:28:26 -04:00
dnikles
9b5f408c8f Merge branch 'Installomator:main' into cricutdesignspace 2022-08-01 12:42:09 -04:00
Armin Briegel
1d49c08344 now displays installer progress in list and main 2022-08-01 14:44:51 +02:00
dnikles
32c0cba0f2 Fix download URL
2022-08-01 08:09:07 : WARN  : cricutdesignspace : setting variable from argument DEBUG=0
2022-08-01 08:09:07 : WARN  : cricutdesignspace : setting variable from argument INSTALL=FORCE
2022-08-01 08:09:07 : REQ   : cricutdesignspace : ################## Start Installomator v. 10.0beta, date 2022-08-01
2022-08-01 08:09:07 : INFO  : cricutdesignspace : ################## Version: 10.0beta
2022-08-01 08:09:07 : INFO  : cricutdesignspace : ################## Date: 2022-08-01
2022-08-01 08:09:07 : INFO  : cricutdesignspace : ################## cricutdesignspace
2022-08-01 08:09:07 : INFO  : cricutdesignspace : BLOCKING_PROCESS_ACTION=tell_user
2022-08-01 08:09:07 : INFO  : cricutdesignspace : NOTIFY=success
2022-08-01 08:09:08 : INFO  : cricutdesignspace : LOGGING=INFO
2022-08-01 08:09:08 : INFO  : cricutdesignspace : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-01 08:09:08 : INFO  : cricutdesignspace : Label type: dmg
2022-08-01 08:09:08 : INFO  : cricutdesignspace : archiveName: Cricut Design Space.dmg
2022-08-01 08:09:08 : INFO  : cricutdesignspace : no blocking processes defined, using Cricut Design Space as default
2022-08-01 08:09:08 : INFO  : cricutdesignspace : name: Cricut Design Space, appName: Cricut Design Space.app
2022-08-01 08:09:08 : WARN  : cricutdesignspace : No previous app found
2022-08-01 08:09:08 : WARN  : cricutdesignspace : could not find Cricut Design Space.app
2022-08-01 08:09:08 : INFO  : cricutdesignspace : appversion:
2022-08-01 08:09:08 : INFO  : cricutdesignspace : Latest version of Cricut Design Space is 7.13.105
2022-08-01 08:09:08 : REQ   : cricutdesignspace : Downloading https://staticcontent.cricut.com/a/software-su/osx-native/CricutDesignSpace-Install-v7.13.105.dmg?Expires=1659356347&Signature=BlbBAkkEVQCEriXctLh526YzkJFGAEw85lAp30VW3YsjM135dLYVtk0SzPKOCZwVOFD0Dj6H6JgKCH-ZyGt-kCih93IMhAclNPkxWWvCPUDMNgk9KR201OarloRoW8RgDfotP-q9pRkH8xbnBIQXfL2ogxeNDKA00eNazmUJJ7EqjGIwG7CFM3MUVaIaZiqBcpn1wo7aXvdvsY0y066RMRhA8RsTTKTBilc6z8Ah7TnTZZQLVtf9pgpCwNXk6L6eyoapXbnikkJW4gZqx1o7rKSatLsi7jj48LAi-LQprIfykt-dBP7wUFl0SKcQCuad~XB0Nh0qeUoTQXbjrS5Znw__&Key-Pair-Id=K2W1AJ47IQWIOI to Cricut Design Space.dmg
2022-08-01 08:09:14 : REQ   : cricutdesignspace : no more blocking processes, continue with update
2022-08-01 08:09:14 : REQ   : cricutdesignspace : Installing Cricut Design Space
2022-08-01 08:09:14 : INFO  : cricutdesignspace : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.vbh4immF/Cricut Design Space.dmg
2022-08-01 08:09:17 : INFO  : cricutdesignspace : Mounted: /Volumes/Cricut Design Space Install
2022-08-01 08:09:17 : INFO  : cricutdesignspace : Verifying: /Volumes/Cricut Design Space Install/Cricut Design Space.app
2022-08-01 08:09:18 : INFO  : cricutdesignspace : Team ID matching: 25627ZFVT7 (expected: 25627ZFVT7 )
2022-08-01 08:09:18 : INFO  : cricutdesignspace : Installing Cricut Design Space version 7.13.105 on versionKey CFBundleShortVersionString.
2022-08-01 08:09:18 : INFO  : cricutdesignspace : App has LSMinimumSystemVersion: 10.11.0
2022-08-01 08:09:18 : INFO  : cricutdesignspace : Copy /Volumes/Cricut Design Space Install/Cricut Design Space.app to /Applications
2022-08-01 08:09:19 : WARN  : cricutdesignspace : Changing owner to dnikles
2022-08-01 08:09:19 : INFO  : cricutdesignspace : Finishing...
2022-08-01 08:09:29 : INFO  : cricutdesignspace : App(s) found: /Applications/Cricut Design Space.app
2022-08-01 08:09:29 : INFO  : cricutdesignspace : found app at /Applications/Cricut Design Space.app, version 7.13.105, on versionKey CFBundleShortVersionString
2022-08-01 08:09:29 : REQ   : cricutdesignspace : Installed Cricut Design Space, version 7.13.105
2022-08-01 08:09:29 : INFO  : cricutdesignspace : notifying
2022-08-01 08:09:30 : INFO  : cricutdesignspace : App not closed, so no reopen.
2022-08-01 08:09:30 : REQ   : cricutdesignspace : All done!
2022-08-01 08:09:30 : REQ   : cricutdesignspace : ################## End Installomator, exit code 0
2022-08-01 08:10:20 -04:00
Armin Briegel
4905091908 list item update working with swiftdialog Alpha 1.12.0.3169 2022-08-01 08:39:03 +02:00
Armin Briegel
720128f23a does not download swiftui if it is already there 2022-07-29 19:34:21 +02:00
Armin Briegel
19e59fc36c created swiftdialog_example.sh 2022-07-29 18:47:51 +02:00
Armin Briegel
0063c0e025 created swiftdialog_example.sh 2022-07-29 18:47:28 +02:00
Armin Briegel
ef3113a05f changed variable names to match standards 2022-07-29 15:20:22 +02:00
Fredrik Larsson
0460aa2724 Created Zotero label
Output:
```
2022-07-29 08:44:17 : WARN  : zotero : setting variable from argument DEBUG=0
2022-07-29 08:44:17 : REQ   : zotero : ################## Start Installomator v. 10.0beta, date 2022-07-29
2022-07-29 08:44:17 : INFO  : zotero : ################## Version: 10.0beta
2022-07-29 08:44:17 : INFO  : zotero : ################## Date: 2022-07-29
2022-07-29 08:44:17 : INFO  : zotero : ################## zotero
2022-07-29 08:44:18 : INFO  : zotero : BLOCKING_PROCESS_ACTION=tell_user
2022-07-29 08:44:19 : INFO  : zotero : NOTIFY=success
2022-07-29 08:44:19 : INFO  : zotero : LOGGING=INFO
2022-07-29 08:44:19 : INFO  : zotero : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-29 08:44:19 : INFO  : zotero : Label type: dmg
2022-07-29 08:44:19 : INFO  : zotero : archiveName: Zotero.dmg
2022-07-29 08:44:19 : INFO  : zotero : no blocking processes defined, using Zotero as default
2022-07-29 08:44:19 : INFO  : zotero : name: Zotero, appName: Zotero.app
2022-07-29 08:44:19 : WARN  : zotero : No previous app found
2022-07-29 08:44:19 : WARN  : zotero : could not find Zotero.app
2022-07-29 08:44:19 : INFO  : zotero : appversion:
2022-07-29 08:44:19 : INFO  : zotero : Latest version of Zotero is 6.0.11
2022-07-29 08:44:19 : REQ   : zotero : Downloading https://www.zotero.org/download/client/dl?channel=release&platform=mac&version=6.0.11 to Zotero.dmg
2022-07-29 08:44:22 : REQ   : zotero : no more blocking processes, continue with update
2022-07-29 08:44:22 : REQ   : zotero : Installing Zotero
2022-07-29 08:44:22 : INFO  : zotero : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.2kvEQHFJ/Zotero.dmg
2022-07-29 08:44:26 : INFO  : zotero : Mounted: /Volumes/Zotero
2022-07-29 08:44:26 : INFO  : zotero : Verifying: /Volumes/Zotero/Zotero.app
2022-07-29 08:44:32 : INFO  : zotero : Team ID matching: 8LAYR367YV (expected: 8LAYR367YV )
2022-07-29 08:44:32 : INFO  : zotero : Installing Zotero version 6.0.11 on versionKey CFBundleShortVersionString.
2022-07-29 08:44:32 : INFO  : zotero : App has LSMinimumSystemVersion: 10.9.0
2022-07-29 08:44:32 : INFO  : zotero : Copy /Volumes/Zotero/Zotero.app to /Applications
2022-07-29 08:44:39 : WARN  : zotero : Changing owner to kryptonit
2022-07-29 08:44:39 : INFO  : zotero : Finishing...
2022-07-29 08:44:49 : INFO  : zotero : App(s) found: /Applications/Zotero.app
2022-07-29 08:44:49 : INFO  : zotero : found app at /Applications/Zotero.app, version 6.0.11, on versionKey CFBundleShortVersionString
2022-07-29 08:44:49 : REQ   : zotero : Installed Zotero, version 6.0.11
2022-07-29 08:44:49 : INFO  : zotero : notifying
2022-07-29 08:44:50 : INFO  : zotero : App not closed, so no reopen.
2022-07-29 08:44:50 : REQ   : zotero : All done!
2022-07-29 08:44:50 : REQ   : zotero : ################## End Installomator, exit code 0
```
2022-07-29 08:48:27 +02:00
Fletcher Salesky
2a1b7056c9 Create nudgesuite.sh 2022-07-28 11:19:42 -07:00
Bart Reardon
dfe9860848 fixed doubleup of value. added dialog complete action to cleanup tasks 2022-07-26 14:00:13 +10:00
Bart Reardon
84e0d5d263 playing with the look of the dialog 2022-07-26 13:12:15 +10:00
Bart Reardon
18638141b6 Initial go at integrating swiftDialog into Installomator to give progress of downoad and install of applications 2022-07-26 12:26:56 +10:00
macmangr
d0d3510689 New Label: Archiware P5 Backup2Go
"P5 Backup2Go is the ideal tool to backup workstations – regardless of their location.

In the office, on the road or at home, P5 works cross-platform and allows mobile backups of laptops and desktops on central disk storage."

sudo ./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels awb2go NOTIFY=silent DEBUG=0
2022-07-13 18:11:07 : WARN  : awb2go : setting variable from argument NOTIFY=silent
2022-07-13 18:11:07 : WARN  : awb2go : setting variable from argument DEBUG=0
2022-07-13 18:11:07 : REQ   : awb2go : ################## Start Installomator v. 10.0beta, date 2022-07-13
2022-07-13 18:11:07 : INFO  : awb2go : ################## Version: 10.0beta
2022-07-13 18:11:07 : INFO  : awb2go : ################## Date: 2022-07-13
2022-07-13 18:11:07 : INFO  : awb2go : ################## awb2go
2022-07-13 18:11:07 : INFO  : awb2go : BLOCKING_PROCESS_ACTION=tell_user
2022-07-13 18:11:07 : INFO  : awb2go : NOTIFY=silent
2022-07-13 18:11:07 : INFO  : awb2go : LOGGING=INFO
2022-07-13 18:11:07 : INFO  : awb2go : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-13 18:11:07 : INFO  : awb2go : Label type: pkgInDmg
2022-07-13 18:11:07 : INFO  : awb2go : archiveName: P5 Workstation.dmg
2022-07-13 18:11:07 : INFO  : awb2go : no blocking processes defined, using P5 Workstation as default
2022-07-13 18:11:08 : INFO  : awb2go : found packageID com.archiware.presstore installed, version 7.0.6
2022-07-13 18:11:08 : INFO  : awb2go : appversion: 7.0.6
2022-07-13 18:11:08 : INFO  : awb2go : Latest version of P5 Workstation is 7.0.7
2022-07-13 18:11:08 : REQ   : awb2go : Downloading https://p5-downloads.s3.amazonaws.com/awpst707-darwin.dmg to P5 Workstation.dmg
2022-07-13 18:11:27 : REQ   : awb2go : no more blocking processes, continue with update
2022-07-13 18:11:27 : REQ   : awb2go : Installing P5 Workstation
2022-07-13 18:11:27 : INFO  : awb2go : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.Lw7ac9Pw/P5 Workstation.dmg
2022-07-13 18:11:28 : INFO  : awb2go : Mounted: /Volumes/P5-707
2022-07-13 18:11:28 : INFO  : awb2go : found pkg: /Volumes/P5-707/B2Go-Workstation/P5-Workstation-707-Install.pkg
2022-07-13 18:11:28 : INFO  : awb2go : Verifying: /Volumes/P5-707/B2Go-Workstation/P5-Workstation-707-Install.pkg
2022-07-13 18:11:28 : INFO  : awb2go : Team ID: 5H5EU6F965 (expected: 5H5EU6F965 )
2022-07-13 18:11:28 : INFO  : awb2go : Checking package version.
2022-07-13 18:11:28 : INFO  : awb2go : Downloaded package com.archiware.presstore version
2022-07-13 18:11:28 : INFO  : awb2go : Installing /Volumes/P5-707/B2Go-Workstation/P5-Workstation-707-Install.pkg to /
2022-07-13 18:12:01 : INFO  : awb2go : Finishing...
2022-07-13 18:12:11 : INFO  : awb2go : found packageID com.archiware.presstore installed, version 7.0.7
2022-07-13 18:12:11 : REQ   : awb2go : Installed P5 Workstation, version 7.0.7
2022-07-13 18:12:12 : INFO  : awb2go : App not closed, so no reopen.
2022-07-13 18:12:12 : REQ   : awb2go : All done!
2022-07-13 18:12:12 : REQ   : awb2go : ################## End Installomator, exit code 0
2022-07-13 18:14:42 +02:00
macmangr
e4cff5821d New Label: Archiware P5
"Archiware's P5 Software Suite is ideal for businesses in the Media and Entertainment industry.
Four modules in the Archiware P5 Suite secure data using the A-B-C of data management: Archive, Backup and Cloning.
All modules can be combined to create multiple-step security concepts to achieve maximum data protection.
Archiware P5 secures data to disk, tape and cloud and has integrations with numerous partners."

sudo ./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels awpst NOTIFY=silent DEBUG=0
Password:
2022-07-13 17:46:07 : WARN  : awpst : setting variable from argument NOTIFY=silent
2022-07-13 17:46:07 : WARN  : awpst : setting variable from argument DEBUG=0
2022-07-13 17:46:07 : REQ   : awpst : ################## Start Installomator v. 10.0beta, date 2022-07-13
2022-07-13 17:46:07 : INFO  : awpst : ################## Version: 10.0beta
2022-07-13 17:46:07 : INFO  : awpst : ################## Date: 2022-07-13
2022-07-13 17:46:07 : INFO  : awpst : ################## awpst
2022-07-13 17:46:07 : INFO  : awpst : BLOCKING_PROCESS_ACTION=tell_user
2022-07-13 17:46:07 : INFO  : awpst : NOTIFY=silent
2022-07-13 17:46:07 : INFO  : awpst : LOGGING=INFO
2022-07-13 17:46:07 : INFO  : awpst : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-13 17:46:07 : INFO  : awpst : Label type: pkgInDmg
2022-07-13 17:46:07 : INFO  : awpst : archiveName: P5.dmg
2022-07-13 17:46:07 : INFO  : awpst : no blocking processes defined, using P5 as default
2022-07-13 17:46:07 : INFO  : awpst : found packageID com.archiware.presstore installed, version 7.0.6
2022-07-13 17:46:07 : INFO  : awpst : appversion: 7.0.6
2022-07-13 17:46:07 : INFO  : awpst : Latest version of P5 is 7.0.7
2022-07-13 17:46:07 : REQ   : awpst : Downloading https://p5-downloads.s3.amazonaws.com/awpst707-darwin.dmg to P5.dmg
2022-07-13 17:46:27 : REQ   : awpst : no more blocking processes, continue with update
2022-07-13 17:46:27 : REQ   : awpst : Installing P5
2022-07-13 17:46:27 : INFO  : awpst : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.rwTUoQOZ/P5.dmg
2022-07-13 17:46:27 : INFO  : awpst : Mounted: /Volumes/P5-707
2022-07-13 17:46:27 : INFO  : awpst : found pkg: /Volumes/P5-707/P5-707-Install.pkg
2022-07-13 17:46:27 : INFO  : awpst : Verifying: /Volumes/P5-707/P5-707-Install.pkg
2022-07-13 17:46:28 : INFO  : awpst : Team ID: 5H5EU6F965 (expected: 5H5EU6F965 )
2022-07-13 17:46:28 : INFO  : awpst : Checking package version.
2022-07-13 17:46:28 : INFO  : awpst : Downloaded package com.archiware.presstore version
2022-07-13 17:46:28 : INFO  : awpst : Installing /Volumes/P5-707/P5-707-Install.pkg to /
2022-07-13 17:47:06 : INFO  : awpst : Finishing...
2022-07-13 17:47:16 : INFO  : awpst : found packageID com.archiware.presstore installed, version 7.0.7
2022-07-13 17:47:16 : REQ   : awpst : Installed P5, version 7.0.7
2022-07-13 17:47:16 : INFO  : awpst : App not closed, so no reopen.
2022-07-13 17:47:16 : REQ   : awpst : All done!
2022-07-13 17:47:16 : REQ   : awpst : ################## End Installomator, exit code 0
2022-07-13 18:05:44 +02:00
Tadayuki Onishi
9fb414958a santa and nomad are forced to ignore blocking
Those applications are forcibly restarted by the launch agent, resulting in infinite blocking process processing.
2022-07-12 10:54:36 +09:00
David Champion
e90dfd6d82 Add Tailscale label 2022-07-11 12:25:56 -07:00
Søren Theilgaard
c04c591a03 relatel label
Output from DEBUG mode and full installer (with force):
```
% Installomator/utils/assemble.sh relatel
2022-07-11 16:23:16 : REQ   : relatel : ################## Start Installomator v. 10.0beta, date 2022-07-11
2022-07-11 16:23:16 : INFO  : relatel : ################## Version: 10.0beta
2022-07-11 16:23:16 : INFO  : relatel : ################## Date: 2022-07-11
2022-07-11 16:23:16 : INFO  : relatel : ################## relatel
2022-07-11 16:23:16 : DEBUG : relatel : DEBUG mode 1 enabled.
2022-07-11 16:23:16 : INFO  : relatel : BLOCKING_PROCESS_ACTION=tell_user
2022-07-11 16:23:16 : INFO  : relatel : NOTIFY=success
2022-07-11 16:23:16 : INFO  : relatel : LOGGING=DEBUG
2022-07-11 16:23:16 : INFO  : relatel : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-11 16:23:16 : INFO  : relatel : Label type: dmg
2022-07-11 16:23:16 : INFO  : relatel : archiveName: Relatel.dmg
2022-07-11 16:23:16 : INFO  : relatel : no blocking processes defined, using Relatel as default
2022-07-11 16:23:16 : DEBUG : relatel : Changing directory to /Users/st/Documents/GitHub/Installomator/build
2022-07-11 16:23:16 : INFO  : relatel : App(s) found: /Applications/Relatel.app
2022-07-11 16:23:16 : INFO  : relatel : found app at /Applications/Relatel.app, version 1.3.1, on versionKey CFBundleShortVersionString
2022-07-11 16:23:16 : INFO  : relatel : appversion: 1.3.1
2022-07-11 16:23:16 : INFO  : relatel : Latest version of Relatel is 1.3.1
2022-07-11 16:23:16 : WARN  : relatel : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-07-11 16:23:16 : REQ   : relatel : Downloading https://cdn.rela.tel/www/public/junotron/Relatel.dmg to Relatel.dmg
2022-07-11 16:23:17 : DEBUG : relatel : File list: -rw-r--r--  1 aa  staff    83M Jul 11 16:23 Relatel.dmg
2022-07-11 16:23:17 : DEBUG : relatel : File type: Relatel.dmg: zlib compressed data
2022-07-11 16:23:17 : DEBUG : relatel : curl output was:
*   Trying 13.33.141.16:443...
* Connected to cdn.rela.tel (13.33.141.16) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [317 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4960 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=cdn.firmafon.dk
*  start date: Sep 29 00:00:00 2021 GMT
*  expire date: Oct 28 23:59:59 2022 GMT
*  subjectAltName: host "cdn.rela.tel" matched cert's "cdn.rela.tel"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x124810a00)
> GET /www/public/junotron/Relatel.dmg HTTP/2
> Host: cdn.rela.tel
> user-agent: curl/7.79.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 301
< content-length: 0
< date: Mon, 11 Jul 2022 14:13:48 GMT
< location: /www/public/junotron/Relatel-1.3.1.dmg
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 7e5377bfdf5e6ef7597f63d6648e4e9a.cloudfront.net (CloudFront)
< x-amz-cf-pop: CPH50-C2
< x-amz-cf-id: thNWMtxDW2IJefosMKa0ESJTenG4AC9I5aZrCy-sTD9YSiGFtVRqgg==
< age: 569
<
{ [0 bytes data]
* Connection #0 to host cdn.rela.tel left intact
* Issue another request to this URL: 'https://cdn.rela.tel/www/public/junotron/Relatel-1.3.1.dmg'
* Found bundle for host cdn.rela.tel: 0x600001f207b0 [can multiplex]
* Re-using existing connection! (#0) with host cdn.rela.tel
* Connected to cdn.rela.tel (13.33.141.16) port 443 (#0)
* Using Stream ID: 3 (easy handle 0x124810a00)
> GET /www/public/junotron/Relatel-1.3.1.dmg HTTP/2
> Host: cdn.rela.tel
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 200
< content-type: application/x-apple-diskimage
< content-length: 86919409
< date: Mon, 11 Jul 2022 14:13:48 GMT
< last-modified: Fri, 06 May 2022 12:35:41 GMT
< x-amz-version-id: efBkRS8bwIqXqI2Z6qnBgVxSZzwUHByN
< etag: "7d26b868f87f72b3fcee9788f1cd512d-6"
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 7e5377bfdf5e6ef7597f63d6648e4e9a.cloudfront.net (CloudFront)
< x-amz-cf-pop: CPH50-C2
< x-amz-cf-id: 4tPa-qwrw0EK3XG2vb6eQrC9cV8anQvW9yNcjKvgtWdXk_-3VjWkyA==
< age: 569
<
{ [2896 bytes data]
* Connection #0 to host cdn.rela.tel left intact

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

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

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

% sudo Installomator/utils/assemble.sh relatel DEBUG=0 INSTALL=force
Password:
2022-07-11 16:23:56 : WARN  : relatel : setting variable from argument DEBUG=0
2022-07-11 16:23:56 : WARN  : relatel : setting variable from argument INSTALL=force
2022-07-11 16:23:56 : REQ   : relatel : ################## Start Installomator v. 10.0beta, date 2022-07-11
2022-07-11 16:23:56 : INFO  : relatel : ################## Version: 10.0beta
2022-07-11 16:23:56 : INFO  : relatel : ################## Date: 2022-07-11
2022-07-11 16:23:56 : INFO  : relatel : ################## relatel
2022-07-11 16:23:56 : INFO  : relatel : BLOCKING_PROCESS_ACTION=tell_user
2022-07-11 16:23:56 : INFO  : relatel : NOTIFY=success
2022-07-11 16:23:56 : INFO  : relatel : LOGGING=INFO
2022-07-11 16:23:56 : INFO  : relatel : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-11 16:23:56 : INFO  : relatel : Label type: dmg
2022-07-11 16:23:56 : INFO  : relatel : archiveName: Relatel.dmg
2022-07-11 16:23:56 : INFO  : relatel : no blocking processes defined, using Relatel as default
2022-07-11 16:23:56 : INFO  : relatel : App(s) found: /Applications/Relatel.app
2022-07-11 16:23:56 : INFO  : relatel : found app at /Applications/Relatel.app, version 1.3.1, on versionKey CFBundleShortVersionString
2022-07-11 16:23:56 : INFO  : relatel : appversion: 1.3.1
2022-07-11 16:23:56 : INFO  : relatel : Label is not of type “updateronly”, and it’s set to use force to install or ignoring app store apps, so not using updateTool.
2022-07-11 16:23:56 : INFO  : relatel : Latest version of Relatel is 1.3.1
2022-07-11 16:23:56 : INFO  : relatel : There is no newer version available.
2022-07-11 16:23:56 : REQ   : relatel : Downloading https://cdn.rela.tel/www/public/junotron/Relatel.dmg to Relatel.dmg
2022-07-11 16:23:57 : REQ   : relatel : no more blocking processes, continue with update
2022-07-11 16:23:57 : REQ   : relatel : Installing Relatel
2022-07-11 16:23:57 : INFO  : relatel : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.l86iLb4m/Relatel.dmg
2022-07-11 16:24:00 : INFO  : relatel : Mounted: /Volumes/Relatel 1.3.1
2022-07-11 16:24:00 : INFO  : relatel : Verifying: /Volumes/Relatel 1.3.1/Relatel.app
2022-07-11 16:24:01 : INFO  : relatel : Team ID matching: B9358QF55B (expected: B9358QF55B )
2022-07-11 16:24:01 : INFO  : relatel : Downloaded version of Relatel is 1.3.1 on versionKey CFBundleShortVersionString, same as installed.
2022-07-11 16:24:01 : INFO  : relatel : Using force to install anyway.
2022-07-11 16:24:01 : INFO  : relatel : App has LSMinimumSystemVersion: 10.11.0
2022-07-11 16:24:01 : WARN  : relatel : Removing existing /Applications/Relatel.app
2022-07-11 16:24:01 : INFO  : relatel : Copy /Volumes/Relatel 1.3.1/Relatel.app to /Applications
2022-07-11 16:24:02 : WARN  : relatel : Changing owner to aa
2022-07-11 16:24:02 : INFO  : relatel : Finishing...
2022-07-11 16:24:12 : INFO  : relatel : App(s) found: /Applications/Relatel.app
2022-07-11 16:24:12 : INFO  : relatel : found app at /Applications/Relatel.app, version 1.3.1, on versionKey CFBundleShortVersionString
2022-07-11 16:24:12 : REQ   : relatel : Installed Relatel, version 1.3.1
2022-07-11 16:24:12 : INFO  : relatel : notifying
2022-07-11 16:24:12 : INFO  : relatel : App not closed, so no reopen.
2022-07-11 16:24:12 : REQ   : relatel : All done!
2022-07-11 16:24:12 : REQ   : relatel : ################## End Installomator, exit code 0
```
2022-07-11 16:27:51 +02:00
macmangr
0a9957169e Update tunnelblick.sh
Added appNewVersion check
2022-07-09 13:43:52 +02:00
macmangr
72d2c4ab74 New Label: ChronoAgent
"ChronoAgent is an invisible app that runs silently in the background providing ChronoSync or InterConneX a direct connection to a remote Mac. It provides a much more secure, reliable and higher performance connection than standard file sharing. If you’re synchronizing or backing up files between two Macs, ChronoAgent is simply the best way to establish a connection between them."

./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels chronoagent
2022-07-09 12:55:23 : REQ   : chronoagent : ################## Start Installomator v. 10.0beta, date 2022-07-09
2022-07-09 12:55:23 : INFO  : chronoagent : ################## Version: 10.0beta
2022-07-09 12:55:23 : INFO  : chronoagent : ################## Date: 2022-07-09
2022-07-09 12:55:23 : INFO  : chronoagent : ################## chronoagent
2022-07-09 12:55:23 : DEBUG : chronoagent : DEBUG mode 1 enabled.
2022-07-09 12:55:24 : INFO  : chronoagent : BLOCKING_PROCESS_ACTION=tell_user
2022-07-09 12:55:24 : INFO  : chronoagent : NOTIFY=success
2022-07-09 12:55:24 : INFO  : chronoagent : LOGGING=DEBUG
2022-07-09 12:55:24 : INFO  : chronoagent : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-09 12:55:24 : INFO  : chronoagent : Label type: pkgInDmg
2022-07-09 12:55:24 : INFO  : chronoagent : archiveName: ChronoAgent.dmg
2022-07-09 12:55:24 : INFO  : chronoagent : no blocking processes defined, using ChronoAgent as default
2022-07-09 12:55:24 : DEBUG : chronoagent : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-07-09 12:55:24 : INFO  : chronoagent : name: ChronoAgent, appName: ChronoAgent.app
2022-07-09 12:55:24 : WARN  : chronoagent : No previous app found
2022-07-09 12:55:24 : WARN  : chronoagent : could not find ChronoAgent.app
2022-07-09 12:55:24 : INFO  : chronoagent : appversion:
2022-07-09 12:55:24 : INFO  : chronoagent : Latest version of ChronoAgent is 2.1.0
2022-07-09 12:55:24 : INFO  : chronoagent : ChronoAgent.dmg exists and DEBUG mode 1 enabled, skipping download
2022-07-09 12:55:24 : DEBUG : chronoagent : DEBUG mode 1, not checking for blocking processes
2022-07-09 12:55:24 : REQ   : chronoagent : Installing ChronoAgent
2022-07-09 12:55:24 : INFO  : chronoagent : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/ChronoAgent.dmg
2022-07-09 12:55:25 : DEBUG : chronoagent : Debugging enabled, dmgmount output was:
Prüfsumme für whole disk (Apple_HFS : 0) berechnen …
whole disk (Apple_HFS : 0): Die überprüfte CRC32-Prüfsumme ist $46C474C3
Die überprüfte CRC32-Prüfsumme ist $40A3C999
/dev/disk4          	                               	/Volumes/ChronoAgent

2022-07-09 12:55:25 : INFO  : chronoagent : Mounted: /Volumes/ChronoAgent
2022-07-09 12:55:25 : DEBUG : chronoagent : Found pkg(s):
/Volumes/ChronoAgent/Install.pkg
2022-07-09 12:55:25 : DEBUG : chronoagent : /Volumes/ChronoAgent/Remove.pkg
2022-07-09 12:55:25 : INFO  : chronoagent : found pkg: /Volumes/ChronoAgent/Install.pkg
2022-07-09 12:55:25 : INFO  : chronoagent : Verifying: /Volumes/ChronoAgent/Install.pkg
2022-07-09 12:55:25 : DEBUG : chronoagent : File list: -rw-r--r--@ 1 savvas  staff    35M 27 Apr 14:37 /Volumes/ChronoAgent/Install.pkg
2022-07-09 12:55:25 : DEBUG : chronoagent : File type: /Volumes/ChronoAgent/Install.pkg: xar archive compressed TOC: 8440, SHA-1 checksum, contains iAPX 286 executable large model (COFF) not stripped
2022-07-09 12:55:25 : DEBUG : chronoagent : - iAPX 286 executable large model (COFF) not stripped
2022-07-09 12:55:25 : DEBUG : chronoagent : spctlOut is /Volumes/ChronoAgent/Install.pkg: accepted
2022-07-09 12:55:25 : DEBUG : chronoagent : source=Notarized Developer ID
2022-07-09 12:55:25 : DEBUG : chronoagent : origin=Developer ID Installer: Econ Technologies, Inc. (9U697UM7YX)
2022-07-09 12:55:25 : INFO  : chronoagent : Team ID: 9U697UM7YX (expected: 9U697UM7YX )
2022-07-09 12:55:25 : DEBUG : chronoagent : DEBUG enabled, skipping installation
2022-07-09 12:55:25 : INFO  : chronoagent : Finishing...
2022-07-09 12:55:35 : INFO  : chronoagent : name: ChronoAgent, appName: ChronoAgent.app
2022-07-09 12:55:35 : WARN  : chronoagent : No previous app found
2022-07-09 12:55:35 : WARN  : chronoagent : could not find ChronoAgent.app
2022-07-09 12:55:35 : REQ   : chronoagent : Installed ChronoAgent
2022-07-09 12:55:35 : INFO  : chronoagent : notifying
2022-07-09 12:55:35 : DEBUG : chronoagent : Unmounting /Volumes/ChronoAgent
2022-07-09 12:55:36 : DEBUG : chronoagent : Debugging enabled, Unmounting output was:
"disk4" ejected.
2022-07-09 12:55:36 : DEBUG : chronoagent : DEBUG mode 1, not reopening anything
2022-07-09 12:55:36 : REQ   : chronoagent : All done!
2022-07-09 12:55:36 : REQ   : chronoagent : ################## End Installomator, exit code 0
2022-07-09 13:05:46 +02:00
macmangr
14fc1db433 New Label: ChronoSync
"ChronoSync is a complete, all-in-one solution for file syncs, backups, bootable backups and cloud storage for your Mac. In use by thousands of photographers, video editors, filmmakers, musicians and other data professionals. It’s simply the best way to backup and sync your Mac. No other app can compare! Whatever your backup and sync scenario, ChronoSync has got you covered!"

./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels chronosync
2022-07-09 12:56:22 : REQ   : chronosync : ################## Start Installomator v. 10.0beta, date 2022-07-09
2022-07-09 12:56:22 : INFO  : chronosync : ################## Version: 10.0beta
2022-07-09 12:56:22 : INFO  : chronosync : ################## Date: 2022-07-09
2022-07-09 12:56:22 : INFO  : chronosync : ################## chronosync
2022-07-09 12:56:22 : DEBUG : chronosync : DEBUG mode 1 enabled.
2022-07-09 12:56:23 : INFO  : chronosync : BLOCKING_PROCESS_ACTION=tell_user
2022-07-09 12:56:23 : INFO  : chronosync : NOTIFY=success
2022-07-09 12:56:23 : INFO  : chronosync : LOGGING=DEBUG
2022-07-09 12:56:23 : INFO  : chronosync : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-09 12:56:23 : INFO  : chronosync : Label type: pkgInDmg
2022-07-09 12:56:23 : INFO  : chronosync : archiveName: ChronoSync.dmg
2022-07-09 12:56:23 : INFO  : chronosync : no blocking processes defined, using ChronoSync as default
2022-07-09 12:56:23 : DEBUG : chronosync : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-07-09 12:56:23 : INFO  : chronosync : name: ChronoSync, appName: ChronoSync.app
2022-07-09 12:56:23 : WARN  : chronosync : No previous app found
2022-07-09 12:56:23 : WARN  : chronosync : could not find ChronoSync.app
2022-07-09 12:56:23 : INFO  : chronosync : appversion:
2022-07-09 12:56:23 : INFO  : chronosync : Latest version of ChronoSync is 10.2.0
2022-07-09 12:56:23 : INFO  : chronosync : ChronoSync.dmg exists and DEBUG mode 1 enabled, skipping download
2022-07-09 12:56:23 : DEBUG : chronosync : DEBUG mode 1, not checking for blocking processes
2022-07-09 12:56:23 : REQ   : chronosync : Installing ChronoSync
2022-07-09 12:56:23 : INFO  : chronosync : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/ChronoSync.dmg
2022-07-09 12:56:24 : DEBUG : chronosync : Debugging enabled, dmgmount output was:
Prüfsumme für whole disk (Apple_HFS : 0) berechnen …
whole disk (Apple_HFS : 0): Die überprüfte CRC32-Prüfsumme ist $09AFB4EC
Die überprüfte CRC32-Prüfsumme ist $A77D4F24
/dev/disk4          	                               	/Volumes/ChronoSync

2022-07-09 12:56:24 : INFO  : chronosync : Mounted: /Volumes/ChronoSync
2022-07-09 12:56:24 : DEBUG : chronosync : Found pkg(s):
/Volumes/ChronoSync/Install.pkg
2022-07-09 12:56:24 : DEBUG : chronosync : /Volumes/ChronoSync/Remove.pkg
2022-07-09 12:56:24 : INFO  : chronosync : found pkg: /Volumes/ChronoSync/Install.pkg
2022-07-09 12:56:24 : INFO  : chronosync : Verifying: /Volumes/ChronoSync/Install.pkg
2022-07-09 12:56:24 : DEBUG : chronosync : File list: -rw-r--r--@ 1 savvas  staff    85M 18 Mai 16:02 /Volumes/ChronoSync/Install.pkg
2022-07-09 12:56:24 : DEBUG : chronosync : File type: /Volumes/ChronoSync/Install.pkg: xar archive compressed TOC: 8245, SHA-1 checksum
2022-07-09 12:56:24 : DEBUG : chronosync : spctlOut is /Volumes/ChronoSync/Install.pkg: accepted
2022-07-09 12:56:24 : DEBUG : chronosync : source=Notarized Developer ID
2022-07-09 12:56:24 : DEBUG : chronosync : origin=Developer ID Installer: Econ Technologies, Inc. (9U697UM7YX)
2022-07-09 12:56:24 : INFO  : chronosync : Team ID: 9U697UM7YX (expected: 9U697UM7YX )
2022-07-09 12:56:24 : DEBUG : chronosync : DEBUG enabled, skipping installation
2022-07-09 12:56:24 : INFO  : chronosync : Finishing...
2022-07-09 12:56:34 : INFO  : chronosync : name: ChronoSync, appName: ChronoSync.app
2022-07-09 12:56:34 : WARN  : chronosync : No previous app found
2022-07-09 12:56:34 : WARN  : chronosync : could not find ChronoSync.app
2022-07-09 12:56:34 : REQ   : chronosync : Installed ChronoSync
2022-07-09 12:56:34 : INFO  : chronosync : notifying
2022-07-09 12:56:34 : DEBUG : chronosync : Unmounting /Volumes/ChronoSync
2022-07-09 12:56:35 : DEBUG : chronosync : Debugging enabled, Unmounting output was:
"disk4" ejected.
2022-07-09 12:56:35 : DEBUG : chronosync : DEBUG mode 1, not reopening anything
2022-07-09 12:56:35 : REQ   : chronosync : All done!
2022-07-09 12:56:35 : REQ   : chronosync : ################## End Installomator, exit code 0
2022-07-09 13:02:07 +02:00
John Hutchison
5b7038bf19 New Label for Zulu JDK 18
New label for Zulu JDK 18. Test Deployment below;

./assemble.sh zulujdk18
2022-07-05 09:14:29 : REQ   : zulujdk18 : ################## Start Installomator v. 9.2, date 2022-07-05
2022-07-05 09:14:29 : INFO  : zulujdk18 : ################## Version: 9.2
2022-07-05 09:14:29 : INFO  : zulujdk18 : ################## Date: 2022-07-05
2022-07-05 09:14:29 : INFO  : zulujdk18 : ################## zulujdk18
2022-07-05 09:14:29 : DEBUG : zulujdk18 : DEBUG mode 1 enabled.
2022-07-05 09:14:30 : INFO  : zulujdk18 : BLOCKING_PROCESS_ACTION=tell_user
2022-07-05 09:14:30 : INFO  : zulujdk18 : NOTIFY=success
2022-07-05 09:14:30 : INFO  : zulujdk18 : LOGGING=DEBUG
2022-07-05 09:14:30 : INFO  : zulujdk18 : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-05 09:14:30 : INFO  : zulujdk18 : Label type: pkgInDmg
2022-07-05 09:14:30 : INFO  : zulujdk18 : archiveName: Zulu JDK 18.dmg
2022-07-05 09:14:30 : INFO  : zulujdk18 : no blocking processes defined, using Zulu JDK 18 as default
2022-07-05 09:14:30 : DEBUG : zulujdk18 : Changing directory to /Users/john/Documents/Source/Installomator/build
2022-07-05 09:14:30 : INFO  : zulujdk18 : Custom App Version detection is used, found 18.30.11
2022-07-05 09:14:30 : INFO  : zulujdk18 : appversion: 18.30.11
2022-07-05 09:14:30 : INFO  : zulujdk18 : Latest version of Zulu JDK 18 is 18.30.11
2022-07-05 09:14:30 : WARN  : zulujdk18 : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-07-05 09:14:30 : REQ   : zulujdk18 : Downloading https://cdn.azul.com/zulu/bin/zulu18.30.11-ca-jdk18.0.1-macosx_aarch64.dmg to Zulu JDK 18.dmg
2022-07-05 09:14:39 : DEBUG : zulujdk18 : File list: -rw-r--r--  1 john  staff   186M Jul  5 09:14 Zulu JDK 18.dmg
2022-07-05 09:14:39 : DEBUG : zulujdk18 : File type: Zulu JDK 18.dmg: bzip2 compressed data, block size = 100k
2022-07-05 09:14:39 : DEBUG : zulujdk18 : curl output was:
*   Trying 104.18.21.159:443...
* Connected to cdn.azul.com (104.18.21.159) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [317 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [2325 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=Cloudflare, Inc.; CN=sni.cloudflaressl.com
*  start date: Apr  3 00:00:00 2022 GMT
*  expire date: Apr  3 23:59:59 2023 GMT
*  subjectAltName: host "cdn.azul.com" matched cert's "*.azul.com"
*  issuer: C=US; O=Cloudflare, Inc.; CN=Cloudflare Inc ECC CA-3
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x13d011400)
> GET /zulu/bin/zulu18.30.11-ca-jdk18.0.1-macosx_aarch64.dmg HTTP/2
> Host: cdn.azul.com
> user-agent: curl/7.79.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
< HTTP/2 200
< date: Tue, 05 Jul 2022 13:14:30 GMT
< content-type: application/x-apple-diskimage
< content-length: 194730464
< last-modified: Fri, 22 Apr 2022 11:16:32 GMT
< etag: "b9b59e0-5dd3c5bdad2c8"
< cache-control: max-age=2592000
< expires: Wed, 06 Jul 2022 15:18:26 GMT
< vary: Origin
< cf-cache-status: HIT
< age: 2498164
< accept-ranges: bytes
< expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< server: cloudflare
< cf-ray: 72605d35a87178d0-EWR
< alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
<
{ [1029 bytes data]
* Connection #0 to host cdn.azul.com left intact

2022-07-05 09:14:39 : DEBUG : zulujdk18 : DEBUG mode 1, not checking for blocking processes
2022-07-05 09:14:39 : REQ   : zulujdk18 : Installing Zulu JDK 18
2022-07-05 09:14:39 : INFO  : zulujdk18 : Mounting /Users/john/Documents/Source/Installomator/build/Zulu JDK 18.dmg
2022-07-05 09:14:48 : DEBUG : zulujdk18 : Debugging enabled, dmgmount output was:
Checksumming Protective Master Boot Record (MBR : 0)…
Protective Master Boot Record (MBR :: verified   CRC32 $8667CA94
Checksumming GPT Header (Primary GPT Header : 1)…
GPT Header (Primary GPT Header : 1): verified   CRC32 $997E8BC9
Checksumming GPT Partition Data (Primary GPT Table : 2)…
GPT Partition Data (Primary GPT Tabl: verified   CRC32 $78938419
Checksumming  (Apple_Free : 3)…
(Apple_Free : 3): verified   CRC32 $00000000
Checksumming disk image (Apple_HFS : 4)…
disk image (Apple_HFS : 4): verified   CRC32 $8B1E5839
Checksumming  (Apple_Free : 5)…
(Apple_Free : 5): verified   CRC32 $00000000
Checksumming GPT Partition Data (Backup GPT Table : 6)…
GPT Partition Data (Backup GPT Table: verified   CRC32 $78938419
Checksumming GPT Header (Backup GPT Header : 7)…
GPT Header (Backup GPT Header : 7): verified   CRC32 $F309C9FC
verified   CRC32 $FAED0B8A
/dev/disk6          	GUID_partition_scheme
/dev/disk6s1        	Apple_HFS                      	/Volumes/Azul Zulu JDK 18.30+11 1

2022-07-05 09:14:48 : INFO  : zulujdk18 : Mounted: /Volumes/Azul Zulu JDK 18.30+11 1
2022-07-05 09:14:48 : DEBUG : zulujdk18 : Found pkg(s):
/Volumes/Azul Zulu JDK 18.30+11 1/Double-Click to Install Azul Zulu JDK 18.pkg
2022-07-05 09:14:48 : INFO  : zulujdk18 : found pkg: /Volumes/Azul Zulu JDK 18.30+11 1/Double-Click to Install Azul Zulu JDK 18.pkg
2022-07-05 09:14:48 : INFO  : zulujdk18 : Verifying: /Volumes/Azul Zulu JDK 18.30+11 1/Double-Click to Install Azul Zulu JDK 18.pkg
2022-07-05 09:14:48 : DEBUG : zulujdk18 : File list: -rw-r--r--  1 john  staff   183M Apr 21 12:16 /Volumes/Azul Zulu JDK 18.30+11 1/Double-Click to Install Azul Zulu JDK 18.pkg
2022-07-05 09:14:48 : DEBUG : zulujdk18 : File type: /Volumes/Azul Zulu JDK 18.30+11 1/Double-Click to Install Azul Zulu JDK 18.pkg: xar archive compressed TOC: 4884, SHA-1 checksum
2022-07-05 09:14:48 : DEBUG : zulujdk18 : spctlOut is /Volumes/Azul Zulu JDK 18.30+11 1/Double-Click to Install Azul Zulu JDK 18.pkg: accepted
2022-07-05 09:14:48 : DEBUG : zulujdk18 : source=Notarized Developer ID
2022-07-05 09:14:48 : DEBUG : zulujdk18 : origin=Developer ID Installer: Azul Systems, Inc. (TDTHCUPYFR)
2022-07-05 09:14:48 : INFO  : zulujdk18 : Team ID: TDTHCUPYFR (expected: TDTHCUPYFR )
2022-07-05 09:14:48 : INFO  : zulujdk18 : Checking package version.
2022-07-05 09:14:55 : INFO  : zulujdk18 : Downloaded package com.azulsystems.zulu.18 version
2022-07-05 09:14:55 : DEBUG : zulujdk18 : DEBUG enabled, skipping installation
2022-07-05 09:14:55 : INFO  : zulujdk18 : Finishing...
2022-07-05 09:15:06 : INFO  : zulujdk18 : Custom App Version detection is used, found 18.30.11
2022-07-05 09:15:06 : REQ   : zulujdk18 : Installed Zulu JDK 18, version 18.30.11
2022-07-05 09:15:06 : INFO  : zulujdk18 : notifying
2022-07-05 09:15:06 : DEBUG : zulujdk18 : Unmounting /Volumes/Azul Zulu JDK 18.30+11 1
2022-07-05 09:15:07 : DEBUG : zulujdk18 : Debugging enabled, Unmounting output was:
"disk6" ejected.
2022-07-05 09:15:07 : DEBUG : zulujdk18 : DEBUG mode 1, not reopening anything
2022-07-05 09:15:07 : REQ   : zulujdk18 : All done!
2022-07-05 09:15:07 : REQ   : zulujdk18 : ################## End Installomator, exit code 0
2022-07-05 09:16:17 -04:00
macmangr
6d7a64667f New Label: Horos
"Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based upon OsiriX and other open source medical imaging libraries. Horos is made freely available under the GNU Lesser General Public License, Version 3 (LGPL-3.0)"

./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels horos
2022-07-04 23:48:31 : REQ   : horos : ################## Start Installomator v. 10.0beta, date 2022-07-04
2022-07-04 23:48:31 : INFO  : horos : ################## Version: 10.0beta
2022-07-04 23:48:31 : INFO  : horos : ################## Date: 2022-07-04
2022-07-04 23:48:31 : INFO  : horos : ################## horos
2022-07-04 23:48:31 : DEBUG : horos : DEBUG mode 1 enabled.
2022-07-04 23:48:31 : INFO  : horos : BLOCKING_PROCESS_ACTION=tell_user
2022-07-04 23:48:31 : INFO  : horos : NOTIFY=success
2022-07-04 23:48:31 : INFO  : horos : LOGGING=DEBUG
2022-07-04 23:48:31 : INFO  : horos : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-04 23:48:31 : INFO  : horos : Label type: dmg
2022-07-04 23:48:31 : INFO  : horos : archiveName: Horos.dmg
2022-07-04 23:48:31 : INFO  : horos : no blocking processes defined, using Horos as default
2022-07-04 23:48:31 : DEBUG : horos : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-07-04 23:48:31 : INFO  : horos : App(s) found: /Applications/Horos.app
2022-07-04 23:48:32 : INFO  : horos : found app at /Applications/Horos.app, version Horos v4.0.0 RC5, on versionKey CFBundleGetInfoString
2022-07-04 23:48:32 : INFO  : horos : appversion: Horos v4.0.0 RC5
2022-07-04 23:48:32 : INFO  : horos : Latest version of Horos is 4.0.0RC5
2022-07-04 23:48:32 : INFO  : horos : Horos.dmg exists and DEBUG mode 1 enabled, skipping download
2022-07-04 23:48:32 : DEBUG : horos : DEBUG mode 1, not checking for blocking processes
2022-07-04 23:48:32 : REQ   : horos : Installing Horos
2022-07-04 23:48:32 : INFO  : horos : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Horos.dmg
2022-07-04 23:48:33 : DEBUG : horos : Debugging enabled, dmgmount output was:
SOFTWARE LICENSE: By initiating this download and installation you
acknowledge and agree that this software application is not intended
for medical usage or diagnostic purposes.

============================================

Horos is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation,  version 3 of the License.

The Horos Project was based originally upon the OsiriX Project which
at the time of the code fork was licensed as a LGPL project.  However,
not all of the the source-code was properly documented and file
headers were not all updated with the appropriate license terms.
The Horos Project, originally was licensed under the  GNU GPL
license. However, contributors to the software since that time have
agreed to modify the license to the GNU LGPL in order to be conform
to the changes previously made to the OsiriX Project.

Horos is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE OR USE.  

See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with Horos.  If not, see
http://www.gnu.org/licenses/lgpl.html

Prior versions of this file were published by the OsiriX team
pursuant to the below notice and licensing protocol.

============================================

Program:   OsiriX Copyright (c) OsiriX Team All rights
reserved. Distributed under GNU - LGPL   See
http://www.osirix-viewer.com/copyright.html for details.

This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

============================================

This version of Horos is linked against the Grok JPEG 2000 library,
for fast viewing of JPEG 2000 images.

https://github.com/GrokImageCompression/grok

The Grok JPEG 2000 library is licensed under the terms of the GNU
Affero General Public License as follows

Copyright (C) 2016 Grok Image Compression Inc.

This program is free software: you can redistribute it and/or  modify
it under the terms of the GNU Affero General Public License, version
3, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public
License along with this program.  If not, see
<http://www.gnu.org/licenses/>.

============================================

GNU LESSER GENERAL PUBLIC LICENSE

GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of
this license document, but changing it is not allowed.

This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

0. Additional Definitions.  As used herein, “this License” refers
to version 3 of the GNU Lesser General Public License, and the “GNU
GPL” refers to version 3 of the GNU General Public License.

“The Library” refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

An “Application” is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a
mode of using an interface provided by the Library.

A “Combined Work” is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the “Linked
Version”.

The “Minimal Corresponding Source” for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source
code for portions of the Combined Work that, considered in isolation,
are based on the Application, and not on the Linked Version.

The “Corresponding Application Code” for a Combined Work means the
object code and/or source code for the Application, including any
data and utility programs needed for reproducing the Combined Work
from the Application, but excluding the System Libraries of the
Combined Work.

1. Exception to Section 3 of the GNU GPL.  You may convey a covered
work under sections 3 and 4 of this License without being bound by
section 3 of the GNU GPL.

2. Conveying Modified Versions.  If you modify a copy of the Library,
and, in your modifications, a facility refers to a function or data
to be supplied by an Application that uses the facility (other than
as an argument passed when the facility is invoked), then you may
convey a copy of the modified version:

a) under this License, provided that you make a good faith effort
to ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs whatever
part of its purpose remains meaningful, or b) under the GNU GPL,
with none of the additional permissions of this License applicable
to that copy.  3. Object Code Incorporating Material from Library
Header Files.  The object code form of an Application may incorporate
material from a header file that is part of the Library. You may
convey such object code under terms of your choice, provided that,
if the incorporated material is not limited to numerical parameters,
data structure layouts and accessors, or small macros, inline
functions and templates (ten or fewer lines in length), you do both
of the following:

a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are covered
by this License.  b) Accompany the object code with a copy of the
GNU GPL and this license document.  4. Combined Works.  You may
convey a Combined Work under terms of your choice that, taken
together, effectively do not restrict modification of the portions
of the Library contained in the Combined Work and reverse engineering
for debugging such modifications, if you also do each of the
following:

a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.  b) Accompany the Combined Work with a
copy of the GNU GPL and this license document.  c) For a Combined
Work that displays copyright notices during execution, include the
copyright notice for the Library among these notices, as well as a
reference directing the user to the copies of the GNU GPL and this
license document.  d) Do one of the following: 0) Convey the Minimal
Corresponding Source under the terms of this License, and the
Corresponding Application Code in a form suitable for, and under
terms that permit, the user to recombine or relink the Application
with a modified version of the Linked Version to produce a modified
Combined Work, in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.  1) Use a suitable shared library
mechanism for linking with the Library. A suitable mechanism is one
that (a) uses at run time a copy of the Library already present on
the user's computer system, and (b) will operate properly with a
modified version of the Library that is interface-compatible with
the Linked Version.  e) Provide Installation Information, but only
if you would otherwise be required to provide such information under
section 6 of the GNU GPL, and only to the extent that such information
is necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the Application
with a modified version of the Linked Version. (If you use option
4d0, the Installation Information must accompany the Minimal
Corresponding Source and Corresponding Application Code. If you use
option 4d1, you must provide the Installation Information in the
manner specified by section 6 of the GNU GPL for conveying Corresponding
Source.) 5. Combined Libraries.  You may place library facilities
that are a work based on the Library side by side in a single library
together with other library facilities that are not Applications
and are not covered by this License, and convey such a combined
library under terms of your choice, if you do both of the following:

a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.  b) Give prominent notice
with the combined library that part of it is a work based on the
Library, and explaining where to find the accompanying uncombined
form of the same work.  6. Revised Versions of the GNU Lesser General
Public License.  The Free Software Foundation may publish revised
and/or new versions of the GNU Lesser General Public License from
time to time. Such new versions will be similar in spirit to the
present version, but may differ in detail to address new problems
or concerns.

Each version is given a distinguishing version number. If the Library
as you received it specifies that a certain numbered version of the
GNU Lesser General Public License “or any later version” applies
to it, you have the option of following the terms and conditions
either of that published version or of any later version published
by the Free Software Foundation. If the Library as you received it
does not specify a version number of the GNU Lesser General Public
License, you may choose any version of the GNU Lesser General Public
License ever published by the Free Software Foundation.

If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License
shall apply, that proxy's public statement of acceptance of any
version is permanent authorization for you to choose that version
for the Library.

===============================================================================================================

GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of
this license document, but changing it is not allowed.

Preamble The GNU General Public License is a free, copyleft license
for software and other kinds of works.

The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom
to share and change all versions of a program--to make sure it
remains free software for all its users. We, the Free Software
Foundation, use the GNU General Public License for most of our
software; it applies also to any other work released this way by
its authors. You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and
charge for them if you wish), that you receive source code or can
get it if you want it, that you can change the software or use
pieces of it in new free programs, and that you know you can do
these things.

To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you
have certain responsibilities if you distribute copies of the
software, or if you modify it: responsibilities to respect the
freedom of others.

For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too,
receive or can get the source code. And you must show them these
terms so they know their rights.

Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users'
and authors' sake, the GPL requires that modified versions be marked
as changed, so that their problems will not be attributed erroneously
to authors of previous versions.

Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the
manufacturer can do so. This is fundamentally incompatible with the
aim of protecting users' freedom to change the software. The
systematic pattern of such abuse occurs in the area of products for
individuals to use, which is precisely where it is most unacceptable.
Therefore, we have designed this version of the GPL to prohibit the
practice for those products. If such problems arise substantially
in other domains, we stand ready to extend this provision to those
domains in future versions of the GPL, as needed to protect the
freedom of users.

Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we
wish to avoid the special danger that patents applied to a free
program could make it effectively proprietary. To prevent this, the
GPL assures that patents cannot be used to render the program
non-free.

The precise terms and conditions for copying, distribution and
modification follow.

TERMS AND CONDITIONS 0. Definitions.  “This License” refers to
version 3 of the GNU General Public License.

“Copyright” also means copyright-like laws that apply to other kinds
of works, such as semiconductor masks.

“The Program” refers to any copyrightable work licensed under this
License. Each licensee is addressed as “you”. “Licensees” and
“recipients” may be individuals or organizations.

To “modify” a work means to copy from or adapt all or part of the
work in a fashion requiring copyright permission, other than the
making of an exact copy. The resulting work is called a “modified
version” of the earlier work or a work “based on” the earlier work.

A “covered work” means either the unmodified Program or a work based
on the Program.

To “propagate” a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it
on a computer or modifying a private copy. Propagation includes
copying, distribution (with or without modification), making available
to the public, and in some countries other activities as well.

To “convey” a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user
through a computer network, with no transfer of a copy, is not
conveying.

An interactive user interface displays “Appropriate Legal Notices”
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to
the extent that warranties are provided), that licensees may convey
the work under this License, and how to view a copy of this License.
If the interface presents a list of user commands or options, such
as a menu, a prominent item in the list meets this criterion.

1. Source Code.  The “source code” for a work means the preferred
form of the work for making modifications to it. “Object code” means
any non-source form of a work.

A “Standard Interface” means an interface that either is an official
standard defined by a recognized standards body, or, in the case
of interfaces specified for a particular programming language, one
that is widely used among developers working in that language.

The “System Libraries” of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form
of packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
“Major Component”, in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

The “Corresponding Source” for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts
to control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available
free programs which are used unmodified in performing those activities
but which are not part of the work. For example, Corresponding
Source includes interface definition files associated with source
files for the work, and the source code for shared libraries and
dynamically linked subprograms that the work is specifically designed
to require, such as by intimate data communication or control flow
between those subprograms and other parts of the work.

The Corresponding Source need not include anything that users can
regenerate automatically from other parts of the Corresponding
Source.

The Corresponding Source for a work in source code form is that
same work.

2. Basic Permissions.  All rights granted under this License are
granted for the term of copyright on the Program, and are irrevocable
provided the stated conditions are met. This License explicitly
affirms your unlimited permission to run the unmodified Program.
The output from running a covered work is covered by this License
only if the output, given its content, constitutes a covered work.
This License acknowledges your rights of fair use or other equivalent,
as provided by copyright law.

You may make, run and propagate covered works that you do not convey,
without conditions so long as your license otherwise remains in
force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide
you with facilities for running those works, provided that you
comply with the terms of this License in conveying all material for
which you do not control copyright. Those thus making or running
the covered works for you must do so exclusively on your behalf,
under your direction and control, on terms that prohibit them from
making any copies of your copyrighted material outside their
relationship with you.

Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section
10 makes it unnecessary.

3. Protecting Users' Legal Rights From Anti-Circumvention Law.  No
covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect
to the covered work, and you disclaim any intention to limit operation
or modification of the work as a means of enforcing, against the
work's users, your or third parties' legal rights to forbid
circumvention of technological measures.

4. Conveying Verbatim Copies.  You may convey verbatim copies of
the Program's source code as you receive it, in any medium, provided
that you conspicuously and appropriately publish on each copy an
appropriate copyright notice; keep intact all notices stating that
this License and any non-permissive terms added in accord with
section 7 apply to the code; keep intact all notices of the absence
of any warranty; and give all recipients a copy of this License
along with the Program.

You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

5. Conveying Modified Source Versions.  You may convey a work based
on the Program, or the modifications to produce it from the Program,
in the form of source code under the terms of section 4, provided
that you also meet all of these conditions:

a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.  b) The work must carry prominent
notices stating that it is released under this License and any
conditions added under section 7. This requirement modifies the
requirement in section 4 to “keep intact all notices”.  c) You must
license the entire work, as a whole, under this License to anyone
who comes into possession of a copy. This License will therefore
apply, along with any applicable section 7 additional terms, to the
whole of the work, and all its parts, regardless of how they are
packaged. This License gives no permission to license the work in
any other way, but it does not invalidate such permission if you
have separately received it.  d) If the work has interactive user
interfaces, each must display Appropriate Legal Notices; however,
if the Program has interactive interfaces that do not display
Appropriate Legal Notices, your work need not make them do so.  A
compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called
an “aggregate” if the compilation and its resulting copyright are
not used to limit the access or legal rights of the compilation's
users beyond what the individual works permit. Inclusion of a covered
work in an aggregate does not cause this License to apply to the
other parts of the aggregate.

6. Conveying Non-Source Forms.  You may convey a covered work in
object code form under the terms of sections 4 and 5, provided that
you also convey the machine-readable Corresponding Source under the
terms of this License, in one of these ways:

a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium customarily
used for software interchange.  b) Convey the object code in, or
embodied in, a physical product (including a physical distribution
medium), accompanied by a written offer, valid for at least three
years and valid for as long as you offer spare parts or customer
support for that product model, to give anyone who possesses the
object code either (1) a copy of the Corresponding Source for all
the software in the product that is covered by this License, on a
durable physical medium customarily used for software interchange,
for a price no more than your reasonable cost of physically performing
this conveying of source, or (2) access to copy the Corresponding
Source from a network server at no charge.  c) Convey individual
copies of the object code with a copy of the written offer to provide
the Corresponding Source. This alternative is allowed only occasionally
and noncommercially, and only if you received the object code with
such an offer, in accord with subsection 6b.  d) Convey the object
code by offering access from a designated place (gratis or for a
charge), and offer equivalent access to the Corresponding Source
in the same way through the same place at no further charge. You
need not require recipients to copy the Corresponding Source along
with the object code. If the place to copy the object code is a
network server, the Corresponding Source may be on a different
server (operated by you or a third party) that supports equivalent
copying facilities, provided you maintain clear directions next to
the object code saying where to find the Corresponding Source.
Regardless of what server hosts the Corresponding Source, you remain
obligated to ensure that it is available for as long as needed to
satisfy these requirements.  e) Convey the object code using
peer-to-peer transmission, provided you inform other peers where
the object code and Corresponding Source of the work are being
offered to the general public at no charge under subsection 6d.  A
separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

A “User Product” is either (1) a “consumer product”, which means
any tangible personal property which is normally used for personal,
family, or household purposes, or (2) anything designed or sold for
incorporation into a dwelling. In determining whether a product is
a consumer product, doubtful cases shall be resolved in favor of
coverage. For a particular product received by a particular user,
“normally used” refers to a typical or common use of that class of
product, regardless of the status of the particular user or of the
way in which the particular user actually uses, or expects or is
expected to use, the product. A product is a consumer product
regardless of whether the product has substantial commercial,
industrial or non-consumer uses, unless such uses represent the
only significant mode of use of the product.

“Installation Information” for a User Product means any methods,
procedures, authorization keys, or other information required to
install and execute modified versions of a covered work in that
User Product from a modified version of its Corresponding Source.
The information must suffice to ensure that the continued functioning
of the modified object code is in no case prevented or interfered
with solely because modification has been made.

If you convey an object code work under this section in, or with,
or specifically for use in, a User Product, and the conveying occurs
as part of a transaction in which the right of possession and use
of the User Product is transferred to the recipient in perpetuity
or for a fixed term (regardless of how the transaction is characterized),
the Corresponding Source conveyed under this section must be
accompanied by the Installation Information. But this requirement
does not apply if neither you nor any third party retains the ability
to install modified object code on the User Product (for example,
the work has been installed in ROM).

The requirement to provide Installation Information does not include
a requirement to continue to provide support service, warranty, or
updates for a work that has been modified or installed by the
recipient, or for the User Product in which it has been modified
or installed. Access to a network may be denied when the modification
itself materially and adversely affects the operation of the network
or violates the rules and protocols for communication across the
network.

Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

7. Additional Terms.  “Additional permissions” are terms that
supplement the terms of this License by making exceptions from one
or more of its conditions. Additional permissions that are applicable
to the entire Program shall be treated as though they were included
in this License, to the extent that they are valid under applicable
law. If additional permissions apply only to part of the Program,
that part may be used separately under those permissions, but the
entire Program remains governed by this License without regard to
the additional permissions.

When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part
of it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

Notwithstanding any other provision of this License, for material
you add to a covered work, you may (if authorized by the copyright
holders of that material) supplement the terms of this License with
terms:

a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or b) Requiring
preservation of specified reasonable legal notices or author
attributions in that material or in the Appropriate Legal Notices
displayed by works containing it; or c) Prohibiting misrepresentation
of the origin of that material, or requiring that modified versions
of such material be marked in reasonable ways as different from the
original version; or d) Limiting the use for publicity purposes of
names of licensors or authors of the material; or e) Declining to
grant rights under trademark law for use of some trade names,
trademarks, or service marks; or f) Requiring indemnification of
licensors and authors of that material by anyone who conveys the
material (or modified versions of it) with contractual assumptions
of liability to the recipient, for any liability that these contractual
assumptions directly impose on those licensors and authors.  All
other non-permissive additional terms are considered “further
restrictions” within the meaning of section 10. If the Program as
you received it, or any part of it, contains a notice stating that
it is governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under
this License, you may add to a covered work material governed by
the terms of that license document, provided that the further
restriction does not survive such relicensing or conveying.

If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

Additional terms, permissive or non-permissive, may be stated in
the form of a separately written license, or stated as exceptions;
the above requirements apply either way.

8. Termination.  You may not propagate or modify a covered work
except as expressly provided under this License. Any attempt otherwise
to propagate or modify it is void, and will automatically terminate
your rights under this License (including any patent licenses granted
under the third paragraph of section 11).

However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from
that copyright holder, and you cure the violation prior to 30 days
after your receipt of the notice.

Termination of your rights under this section does not terminate
the licenses of parties who have received copies or rights from you
under this License. If your rights have been terminated and not
permanently reinstated, you do not qualify to receive new licenses
for the same material under section 10.

9. Acceptance Not Required for Having Copies.  You are not required
to accept this License in order to receive or run a copy of the
Program. Ancillary propagation of a covered work occurring solely
as a consequence of using peer-to-peer transmission to receive a
copy likewise does not require acceptance. However, nothing other
than this License grants you permission to propagate or modify any
covered work. These actions infringe copyright if you do not accept
this License. Therefore, by modifying or propagating a covered work,
you indicate your acceptance of this License to do so.

10. Automatic Licensing of Downstream Recipients.  Each time you
convey a covered work, the recipient automatically receives a license
from the original licensors, to run, modify and propagate that work,
subject to this License. You are not responsible for enforcing
compliance by third parties with this License.

An “entity transaction” is a transaction transferring control of
an organization, or substantially all assets of one, or subdividing
an organization, or merging organizations. If propagation of a
covered work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or
could give under the previous paragraph, plus a right to possession
of the Corresponding Source of the work from the predecessor in
interest, if the predecessor has it or can get it with reasonable
efforts.

You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging
that any patent claim is infringed by making, using, selling,
offering for sale, or importing the Program or any portion of it.

11. Patents.  A “contributor” is a copyright holder who authorizes
use under this License of the Program or a work on which the Program
is based. The work thus licensed is called the contributor's
“contributor version”.

A contributor's “essential patent claims” are all patent claims
owned or controlled by the contributor, whether already acquired
or hereafter acquired, that would be infringed by some manner,
permitted by this License, of making, using, or selling its contributor
version, but do not include claims that would be infringed only as
a consequence of further modification of the contributor version.
For purposes of this definition, “control” includes the right to
grant patent sublicenses in a manner consistent with the requirements
of this License.

Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify
and propagate the contents of its contributor version.

In the following three paragraphs, a “patent license” is any express
agreement or commitment, however denominated, not to enforce a
patent (such as an express permission to practice a patent or
covenant not to sue for patent infringement). To “grant” such a
patent license to a party means to make such an agreement or
commitment not to enforce a patent against the party.

If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through
a publicly available network server or other readily accessible
means, then you must either (1) cause the Corresponding Source to
be so available, or (2) arrange to deprive yourself of the benefit
of the patent license for this particular work, or (3) arrange, in
a manner consistent with the requirements of this License, to extend
the patent license to downstream recipients. “Knowingly relying”
means you have actual knowledge that, but for the patent license,
your conveying the covered work in a country, or your recipient's
use of the covered work in a country, would infringe one or more
identifiable patents in that country that you have reason to believe
are valid.

If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of,
a covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate,
modify or convey a specific copy of the covered work, then the
patent license you grant is automatically extended to all recipients
of the covered work and works based on it.

A patent license is “discriminatory” if it does not include within
the scope of its coverage, prohibits the exercise of, or is conditioned
on the non-exercise of one or more of the rights that are specifically
granted under this License. You may not convey a covered work if
you are a party to an arrangement with a third party that is in the
business of distributing software, under which you make payment to
the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

12. No Surrender of Others' Freedom.  If conditions are imposed on
you (whether by court order, agreement or otherwise) that contradict
the conditions of this License, they do not excuse you from the
conditions of this License. If you cannot convey a covered work so
as to satisfy simultaneously your obligations under this License
and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that
obligate you to collect a royalty for further conveying from those
to whom you convey the Program, the only way you could satisfy both
those terms and this License would be to refrain entirely from
conveying the Program.

13. Use with the GNU Affero General Public License.  Notwithstanding
any other provision of this License, you have permission to link
or combine any covered work with a work licensed under version 3
of the GNU Affero General Public License into a single combined
work, and to convey the resulting work. The terms of this License
will continue to apply to the part which is the covered work, but
the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to
the combination as such.

14. Revised Versions of this License.  The Free Software Foundation
may publish revised and/or new versions of the GNU General Public
License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address
new problems or concerns.

Each version is given a distinguishing version number. If the Program
specifies that a certain numbered version of the GNU General Public
License “or any later version” applies to it, you have the option
of following the terms and conditions either of that numbered version
or of any later version published by the Free Software Foundation.
If the Program does not specify a version number of the GNU General
Public License, you may choose any version ever published by the
Free Software Foundation.

If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes
you to choose that version for the Program.

Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow
a later version.

15. Disclaimer of Warranty.  THERE IS NO WARRANTY FOR THE PROGRAM,
TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE
THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.

16. Limitation of Liability.  IN NO EVENT UNLESS REQUIRED BY
APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER,
OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS
PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

17. Interpretation of Sections 15 and 16.  If the disclaimer of
warranty and limitation of liability provided above cannot be given
local legal effect according to their terms, reviewing courts shall
apply local law that most closely approximates an absolute waiver
of all civil liability in connection with the Program, unless a
warranty or assumption of liability accompanies a copy of the Program
in return for a fee.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs If you develop a new
program, and you want it to be of the greatest possible use to the
public, the best way to achieve this is to make it free software
which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the “copyright” line and a pointer to where the full notice is
found.

<one line to give the program's name and a brief idea of what it
does.> Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation, either version 3 of the License,
or (at your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper
mail.

If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

<program>  Copyright (C) <year>  <name of author> This program comes
with ABSOLUTELY NO WARRANTY; for details type `show w'.  This is
free software, and you are welcome to redistribute it under certain
conditions; type `show c' for details. The hypothetical commands
`show w' and `show c' should show the appropriate parts of the
General Public License. Of course, your program's commands might
be different; for a GUI interface, you would use an “about box”.

You should also get your employer (if you work as a programmer) or
school, if any, to sign a “copyright disclaimer” for the program,
if necessary. For more information on this, and how to apply and
follow the GNU GPL, see <https://www.gnu.org/licenses/>.

The GNU General Public License does not permit incorporating your
program into proprietary programs. If your program is a subroutine
library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Lesser General Public License instead of this License. But
first, please read <https://www.gnu.org/licenses/why-not-lgpl.html>.

Die erwartete CRC32-Prüfsumme ist $2C68A922
/dev/disk2          	Apple_partition_scheme
/dev/disk2s1        	Apple_partition_map
/dev/disk2s2        	Apple_HFS                      	/Volumes/Horos

2022-07-04 23:48:33 : INFO  : horos : Mounted: /Volumes/Horos
2022-07-04 23:48:33 : INFO  : horos : Verifying: /Volumes/Horos/Horos.app
2022-07-04 23:48:33 : DEBUG : horos : App size: 146M	/Volumes/Horos/Horos.app
2022-07-04 23:48:36 : DEBUG : horos : Debugging enabled, App Verification output was:
/Volumes/Horos/Horos.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Nimble CO LLC (TPT6TVH8UY)

2022-07-04 23:48:36 : INFO  : horos : Team ID matching: TPT6TVH8UY (expected: TPT6TVH8UY )
2022-07-04 23:48:36 : INFO  : horos : Downloaded version of Horos is Horos v4.0.0 RC5 on versionKey CFBundleGetInfoString, same as installed.
2022-07-04 23:48:36 : DEBUG : horos : Unmounting /Volumes/Horos
2022-07-04 23:48:36 : DEBUG : horos : Debugging enabled, Unmounting output was:
"disk2" ejected.
2022-07-04 23:48:36 : DEBUG : horos : DEBUG mode 1, not reopening anything
2022-07-04 23:48:36 : REG   : horos : No new version to install
2022-07-04 23:48:36 : REQ   : horos : ################## End Installomator, exit code 0
2022-07-04 23:55:38 +02:00
macmangr
face2a7e93 New Label: Filemaker Pro
"FileMaker is a cross-platform relational database application from Claris International, a subsidiary of Apple Inc. It integrates a database engine with a graphical user interface (GUI) and security features, allowing users to modify a database by dragging new elements into layouts, screens, or forms. It is available in desktop, server, iOS and web-delivery configurations"

./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels filemakerpro
2022-07-04 15:35:36 : REQ   : filemakerpro : ################## Start Installomator v. 10.0beta, date 2022-07-04
2022-07-04 15:35:36 : INFO  : filemakerpro : ################## Version: 10.0beta
2022-07-04 15:35:36 : INFO  : filemakerpro : ################## Date: 2022-07-04
2022-07-04 15:35:36 : INFO  : filemakerpro : ################## filemakerpro
2022-07-04 15:35:37 : DEBUG : filemakerpro : DEBUG mode 1 enabled.
2022-07-04 15:35:37 : INFO  : filemakerpro : BLOCKING_PROCESS_ACTION=tell_user
2022-07-04 15:35:37 : INFO  : filemakerpro : NOTIFY=success
2022-07-04 15:35:37 : INFO  : filemakerpro : LOGGING=DEBUG
2022-07-04 15:35:37 : INFO  : filemakerpro : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-04 15:35:37 : INFO  : filemakerpro : Label type: dmg
2022-07-04 15:35:37 : INFO  : filemakerpro : archiveName: FileMaker Pro.dmg
2022-07-04 15:35:37 : INFO  : filemakerpro : no blocking processes defined, using FileMaker Pro as default
2022-07-04 15:35:37 : DEBUG : filemakerpro : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-07-04 15:35:37 : INFO  : filemakerpro : App(s) found: /Applications/FileMaker Pro.app
2022-07-04 15:35:37 : INFO  : filemakerpro : found app at /Applications/FileMaker Pro.app, version 19.5.1.36, on versionKey BuildVersion
2022-07-04 15:35:37 : INFO  : filemakerpro : appversion: 19.5.1.36
2022-07-04 15:35:37 : INFO  : filemakerpro : Latest version of FileMaker Pro is 19.5.1.36
2022-07-04 15:35:37 : WARN  : filemakerpro : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-07-04 15:35:37 : INFO  : filemakerpro : FileMaker Pro.dmg exists and DEBUG mode 1 enabled, skipping download
2022-07-04 15:35:37 : DEBUG : filemakerpro : DEBUG mode 1, not checking for blocking processes
2022-07-04 15:35:37 : REQ   : filemakerpro : Installing FileMaker Pro
2022-07-04 15:35:37 : INFO  : filemakerpro : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/FileMaker Pro.dmg
2022-07-04 15:35:38 : DEBUG : filemakerpro : Debugging enabled, dmgmount output was:
Die erwartete CRC32-Prüfsumme ist $4150F8F9
/dev/disk2          	GUID_partition_scheme
/dev/disk2s1        	Apple_HFS                      	/Volumes/FileMaker Pro 19

2022-07-04 15:35:38 : INFO  : filemakerpro : Mounted: /Volumes/FileMaker Pro 19
2022-07-04 15:35:38 : INFO  : filemakerpro : Verifying: /Volumes/FileMaker Pro 19/FileMaker Pro.app
2022-07-04 15:35:38 : DEBUG : filemakerpro : App size: 966M	/Volumes/FileMaker Pro 19/FileMaker Pro.app
2022-07-04 15:38:04 : DEBUG : filemakerpro : Debugging enabled, App Verification output was:
/Volumes/FileMaker Pro 19/FileMaker Pro.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Claris International Inc. (J6K4T76U7W)

2022-07-04 15:38:04 : INFO  : filemakerpro : Team ID matching: J6K4T76U7W (expected: J6K4T76U7W )
2022-07-04 15:38:04 : INFO  : filemakerpro : Downloaded version of FileMaker Pro is 19.5.1.36 on versionKey BuildVersion, same as installed.
2022-07-04 15:38:04 : DEBUG : filemakerpro : Unmounting /Volumes/FileMaker Pro 19
2022-07-04 15:38:05 : DEBUG : filemakerpro : Debugging enabled, Unmounting output was:
"disk2" ejected.
2022-07-04 15:38:05 : DEBUG : filemakerpro : DEBUG mode 1, not reopening anything
2022-07-04 15:38:05 : REG   : filemakerpro : No new version to install
2022-07-04 15:38:05 : REQ   : filemakerpro : ################## End Installomator, exit code 0
2022-07-04 15:46:02 +02:00
macmangr
02946d88c8 New Label: Java SE Development Kit 18
./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels jdk18
2022-07-04 13:21:27 : REQ   : jdk18 : ################## Start Installomator v. 10.0beta, date 2022-07-04
2022-07-04 13:21:27 : INFO  : jdk18 : ################## Version: 10.0beta
2022-07-04 13:21:27 : INFO  : jdk18 : ################## Date: 2022-07-04
2022-07-04 13:21:27 : INFO  : jdk18 : ################## jdk18
2022-07-04 13:21:27 : DEBUG : jdk18 : DEBUG mode 1 enabled.
2022-07-04 13:21:27 : INFO  : jdk18 : BLOCKING_PROCESS_ACTION=tell_user
2022-07-04 13:21:27 : INFO  : jdk18 : NOTIFY=success
2022-07-04 13:21:27 : INFO  : jdk18 : LOGGING=DEBUG
2022-07-04 13:21:28 : INFO  : jdk18 : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-04 13:21:28 : INFO  : jdk18 : Label type: pkgInDmg
2022-07-04 13:21:28 : INFO  : jdk18 : archiveName: Java SE Development Kit 18.dmg
2022-07-04 13:21:28 : INFO  : jdk18 : no blocking processes defined, using Java SE Development Kit 18 as default
2022-07-04 13:21:28 : DEBUG : jdk18 : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-07-04 13:21:28 : INFO  : jdk18 : Custom App Version detection is used, found 18.0.1.1
2022-07-04 13:21:28 : INFO  : jdk18 : appversion: 18.0.1.1
2022-07-04 13:21:28 : INFO  : jdk18 : Latest version of Java SE Development Kit 18 is 18.0.1.1
2022-07-04 13:21:28 : WARN  : jdk18 : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-07-04 13:21:28 : REQ   : jdk18 : Downloading https://download.oracle.com/java/18/latest/jdk-18_macos-x64_bin.dmg to Java SE Development Kit 18.dmg
2022-07-04 13:21:53 : DEBUG : jdk18 : File list: -rw-r--r--  1 savvas  staff   170M  4 Jul 13:21 Java SE Development Kit 18.dmg
2022-07-04 13:21:53 : DEBUG : jdk18 : File type: Java SE Development Kit 18.dmg: zlib compressed data
2022-07-04 13:21:53 : DEBUG : jdk18 : curl output was:
*   Trying 104.76.200.85:443...
* Connected to download.oracle.com (104.76.200.85) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [324 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [35 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [2926 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: C=US; ST=California; L=Redwood City; O=Oracle Corporation; CN=download.oracle.com
*  start date: Sep 13 00:00:00 2021 GMT
*  expire date: Sep 13 23:59:59 2022 GMT
*  subjectAltName: host "download.oracle.com" matched cert's "download.oracle.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
*  SSL certificate verify ok.
> GET /java/18/latest/jdk-18_macos-x64_bin.dmg HTTP/1.1
> Host: download.oracle.com
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Content-Type: application/octet-stream
< Server: AkamaiNetStorage
< Last-Modified: Tue, 26 Apr 2022 18:40:47 GMT
< ETag: "a5314d086c18af3e93121e11fc25f5af:1650998873.170204"
< Content-Length: 178108545
< Date: Mon, 04 Jul 2022 11:21:28 GMT
< Connection: keep-alive
<
{ [16083 bytes data]
* Connection #0 to host download.oracle.com left intact

2022-07-04 13:21:53 : DEBUG : jdk18 : DEBUG mode 1, not checking for blocking processes
2022-07-04 13:21:53 : REQ   : jdk18 : Installing Java SE Development Kit 18
2022-07-04 13:21:53 : INFO  : jdk18 : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Java SE Development Kit 18.dmg
2022-07-04 13:21:56 : DEBUG : jdk18 : Debugging enabled, dmgmount output was:
Prüfsumme für Protective Master Boot Record (MBR : 0) berechnen …
Protective Master Boot Record (MBR :: Die überprüfte CRC32-Prüfsumme ist $A63E199D
Prüfsumme für GPT Header (Primary GPT Header : 1) berechnen …
GPT Header (Primary GPT Header : 1): Die überprüfte CRC32-Prüfsumme ist $4CAA2C48
Prüfsumme für GPT Partition Data (Primary GPT Table : 2) berechnen …
GPT Partition Data (Primary GPT Tabl: Die überprüfte CRC32-Prüfsumme ist $D15A79FE
Prüfsumme für  (Apple_Free : 3) berechnen …
(Apple_Free : 3): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für disk image (Apple_HFS : 4) berechnen …
disk image (Apple_HFS : 4): Die überprüfte CRC32-Prüfsumme ist $0F56211E
Prüfsumme für  (Apple_Free : 5) berechnen …
(Apple_Free : 5): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für GPT Partition Data (Backup GPT Table : 6) berechnen …
GPT Partition Data (Backup GPT Table: Die überprüfte CRC32-Prüfsumme ist $D15A79FE
Prüfsumme für GPT Header (Backup GPT Header : 7) berechnen …
GPT Header (Backup GPT Header : 7): Die überprüfte CRC32-Prüfsumme ist $D36773E6
Die überprüfte CRC32-Prüfsumme ist $EF324497
/dev/disk2          	GUID_partition_scheme
/dev/disk2s1        	Apple_HFS                      	/Volumes/JDK 18.0.1.1

2022-07-04 13:21:56 : INFO  : jdk18 : Mounted: /Volumes/JDK 18.0.1.1
2022-07-04 13:21:56 : DEBUG : jdk18 : Found pkg(s):
/Volumes/JDK 18.0.1.1/JDK 18.0.1.1.pkg
2022-07-04 13:21:56 : INFO  : jdk18 : found pkg: /Volumes/JDK 18.0.1.1/JDK 18.0.1.1.pkg
2022-07-04 13:21:56 : INFO  : jdk18 : Verifying: /Volumes/JDK 18.0.1.1/JDK 18.0.1.1.pkg
2022-07-04 13:21:56 : DEBUG : jdk18 : File list: -rw-r--r--  1 savvas  staff   171M 25 Apr 23:09 /Volumes/JDK 18.0.1.1/JDK 18.0.1.1.pkg
2022-07-04 13:21:56 : DEBUG : jdk18 : File type: /Volumes/JDK 18.0.1.1/JDK 18.0.1.1.pkg: xar archive compressed TOC: 5557, SHA-1 checksum
2022-07-04 13:21:56 : DEBUG : jdk18 : spctlOut is /Volumes/JDK 18.0.1.1/JDK 18.0.1.1.pkg: accepted
2022-07-04 13:21:56 : DEBUG : jdk18 : source=Notarized Developer ID
2022-07-04 13:21:56 : DEBUG : jdk18 : origin=Developer ID Installer: Oracle America, Inc. (VB5E2TV963)
2022-07-04 13:21:56 : INFO  : jdk18 : Team ID: VB5E2TV963 (expected: VB5E2TV963 )
2022-07-04 13:21:56 : DEBUG : jdk18 : DEBUG enabled, skipping installation
2022-07-04 13:21:56 : INFO  : jdk18 : Finishing...
2022-07-04 13:22:06 : INFO  : jdk18 : Custom App Version detection is used, found 18.0.1.1
2022-07-04 13:22:06 : REQ   : jdk18 : Installed Java SE Development Kit 18, version 18.0.1.1
2022-07-04 13:22:06 : INFO  : jdk18 : notifying
2022-07-04 13:22:06 : DEBUG : jdk18 : Unmounting /Volumes/JDK 18.0.1.1
2022-07-04 13:22:07 : DEBUG : jdk18 : Debugging enabled, Unmounting output was:
"disk2" ejected.
2022-07-04 13:22:07 : DEBUG : jdk18 : DEBUG mode 1, not reopening anything
2022-07-04 13:22:07 : REQ   : jdk18 : All done!
2022-07-04 13:22:07 : REQ   : jdk18 : ################## End Installomator, exit code 0
2022-07-04 13:23:03 +02:00
macmangr
05816942cc New Label: Parallels Client
"Access Windows Applications, Desktops, or Data on Any Device

Parallels® Client is a lightweight software that enables end-users to securely access virtual applications and desktops from Windows, Mac, Linux, iOS/iPadOS, Android, Google Chromebook and any HTML5 web browser."

./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels rasclient NOTIFY=silent DEBUG=0
Password:
2022-07-04 12:59:53 : WARN  : rasclient : setting variable from argument NOTIFY=silent
2022-07-04 12:59:53 : WARN  : rasclient : setting variable from argument DEBUG=0
2022-07-04 12:59:53 : REQ   : rasclient : ################## Start Installomator v. 10.0beta, date 2022-07-04
2022-07-04 12:59:53 : INFO  : rasclient : ################## Version: 10.0beta
2022-07-04 12:59:53 : INFO  : rasclient : ################## Date: 2022-07-04
2022-07-04 12:59:53 : INFO  : rasclient : ################## rasclient
2022-07-04 12:59:53 : INFO  : rasclient : BLOCKING_PROCESS_ACTION=tell_user
2022-07-04 12:59:53 : INFO  : rasclient : NOTIFY=silent
2022-07-04 12:59:53 : INFO  : rasclient : LOGGING=INFO
2022-07-04 12:59:53 : INFO  : rasclient : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-07-04 12:59:53 : INFO  : rasclient : Label type: pkg
2022-07-04 12:59:53 : INFO  : rasclient : archiveName: Parallels Client.pkg
2022-07-04 12:59:53 : INFO  : rasclient : no blocking processes defined, using Parallels Client as default
2022-07-04 12:59:53 : INFO  : rasclient : App(s) found: /Applications/Parallels Client.app
2022-07-04 12:59:53 : INFO  : rasclient : found app at /Applications/Parallels Client.app, version 18.3.22907, on versionKey CFBundleShortVersionString
2022-07-04 12:59:53 : INFO  : rasclient : appversion: 18.3.22907
2022-07-04 12:59:53 : INFO  : rasclient : Latest version of Parallels Client is 18.3.1.22907
2022-07-04 12:59:53 : REQ   : rasclient : Downloading https://download.parallels.com/ras/v18/18.3.1.22907/RasClient-Mac-Notarized-18.3.1-22907.pkg to Parallels Client.pkg
2022-07-04 12:59:55 : REQ   : rasclient : no more blocking processes, continue with update
2022-07-04 12:59:55 : REQ   : rasclient : Installing Parallels Client
2022-07-04 12:59:55 : INFO  : rasclient : Verifying: Parallels Client.pkg
2022-07-04 12:59:55 : INFO  : rasclient : Team ID: 4C6364ACXT (expected: 4C6364ACXT )
2022-07-04 12:59:55 : INFO  : rasclient : Installing Parallels Client.pkg to /
2022-07-04 13:00:02 : INFO  : rasclient : Finishing...
2022-07-04 13:00:12 : INFO  : rasclient : App(s) found: /Applications/Parallels Client.app
2022-07-04 13:00:12 : INFO  : rasclient : found app at /Applications/Parallels Client.app, version 18.3.22907, on versionKey CFBundleShortVersionString
2022-07-04 13:00:12 : REQ   : rasclient : Installed Parallels Client, version 18.3.22907
2022-07-04 13:00:12 : INFO  : rasclient : App not closed, so no reopen.
2022-07-04 13:00:12 : REQ   : rasclient : All done!
2022-07-04 13:00:12 : REQ   : rasclient : ################## End Installomator, exit code 0
2022-07-04 13:15:22 +02:00
macmangr
6a2da9f55c Update libreoffice.sh
Changed appNewVersion check, so that no download is started if the same version of the software is installed

Changed download url
2022-07-04 12:49:29 +02:00
Joel Hatcher
6412c9f527 Create inetclearreportsdesigner.sh 2022-06-29 15:42:37 -05:00
duongt01
09a34c05b7 New Label: Fellow 2022-06-28 16:10:29 -05:00
Chriscodinglife
8116800835 Added the much needed ending ) 2022-06-28 16:45:15 -04:00
Chriscodinglife
3fd88f6207 Corrected the version grab one more time 2022-06-28 16:43:41 -04:00
Chriscodinglife
a84b14234e Corrected appnewversion variable with sed grabbing the version number displayed in the package file 2022-06-28 16:36:41 -04:00
Chriscodinglife
66133a5520 Added the Fujifilm label for future dslr webcam fans 2022-06-28 15:18:41 -04:00
MrAZisHere
1dfa162783 Update sublimetext.sh
download url has changed
2022-06-24 20:40:48 +08:00
duongt01
473fcb11d8 New Label: Fellow 2022-06-23 17:27:15 -05:00
duongt01
3cd367a1b0 New Label: Dynalist 2022-06-23 16:47:25 -05:00
Armin Briegel
aa4b3db04e added packageID to boxtools 2022-06-23 16:57:34 +02:00
Thomas Martin
e0c4e0ca26 Create coconutbattery.sh
Label for Coconut Battery.
2022-06-22 11:35:20 -04:00
Armin Briegel
4e5f069024 Merge pull request #565 from Installomator/Barco-ClickShare
Barco click share
2022-06-22 15:23:06 +02:00
Armin Briegel
034e60a190 Merge pull request #560 from Installomator/Theile-labels-10
WhatRoute label
2022-06-22 15:19:24 +02:00
Armin Briegel
053b0a1225 Merge pull request #544 from Installomator/Marathon-Trilogy
Marathon Trilogy with `versionKey` added to the labels.
2022-06-22 15:13:27 +02:00
Armin Briegel
4eb6a94a53 Merge pull request #540 from scriptingosx/assemble-script-update
updated assemble.sh to update Labels.txt when script is built
2022-06-22 15:05:50 +02:00
Armin Briegel
f166cf7efa Merge pull request #539 from scriptingosx/miro-universal
updated miro for arm download
2022-06-22 15:05:20 +02:00
Armin Briegel
60f7ee237a Merge pull request #533 from scriptingosx/egnyte-version
add appNewVersion to egnyte label
2022-06-22 15:04:46 +02:00
Armin Briegel
69bb31b3a2 Merge pull request #535 from cardinaldeville/main
Fixes issue with Blender not installing
2022-06-22 15:02:32 +02:00
Armin Briegel
fe48e4628e Merge pull request #419 2022-06-22 14:57:26 +02:00
Armin Briegel
acb2963f7a changed filename case 2022-06-22 14:55:10 +02:00
Armin Briegel
5b46970d51 Merge branch 'dev' 2022-06-22 14:52:04 +02:00
Armin Briegel
6f9d2a711d Merge pull request #506 from theadamcraig/patch-2
Create bluejeanswithaudiodriver label
2022-06-22 14:50:44 +02:00
Armin Briegel
f444c9a0ba Merge pull request #532 from FletcherS7/main
New Label: Google Chrome Enterprise
2022-06-22 14:48:06 +02:00
Fletcher Salesky
521d6e8672 Update awsvpnclient.sh 2022-06-20 15:13:27 -07:00
Fletcher Salesky
ae34d5591e Update Wireshark download URL
Update Wireshark to use version from appNewVersion to prevent grabbing dev builds.
2022-06-20 10:50:20 -07:00
macmangr
64cdeffb90 New Label: LANCOM Advanced VPN Client
"Secure corporate network access when traveling

The LANCOM Advanced VPN Client provides mobile employees with encrypted access to the company network, whether they are at their home office, on the road, or even abroad. The application is extremely easy to use; once VPN access (virtual private network) has been configured, a click of the mouse is all it takes to establish a secure VPN connection over the best available connection medium. Further data protection comes with the integrated stateful inspection firewall, support of all IPSec protocol extensions, and numerous other security features."

./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels lcadvancedvpnclient
2022-06-19 18:09:08 : REQ   : lcadvancedvpnclient : ################## Start Installomator v. 9.2, date 2022-06-19
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : ################## Version: 9.2
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : ################## Date: 2022-06-19
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : ################## lcadvancedvpnclient
2022-06-19 18:09:08 : DEBUG : lcadvancedvpnclient : DEBUG mode 1 enabled.
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : BLOCKING_PROCESS_ACTION=tell_user
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : NOTIFY=success
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : LOGGING=DEBUG
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : Label type: pkgInDmg
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : archiveName: LANCOM Advanced VPN Client.dmg
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : no blocking processes defined, using LANCOM Advanced VPN Client as default
2022-06-19 18:09:08 : DEBUG : lcadvancedvpnclient : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-06-19 18:09:08 : INFO  : lcadvancedvpnclient : App(s) found: /Applications/LANCOM Advanced VPN Client.app
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : found app at /Applications/LANCOM Advanced VPN Client.app, version 4.61, on versionKey CFBundleShortVersionString
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : appversion: 4.61
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : Latest version of LANCOM Advanced VPN Client is 4.61
2022-06-19 18:09:09 : WARN  : lcadvancedvpnclient : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : LANCOM Advanced VPN Client.dmg exists and DEBUG mode 1 enabled, skipping download
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : DEBUG mode 1, not checking for blocking processes
2022-06-19 18:09:09 : REQ   : lcadvancedvpnclient : Installing LANCOM Advanced VPN Client
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/LANCOM Advanced VPN Client.dmg
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : Debugging enabled, dmgmount output was:
Die erwartete CRC32-Prüfsumme ist $137E58B2
/dev/disk4          	GUID_partition_scheme
/dev/disk4s1        	Apple_HFS                      	/Volumes/LANCOM Advanced VPN Client Installation 1

2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : Mounted: /Volumes/LANCOM Advanced VPN Client Installation 1
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : Found pkg(s):
/Volumes/LANCOM Advanced VPN Client Installation 1/LANCOM Advanced VPN Client.pkg
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : /Volumes/LANCOM Advanced VPN Client Installation 1/Uninstall.pkg
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : found pkg: /Volumes/LANCOM Advanced VPN Client Installation 1/LANCOM Advanced VPN Client.pkg
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : Verifying: /Volumes/LANCOM Advanced VPN Client Installation 1/LANCOM Advanced VPN Client.pkg
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : File list: -rw-r--r--@ 1 savvas  staff    10M 20 Dez 10:54 /Volumes/LANCOM Advanced VPN Client Installation 1/LANCOM Advanced VPN Client.pkg
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : File type: /Volumes/LANCOM Advanced VPN Client Installation 1/LANCOM Advanced VPN Client.pkg: xar archive compressed TOC: 8307, SHA-1 checksum
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : spctlOut is /Volumes/LANCOM Advanced VPN Client Installation 1/LANCOM Advanced VPN Client.pkg: accepted
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : source=Notarized Developer ID
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : override=security disabled
2022-06-19 18:09:09 : DEBUG : lcadvancedvpnclient : origin=Developer ID Installer: NCP engineering GmbH (LL3KBL2M3A)
2022-06-19 18:09:09 : INFO  : lcadvancedvpnclient : Team ID: LL3KBL2M3A (expected: LL3KBL2M3A )
2022-06-19 18:09:10 : DEBUG : lcadvancedvpnclient : DEBUG enabled, skipping installation
2022-06-19 18:09:10 : INFO  : lcadvancedvpnclient : Finishing...
2022-06-19 18:09:20 : INFO  : lcadvancedvpnclient : App(s) found: /Applications/LANCOM Advanced VPN Client.app
2022-06-19 18:09:20 : INFO  : lcadvancedvpnclient : found app at /Applications/LANCOM Advanced VPN Client.app, version 4.61, on versionKey CFBundleShortVersionString
2022-06-19 18:09:20 : REQ   : lcadvancedvpnclient : Installed LANCOM Advanced VPN Client, version 4.61
2022-06-19 18:09:20 : INFO  : lcadvancedvpnclient : notifying
2022-06-19 18:09:20 : DEBUG : lcadvancedvpnclient : Unmounting /Volumes/LANCOM Advanced VPN Client Installation 1
2022-06-19 18:09:20 : DEBUG : lcadvancedvpnclient : Debugging enabled, Unmounting output was:
"disk4" ejected.
2022-06-19 18:09:20 : DEBUG : lcadvancedvpnclient : DEBUG mode 1, not reopening anything
2022-06-19 18:09:20 : REQ   : lcadvancedvpnclient : All done!
2022-06-19 18:09:20 : REQ   : lcadvancedvpnclient : ################## End Installomator, exit code 0
2022-06-19 18:12:23 +02:00
macmangr
10afa45f5e New Label: Typinator
"Have you ever experienced the tedium and frustration of having to repeatedly type your name, e-mail address, home page url, or other words or phrases again, again and again? Do you frequently need to quickly insert images like your signature, location plan, or company logo into documents? Do you often misspell words when typing?

Typinator boosts your productivity by automating the process of inserting frequently used text and graphics and auto-correcting typing errors."

./assemble.sh -l /Desktop/Mosyle/Resources/InstallomatorLabels typinator
2022-06-19 14:31:10 : REQ   : typinator : ################## Start Installomator v. 9.2, date 2022-06-19
2022-06-19 14:31:10 : INFO  : typinator : ################## Version: 9.2
2022-06-19 14:31:10 : INFO  : typinator : ################## Date: 2022-06-19
2022-06-19 14:31:10 : INFO  : typinator : ################## typinator
2022-06-19 14:31:10 : DEBUG : typinator : DEBUG mode 1 enabled.
2022-06-19 14:31:10 : INFO  : typinator : BLOCKING_PROCESS_ACTION=tell_user
2022-06-19 14:31:10 : INFO  : typinator : NOTIFY=success
2022-06-19 14:31:10 : INFO  : typinator : LOGGING=DEBUG
2022-06-19 14:31:10 : INFO  : typinator : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-06-19 14:31:10 : INFO  : typinator : Label type: zip
2022-06-19 14:31:10 : INFO  : typinator : archiveName: Typinator.zip
2022-06-19 14:31:10 : INFO  : typinator : no blocking processes defined, using Typinator as default
2022-06-19 14:31:10 : DEBUG : typinator : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-06-19 14:31:10 : INFO  : typinator : App(s) found: /Applications/Typinator.app
2022-06-19 14:31:11 : INFO  : typinator : found app at /Applications/Typinator.app, version 8.11, on versionKey CFBundleShortVersionString
2022-06-19 14:31:11 : INFO  : typinator : appversion: 8.11
2022-06-19 14:31:11 : INFO  : typinator : Latest version of Typinator is 8.12.1
2022-06-19 14:31:11 : REQ   : typinator : Downloading https://update.ergonis.com/downloads/products/typinator/Typinator.app.zip to Typinator.zip
2022-06-19 14:31:14 : DEBUG : typinator : File list: -rw-r--r--  1 savvas  staff   9,6M 19 Jun 14:31 Typinator.zip
2022-06-19 14:31:14 : DEBUG : typinator : File type: Typinator.zip: Zip archive data, at least v2.0 to extract, compression method=store
2022-06-19 14:31:14 : DEBUG : typinator : curl output was:
*   Trying 83.164.197.124:443...
* Connected to update.ergonis.com (83.164.197.124) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [323 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [108 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [5715 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [401 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [138 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=*.ergonis.com
*  start date: Aug 19 00:00:00 2020 GMT
*  expire date: Sep 28 12:00:00 2022 GMT
*  subjectAltName: host "update.ergonis.com" matched cert's "*.ergonis.com"
*  issuer: C=US; O=DigiCert Inc; CN=RapidSSL TLS DV RSA Mixed SHA256 2020 CA-1
*  SSL certificate verify ok.
> GET /downloads/products/typinator/Typinator.app.zip HTTP/1.1
> Host: update.ergonis.com
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Sun, 19 Jun 2022 12:31:11 GMT
< Server: Apache
< Last-Modified: Wed, 20 Apr 2022 14:50:53 GMT
< ETag: "9934e6-5dd171eb94d40"
< Accept-Ranges: bytes
< Content-Length: 10040550
< MS-Author-Via: DAV
< Content-Type: application/zip
<
{ [7696 bytes data]
* Connection #0 to host update.ergonis.com left intact

2022-06-19 14:31:14 : DEBUG : typinator : DEBUG mode 1, not checking for blocking processes
2022-06-19 14:31:14 : REQ   : typinator : Installing Typinator
2022-06-19 14:31:14 : INFO  : typinator : Unzipping Typinator.zip
2022-06-19 14:31:14 : INFO  : typinator : Verifying: /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Typinator.app
2022-06-19 14:31:14 : DEBUG : typinator : App size:  16M	/Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Typinator.app
2022-06-19 14:31:14 : DEBUG : typinator : Debugging enabled, App Verification output was:
/Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Typinator.app: accepted
source=Notarized Developer ID
override=security disabled
origin=Developer ID Application: Ergonis Software GmbH (TU7D9Y7GTQ)

2022-06-19 14:31:14 : INFO  : typinator : Team ID matching: TU7D9Y7GTQ (expected: TU7D9Y7GTQ )
2022-06-19 14:31:14 : INFO  : typinator : Downloaded version of Typinator is 8.12.1 on versionKey CFBundleShortVersionString (replacing version 8.11).
2022-06-19 14:31:14 : INFO  : typinator : App has LSMinimumSystemVersion: 10.9
2022-06-19 14:31:14 : DEBUG : typinator : DEBUG mode 1 enabled, skipping remove, copy and chown steps
2022-06-19 14:31:14 : INFO  : typinator : Finishing...
2022-06-19 14:31:24 : INFO  : typinator : App(s) found: /Applications/Typinator.app
2022-06-19 14:31:25 : INFO  : typinator : found app at /Applications/Typinator.app, version 8.11, on versionKey CFBundleShortVersionString
2022-06-19 14:31:25 : REQ   : typinator : Installed Typinator, version 8.11
2022-06-19 14:31:25 : INFO  : typinator : notifying
2022-06-19 14:31:25 : DEBUG : typinator : DEBUG mode 1, not reopening anything
2022-06-19 14:31:25 : REQ   : typinator : All done!
2022-06-19 14:31:25 : REQ   : typinator : ################## End Installomator, exit code 0
2022-06-19 14:36:39 +02:00
macmangr
7e515b0366 New Label: Synology Drive Client
"Synology Drive Client desktop application is the desktop utility that provides file syncing and personal computer backup service on multiple client computers to a centralized server, Synology Drive Server."

./assemble.sh -l /Users/savvas/Desktop/Mosyle/Resources/InstallomatorLabels synologydriveclient
2022-06-17 22:04:10 : REQ   : synologydriveclient : ################## Start Installomator v. 9.2, date 2022-06-17
2022-06-17 22:04:10 : INFO  : synologydriveclient : ################## Version: 9.2
2022-06-17 22:04:10 : INFO  : synologydriveclient : ################## Date: 2022-06-17
2022-06-17 22:04:10 : INFO  : synologydriveclient : ################## synologydriveclient
2022-06-17 22:04:10 : DEBUG : synologydriveclient : DEBUG mode 1 enabled.
2022-06-17 22:04:10 : INFO  : synologydriveclient : BLOCKING_PROCESS_ACTION=tell_user
2022-06-17 22:04:10 : INFO  : synologydriveclient : NOTIFY=success
2022-06-17 22:04:10 : INFO  : synologydriveclient : LOGGING=DEBUG
2022-06-17 22:04:10 : INFO  : synologydriveclient : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-06-17 22:04:10 : INFO  : synologydriveclient : Label type: pkgInDmg
2022-06-17 22:04:10 : INFO  : synologydriveclient : archiveName: Synology Drive Client.dmg
2022-06-17 22:04:10 : INFO  : synologydriveclient : no blocking processes defined, using Synology Drive Client as default
2022-06-17 22:04:10 : DEBUG : synologydriveclient : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-06-17 22:04:10 : INFO  : synologydriveclient : found packageID com.synology.CloudStation installed, version 7.1.0
2022-06-17 22:04:10 : INFO  : synologydriveclient : appversion: 7.1.0
2022-06-17 22:04:10 : INFO  : synologydriveclient : Latest version of Synology Drive Client is 7.1.0
2022-06-17 22:04:10 : WARN  : synologydriveclient : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-06-17 22:04:10 : REQ   : synologydriveclient : Downloading https://global.download.synology.com/download/Utility/SynologyDriveClient/3.1.0-12923/Mac/Installer/synology-drive-client-12923.dmg to Synology Drive Client.dmg
2022-06-17 22:04:21 : DEBUG : synologydriveclient : File list: -rw-r--r--  1 savvas  staff    71M 17 Jun 22:04 Synology Drive Client.dmg
2022-06-17 22:04:21 : DEBUG : synologydriveclient : File type: Synology Drive Client.dmg: bzip2 compressed data, block size = 100k
2022-06-17 22:04:21 : DEBUG : synologydriveclient : curl output was:
*   Trying 65.9.66.38:443...
* Connected to global.download.synology.com (65.9.66.38) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [333 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [5175 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=global.download.synology.com
*  start date: Apr 29 07:21:41 2022 GMT
*  expire date: May 31 07:21:41 2023 GMT
*  subjectAltName: host "global.download.synology.com" matched cert's "global.download.synology.com"
*  issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7f88cf80f600)
> GET /download/Utility/SynologyDriveClient/3.1.0-12923/Mac/Installer/synology-drive-client-12923.dmg HTTP/2
> Host: global.download.synology.com
> user-agent: curl/7.79.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
< content-type: application/octet-stream
< content-length: 74575228
< date: Tue, 07 Jun 2022 18:38:15 GMT
< last-modified: Thu, 28 Apr 2022 19:03:08 GMT
< etag: "8719eb20e8d6435edf7dfdeac1cf50be-15"
< accept-ranges: bytes
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 579a21a67e4dc50a655a7c0e9675261c.cloudfront.net (CloudFront)
< x-amz-cf-pop: FRA56-C1
< x-amz-cf-id: XWM1zUJtP5srb0NPTx7G-SF0nyJTplNgidIVYimK-CjQ-0HmcTVGQg==
< age: 869157
<
{ [2896 bytes data]
* Connection #0 to host global.download.synology.com left intact

2022-06-17 22:04:21 : DEBUG : synologydriveclient : DEBUG mode 1, not checking for blocking processes
2022-06-17 22:04:21 : REQ   : synologydriveclient : Installing Synology Drive Client
2022-06-17 22:04:21 : INFO  : synologydriveclient : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Synology Drive Client.dmg
2022-06-17 22:04:25 : DEBUG : synologydriveclient : Debugging enabled, dmgmount output was:
Prüfsumme für Protective Master Boot Record(MBR:0) berechnen …
Protective Master Boot Record(MBR:0): Die überprüfte CRC32-Prüfsumme ist $A8DB39D3
Prüfsumme für GPT Header(Primary GPT Header:1) berechnen …
GPT Header(Primary GPT Header:1): Die überprüfte CRC32-Prüfsumme ist $2BEB5693
Prüfsumme für GPT Partition Data(Primary GPT Table:2) berechnen …
GPT Partition Data(Primary GPT Table: Die überprüfte CRC32-Prüfsumme ist $EBAFDA05
Prüfsumme für (Apple_Free:3) berechnen …
(Apple_Free:3): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für disk image(Apple_HFS:4) berechnen …
disk image(Apple_HFS:4): Die überprüfte CRC32-Prüfsumme ist $0307F580
Prüfsumme für (Apple_Free:5) berechnen …
(Apple_Free:5): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für GPT Partition Data(Backup GPT Table:6) berechnen …
GPT Partition Data(Backup GPT Table:: Die überprüfte CRC32-Prüfsumme ist $EBAFDA05
Prüfsumme für GPT Header(Backup GPT Header:7) berechnen …
GPT Header(Backup GPT Header:7): Die überprüfte CRC32-Prüfsumme ist $AFE9E67E
Die überprüfte CRC32-Prüfsumme ist $74229A79
/dev/disk3          	GUID_partition_scheme
/dev/disk3s1        	Apple_HFS                      	/Volumes/Synology Drive Client

2022-06-17 22:04:25 : INFO  : synologydriveclient : Mounted: /Volumes/Synology Drive Client
2022-06-17 22:04:25 : DEBUG : synologydriveclient : Found pkg(s):
/Volumes/Synology Drive Client/Install Synology Drive Client.pkg
2022-06-17 22:04:25 : INFO  : synologydriveclient : found pkg: /Volumes/Synology Drive Client/Install Synology Drive Client.pkg
2022-06-17 22:04:25 : INFO  : synologydriveclient : Verifying: /Volumes/Synology Drive Client/Install Synology Drive Client.pkg
2022-06-17 22:04:25 : DEBUG : synologydriveclient : File list: -rw-r--r--@ 1 savvas  staff    70M 26 Apr 08:23 /Volumes/Synology Drive Client/Install Synology Drive Client.pkg
2022-06-17 22:04:26 : DEBUG : synologydriveclient : File type: /Volumes/Synology Drive Client/Install Synology Drive Client.pkg: xar archive compressed TOC: 6172, SHA-1 checksum
2022-06-17 22:04:26 : DEBUG : synologydriveclient : spctlOut is /Volumes/Synology Drive Client/Install Synology Drive Client.pkg: accepted
2022-06-17 22:04:26 : DEBUG : synologydriveclient : source=Notarized Developer ID
2022-06-17 22:04:26 : DEBUG : synologydriveclient : override=security disabled
2022-06-17 22:04:26 : DEBUG : synologydriveclient : origin=Developer ID Installer: Synology Inc. (X85BAK35Y4)
2022-06-17 22:04:26 : INFO  : synologydriveclient : Team ID: X85BAK35Y4 (expected: X85BAK35Y4 )
2022-06-17 22:04:26 : INFO  : synologydriveclient : Checking package version.
2022-06-17 22:04:30 : INFO  : synologydriveclient : Downloaded package com.synology.CloudStation version 7.1.0
2022-06-17 22:04:30 : INFO  : synologydriveclient : Downloaded version of Synology Drive Client is the same as installed.
2022-06-17 22:04:30 : DEBUG : synologydriveclient : Unmounting /Volumes/Synology Drive Client
2022-06-17 22:04:30 : DEBUG : synologydriveclient : Debugging enabled, Unmounting output was:
"disk3" ejected.
2022-06-17 22:04:30 : DEBUG : synologydriveclient : DEBUG mode 1, not reopening anything
2022-06-17 22:04:30 : REQ   : synologydriveclient : No new version to install
2022-06-17 22:04:30 : REQ   : synologydriveclient : ################## End Installomator, exit code 0
2022-06-17 22:11:48 +02:00
macmangr
96bad4bd84 New Label: OnScreen Control
An LG Monitor Utility

"OnScreen Control is an application used to manage a single monitor or a group of monitor with useful features such as Monitor Control, My Display Presets and Screen Split. OnScreen Control displays all connected LG monitor information. This software is compatible with LG monitors only."

./assemble.sh -l /Users/savvas/Desktop/Mosyle/Resources/InstallomatorLabels onscreencontrol
2022-06-17 20:58:28 : REQ   : onscreencontrol : ################## Start Installomator v. 9.2, date 2022-06-17
2022-06-17 20:58:28 : INFO  : onscreencontrol : ################## Version: 9.2
2022-06-17 20:58:28 : INFO  : onscreencontrol : ################## Date: 2022-06-17
2022-06-17 20:58:28 : INFO  : onscreencontrol : ################## onscreencontrol
2022-06-17 20:58:28 : DEBUG : onscreencontrol : DEBUG mode 1 enabled.
2022-06-17 20:58:28 : INFO  : onscreencontrol : BLOCKING_PROCESS_ACTION=tell_user
2022-06-17 20:58:28 : INFO  : onscreencontrol : NOTIFY=success
2022-06-17 20:58:28 : INFO  : onscreencontrol : LOGGING=DEBUG
2022-06-17 20:58:28 : INFO  : onscreencontrol : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-06-17 20:58:28 : INFO  : onscreencontrol : Label type: pkgInZip
2022-06-17 20:58:28 : INFO  : onscreencontrol : archiveName: OnScreen Control.zip
2022-06-17 20:58:28 : INFO  : onscreencontrol : no blocking processes defined, using OnScreen Control as default
2022-06-17 20:58:28 : DEBUG : onscreencontrol : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-06-17 20:58:29 : INFO  : onscreencontrol : No version found using packageID com.LGSI.OnScreen-Control
2022-06-17 20:58:29 : INFO  : onscreencontrol : App(s) found: /Applications/OnScreen Control.app
2022-06-17 20:58:29 : INFO  : onscreencontrol : found app at /Applications/OnScreen Control.app, version 5.47, on versionKey CFBundleShortVersionString
2022-06-17 20:58:29 : INFO  : onscreencontrol : appversion: 5.47
2022-06-17 20:58:29 : INFO  : onscreencontrol : Latest version of OnScreen Control is 5.47
2022-06-17 20:58:29 : WARN  : onscreencontrol : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-06-17 20:58:29 : REQ   : onscreencontrol : Downloading https://lmu.lge.com/ExternalService/onscreencontrol/mac/2.0/OnScreenControl_5.47.zip to OnScreen Control.zip
2022-06-17 20:58:37 : DEBUG : onscreencontrol : File list: -rw-r--r--  1 savvas  staff    56M 17 Jun 20:58 OnScreen Control.zip
2022-06-17 20:58:37 : DEBUG : onscreencontrol : File type: OnScreen Control.zip: Zip archive data, at least v2.0 to extract, compression method=deflate
2022-06-17 20:58:37 : DEBUG : onscreencontrol : curl output was:
*   Trying 23.48.23.5:443...
* Connected to lmu.lge.com (23.48.23.5) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [316 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [35 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4021 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=lmu.lge.com
*  start date: May 29 23:40:15 2022 GMT
*  expire date: Aug 27 23:40:14 2022 GMT
*  subjectAltName: host "lmu.lge.com" matched cert's "lmu.lge.com"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
> GET /ExternalService/onscreencontrol/mac/2.0/OnScreenControl_5.47.zip HTTP/1.1
> Host: lmu.lge.com
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Content-Type: application/zip
< ETag: "723d7988a59767c9a2aef6c274d5e5c1:1653637134.542227"
< Last-Modified: Fri, 27 May 2022 07:38:54 GMT
< Server: AkamaiNetStorage
< Content-Length: 59160965
< Expires: Fri, 17 Jun 2022 18:58:29 GMT
< Cache-Control: max-age=0, no-cache, no-store
< Pragma: no-cache
< Date: Fri, 17 Jun 2022 18:58:29 GMT
< Connection: keep-alive
<
{ [15989 bytes data]
* Connection #0 to host lmu.lge.com left intact

2022-06-17 20:58:37 : DEBUG : onscreencontrol : DEBUG mode 1, not checking for blocking processes
2022-06-17 20:58:37 : REQ   : onscreencontrol : Installing OnScreen Control
2022-06-17 20:58:37 : INFO  : onscreencontrol : Unzipping OnScreen Control.zip
2022-06-17 20:58:37 : DEBUG : onscreencontrol : Found pkg(s):
/Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/OSC_V5.47_signed.pkg
2022-06-17 20:58:37 : INFO  : onscreencontrol : found pkg: /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/OSC_V5.47_signed.pkg
2022-06-17 20:58:37 : INFO  : onscreencontrol : Verifying: /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/OSC_V5.47_signed.pkg
2022-06-17 20:58:37 : DEBUG : onscreencontrol : File list: -rw-r--r--@ 1 savvas  staff    56M 27 Mai 05:53 /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/OSC_V5.47_signed.pkg
2022-06-17 20:58:37 : DEBUG : onscreencontrol : File type: /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/OSC_V5.47_signed.pkg: xar archive compressed TOC: 8499, SHA-1 checksum
2022-06-17 20:58:38 : DEBUG : onscreencontrol : spctlOut is /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/OSC_V5.47_signed.pkg: accepted
2022-06-17 20:58:38 : DEBUG : onscreencontrol : source=Notarized Developer ID
2022-06-17 20:58:38 : DEBUG : onscreencontrol : override=security disabled
2022-06-17 20:58:38 : DEBUG : onscreencontrol : origin=Developer ID Installer: LG Electronics (5SKT5H4CPQ)
2022-06-17 20:58:38 : INFO  : onscreencontrol : Team ID: 5SKT5H4CPQ (expected: 5SKT5H4CPQ )
2022-06-17 20:58:38 : INFO  : onscreencontrol : Checking package version.
2022-06-17 20:58:39 : INFO  : onscreencontrol : Downloaded package com.LGSI.OnScreen-Control version 5.47
2022-06-17 20:58:39 : INFO  : onscreencontrol : Downloaded version of OnScreen Control is the same as installed.
2022-06-17 20:58:39 : DEBUG : onscreencontrol : DEBUG mode 1, not reopening anything
2022-06-17 20:58:39 : REQ   : onscreencontrol : No new version to install
2022-06-17 20:58:39 : REQ   : onscreencontrol : ################## End Installomator, exit code 0
2022-06-17 21:20:51 +02:00
Armin Briegel
21128946ef Merge pull request #528 from scriptingosx/adobecreateclouddesktop-xml
html parsing now done with xmllint, should be more resilient
2022-06-17 15:56:57 +02:00
Armin Briegel
35eb65f668 Merge pull request #529 from scriptingosx/jxa-json
added function for JSON parsing using JXA
2022-06-17 15:56:30 +02:00
Armin Briegel
84d4184b1e Merge pull request #517 from mwmatter/workspaceone
Adding Workspace ONE support
2022-06-17 15:55:54 +02:00
Armin Briegel
158a30b6f1 removed unused variable 2022-06-17 15:50:01 +02:00
Armin Briegel
ae7db2621c removed absolute paths from commands 2022-06-17 15:49:00 +02:00
Thomas Bartlett
1ec9c3f0b0 Update grammarly.sh
Updated download URL as Grammarly removed the appcast.xml feed.
2022-06-14 10:05:11 -04:00
Graham Williams
817a3992b0 Create sonicvisualiser.sh
Output:

```
sudo ./assemble.sh sonicvisualiser DEBUG=0

2022-06-14 14:08:05 : WARN  : sonicvisualiser : setting variable from argument DEBUG=0
2022-06-14 14:08:05 : REQ   : sonicvisualiser : ################## Start Installomator v. 10.0beta, date 2022-06-14
2022-06-14 14:08:05 : INFO  : sonicvisualiser : ################## Version: 10.0beta
2022-06-14 14:08:05 : INFO  : sonicvisualiser : ################## Date: 2022-06-14
2022-06-14 14:08:05 : INFO  : sonicvisualiser : ################## sonicvisualiser
2022-06-14 14:08:06 : INFO  : sonicvisualiser : BLOCKING_PROCESS_ACTION=tell_user
2022-06-14 14:08:06 : INFO  : sonicvisualiser : NOTIFY=success
2022-06-14 14:08:06 : INFO  : sonicvisualiser : LOGGING=INFO
2022-06-14 14:08:06 : INFO  : sonicvisualiser : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-06-14 14:08:06 : INFO  : sonicvisualiser : Label type: dmg
2022-06-14 14:08:06 : INFO  : sonicvisualiser : archiveName: Sonic Visualiser.dmg
2022-06-14 14:08:06 : INFO  : sonicvisualiser : no blocking processes defined, using Sonic Visualiser as default
2022-06-14 14:08:06 : INFO  : sonicvisualiser : name: Sonic Visualiser, appName: Sonic Visualiser.app
2022-06-14 14:08:06 : WARN  : sonicvisualiser : No previous app found
2022-06-14 14:08:06 : WARN  : sonicvisualiser : could not find Sonic Visualiser.app
2022-06-14 14:08:06 : INFO  : sonicvisualiser : appversion:
2022-06-14 14:08:06 : INFO  : sonicvisualiser : Latest version of Sonic Visualiser is 4.5
2022-06-14 14:08:06 : REQ   : sonicvisualiser : Downloading https://github.com/sonic-visualiser/sonic-visualiser/releases/download/sv_v4.5/Sonic.Visualiser-4.5.dmg to Sonic Visualiser.dmg
2022-06-14 14:08:09 : REQ   : sonicvisualiser : no more blocking processes, continue with update
2022-06-14 14:08:09 : REQ   : sonicvisualiser : Installing Sonic Visualiser
2022-06-14 14:08:09 : INFO  : sonicvisualiser : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.Q5vjIONo/Sonic Visualiser.dmg
2022-06-14 14:08:12 : INFO  : sonicvisualiser : Mounted: /Volumes/Sonic Visualiser-4.5
2022-06-14 14:08:12 : INFO  : sonicvisualiser : Verifying: /Volumes/Sonic Visualiser-4.5/Sonic Visualiser.app
2022-06-14 14:08:14 : INFO  : sonicvisualiser : Team ID matching: 73F996B92S (expected: 73F996B92S )
2022-06-14 14:08:14 : INFO  : sonicvisualiser : Installing Sonic Visualiser version 4.5.0 on versionKey CFBundleShortVersionString.
2022-06-14 14:08:14 : INFO  : sonicvisualiser : Copy /Volumes/Sonic Visualiser-4.5/Sonic Visualiser.app to /Applications
2022-06-14 14:08:15 : WARN  : sonicvisualiser : Changing owner to grayw
2022-06-14 14:08:15 : INFO  : sonicvisualiser : Finishing...
2022-06-14 14:08:25 : INFO  : sonicvisualiser : App(s) found: /Applications/Sonic Visualiser.app
2022-06-14 14:08:25 : INFO  : sonicvisualiser : found app at /Applications/Sonic Visualiser.app, version 4.5.0, on versionKey CFBundleShortVersionString
2022-06-14 14:08:25 : REQ   : sonicvisualiser : Installed Sonic Visualiser, version 4.5.0
2022-06-14 14:08:25 : INFO  : sonicvisualiser : notifying
2022-06-14 14:08:25 : INFO  : sonicvisualiser : App not closed, so no reopen.
2022-06-14 14:08:25 : REQ   : sonicvisualiser : All done!
2022-06-14 14:08:25 : REQ   : sonicvisualiser : ################## End Installomator, exit code 0

```
2022-06-14 14:15:42 +01:00
Adam Codega
ba767cb2df Merge pull request #550 from FletcherS7/update-ringcentral-label
Update ringcentralapp label to fix not detecting blocking processes
2022-06-10 16:07:21 -04:00
Adam Codega
6108758a2f Merge pull request #571 from FletcherS7/label-mmhmm
New Label: mmhmm
2022-06-10 16:06:40 -04:00
Adam Codega
f7f918edcb Merge pull request #566 from FletcherS7/update-notion-label
Update Notion label to fix wrong version detection on arm installs
2022-06-10 15:55:15 -04:00
Fletcher Salesky
9652167833 Create tencentmeeting.sh 2022-06-08 00:25:24 -07:00
Fletcher Salesky
5e0e77c346 Update notion.sh 2022-06-07 18:16:18 -07:00
Omari
2fd262b6cb adding masv label to installomator 2022-06-07 13:34:03 -04:00
pythoninthegrass
a6f1224b41 Removed redundant variable and added arm64 download logic 2022-06-06 15:36:30 -05:00
Lance Stephens
f479413f70 kap
λ sudo utils/assemble.sh kap DEBUG=0
Password:
2022-06-06 14:40:02 : WARN  : kap : setting variable from argument DEBUG=0
2022-06-06 14:40:02 : REQ   : kap : ################## Start Installomator v. 10.0beta, date 2022-06-06
2022-06-06 14:40:02 : INFO  : kap : ################## Version: 10.0beta
2022-06-06 14:40:02 : INFO  : kap : ################## Date: 2022-06-06
2022-06-06 14:40:02 : INFO  : kap : ################## kap
2022-06-06 14:40:03 : INFO  : kap : BLOCKING_PROCESS_ACTION=tell_user
2022-06-06 14:40:03 : INFO  : kap : NOTIFY=success
2022-06-06 14:40:03 : INFO  : kap : LOGGING=INFO
2022-06-06 14:40:03 : INFO  : kap : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-06-06 14:40:03 : INFO  : kap : Label type: dmg
2022-06-06 14:40:03 : INFO  : kap : archiveName: Kap-[0-9.]*-x64.dmg
2022-06-06 14:40:03 : INFO  : kap : no blocking processes defined, using Kap as default
2022-06-06 14:40:03 : INFO  : kap : App(s) found: /Applications/Kap.app
2022-06-06 14:40:03 : INFO  : kap : found app at /Applications/Kap.app, version 3.5.3, on versionKey CFBundleShortVersionString
2022-06-06 14:40:03 : INFO  : kap : appversion: 3.5.3
2022-06-06 14:40:03 : INFO  : kap : Latest version of Kap is 3.5.4
2022-06-06 14:40:03 : REQ   : kap : Downloading https://github.com/wulkano/Kap/releases/download/v3.5.4/Kap-3.5.4-x64.dmg to Kap-[0-9.]*-x64.dmg
2022-06-06 14:40:08 : REQ   : kap : no more blocking processes, continue with update
2022-06-06 14:40:08 : REQ   : kap : Installing Kap
2022-06-06 14:40:08 : INFO  : kap : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.RoYqmJzY/Kap-[0-9.]*-x64.dmg
2022-06-06 14:40:13 : INFO  : kap : Mounted: /Volumes/Kap 3.5.4
2022-06-06 14:40:13 : INFO  : kap : Verifying: /Volumes/Kap 3.5.4/Kap.app
2022-06-06 14:40:17 : INFO  : kap : Team ID matching: 2KEEHXF6R6 (expected: 2KEEHXF6R6 )
2022-06-06 14:40:17 : INFO  : kap : Downloaded version of Kap is 3.5.4 on versionKey CFBundleShortVersionString (replacing version 3.5.3).
2022-06-06 14:40:17 : INFO  : kap : App has LSMinimumSystemVersion: 10.12.0
2022-06-06 14:40:17 : WARN  : kap : Removing existing /Applications/Kap.app
2022-06-06 14:40:17 : INFO  : kap : Copy /Volumes/Kap 3.5.4/Kap.app to /Applications
2022-06-06 14:40:18 : WARN  : kap : Changing owner to lance.stephens
2022-06-06 14:40:18 : INFO  : kap : Finishing...
2022-06-06 14:40:28 : INFO  : kap : App(s) found: /Applications/Kap.app
2022-06-06 14:40:28 : INFO  : kap : found app at /Applications/Kap.app, version 3.5.4, on versionKey CFBundleShortVersionString
2022-06-06 14:40:28 : REQ   : kap : Installed Kap, version 3.5.4
2022-06-06 14:40:28 : INFO  : kap : notifying
2022-06-06 14:40:29 : INFO  : kap : App not closed, so no reopen.
2022-06-06 14:40:29 : REQ   : kap : All done!
2022-06-06 14:40:29 : REQ   : kap : ################## End Installomator, exit code 0
2022-06-06 14:54:21 -05:00
Søren Theilgaard
9e24f2b8e8 rename label name
It already existed…
2022-05-27 12:18:18 +02:00
Fletcher Salesky
abe2e51f13 Update googledrive.sh 2022-05-26 12:24:23 -07:00
dnikles
e160bcb123 add cricutdesignspace label
Output:
```
2022-05-26 10:54:52 : WARN  : cricutdesignspace : setting variable from argument DEBUG=0
2022-05-26 10:54:52 : WARN  : cricutdesignspace : setting variable from argument INSTALL=force
2022-05-26 10:54:52 : REQ   : cricutdesignspace : ################## Start Installomator v. 10.0beta, date 2022-05-26
2022-05-26 10:54:52 : INFO  : cricutdesignspace : ################## Version: 10.0beta
2022-05-26 10:54:52 : INFO  : cricutdesignspace : ################## Date: 2022-05-26
2022-05-26 10:54:52 : INFO  : cricutdesignspace : ################## cricutdesignspace
2022-05-26 10:54:52 : INFO  : cricutdesignspace : BLOCKING_PROCESS_ACTION=tell_user
2022-05-26 10:54:52 : INFO  : cricutdesignspace : NOTIFY=success
2022-05-26 10:54:52 : INFO  : cricutdesignspace : LOGGING=INFO
2022-05-26 10:54:52 : INFO  : cricutdesignspace : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-26 10:54:53 : INFO  : cricutdesignspace : Label type: dmg
2022-05-26 10:54:53 : INFO  : cricutdesignspace : archiveName: Cricut Design Space.dmg
2022-05-26 10:54:53 : INFO  : cricutdesignspace : no blocking processes defined, using Cricut Design Space as default
2022-05-26 10:54:53 : INFO  : cricutdesignspace : App(s) found: /Applications/Cricut Design Space.app
2022-05-26 10:54:53 : INFO  : cricutdesignspace : found app at /Applications/Cricut Design Space.app, version 7.9.158, on versionKey CFBundleShortVersionString
2022-05-26 10:54:53 : INFO  : cricutdesignspace : appversion: 7.9.158
2022-05-26 10:54:53 : INFO  : cricutdesignspace : Label is not of type “updateronly”, and it’s set to use force to install or ignoring app store apps, so not using updateTool.
2022-05-26 10:54:53 : INFO  : cricutdesignspace : Latest version of Cricut Design Space is 7.9.158
2022-05-26 10:54:53 : INFO  : cricutdesignspace : There is no newer version available.
2022-05-26 10:54:53 : REQ   : cricutdesignspace : Downloading https://staticcontent.cricut.com/a/software/osx-native/CricutDesignSpace-Install-v7.9.158.dmg to Cricut Design Space.dmg
2022-05-26 10:54:55 : REQ   : cricutdesignspace : no more blocking processes, continue with update
2022-05-26 10:54:55 : REQ   : cricutdesignspace : Installing Cricut Design Space
2022-05-26 10:54:55 : INFO  : cricutdesignspace : Mounting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.LLI066bN/Cricut Design Space.dmg
2022-05-26 10:54:58 : INFO  : cricutdesignspace : Mounted: /Volumes/Cricut Design Space Install
2022-05-26 10:54:58 : INFO  : cricutdesignspace : Verifying: /Volumes/Cricut Design Space Install/Cricut Design Space.app
2022-05-26 10:54:59 : INFO  : cricutdesignspace : Team ID matching: 25627ZFVT7 (expected: 25627ZFVT7 )
2022-05-26 10:54:59 : INFO  : cricutdesignspace : Downloaded version of Cricut Design Space is 7.9.158 on versionKey CFBundleShortVersionString, same as installed.
2022-05-26 10:54:59 : INFO  : cricutdesignspace : Using force to install anyway.
2022-05-26 10:54:59 : INFO  : cricutdesignspace : App has LSMinimumSystemVersion: 10.11.0
2022-05-26 10:54:59 : WARN  : cricutdesignspace : Removing existing /Applications/Cricut Design Space.app
2022-05-26 10:54:59 : INFO  : cricutdesignspace : Copy /Volumes/Cricut Design Space Install/Cricut Design Space.app to /Applications
2022-05-26 10:55:00 : WARN  : cricutdesignspace : Changing owner to dnikles
2022-05-26 10:55:00 : INFO  : cricutdesignspace : Finishing...
2022-05-26 10:55:10 : INFO  : cricutdesignspace : App(s) found: /Applications/Cricut Design Space.app
2022-05-26 10:55:10 : INFO  : cricutdesignspace : found app at /Applications/Cricut Design Space.app, version 7.9.158, on versionKey CFBundleShortVersionString
2022-05-26 10:55:10 : REQ   : cricutdesignspace : Installed Cricut Design Space, version 7.9.158
2022-05-26 10:55:10 : INFO  : cricutdesignspace : notifying
2022-05-26 10:55:10 : INFO  : cricutdesignspace : App not closed, so no reopen.
2022-05-26 10:55:10 : REQ   : cricutdesignspace : All done!
2022-05-26 10:55:10 : REQ   : cricutdesignspace : ################## End Installomator, exit code 0
```
2022-05-26 10:56:50 -04:00
Søren Theilgaard
7b4b1d12d1 WhatRoute label
A network utility:
```
Installomator/utils/assemble.sh whatroute
2022-05-25 13:46:54 : REQ   : whatroute : ################## Start Installomator v. 10.0beta, date 2022-05-25
2022-05-25 13:46:54 : INFO  : whatroute : ################## Version: 10.0beta
2022-05-25 13:46:54 : INFO  : whatroute : ################## Date: 2022-05-25
2022-05-25 13:46:54 : INFO  : whatroute : ################## whatroute
2022-05-25 13:46:54 : DEBUG : whatroute : DEBUG mode 1 enabled.
2022-05-25 13:46:58 : INFO  : whatroute : BLOCKING_PROCESS_ACTION=tell_user
2022-05-25 13:46:58 : INFO  : whatroute : NOTIFY=success
2022-05-25 13:46:58 : INFO  : whatroute : LOGGING=DEBUG
2022-05-25 13:46:58 : INFO  : whatroute : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-25 13:46:58 : INFO  : whatroute : Label type: zip
2022-05-25 13:46:58 : INFO  : whatroute : archiveName: WhatRoute.zip
2022-05-25 13:46:58 : INFO  : whatroute : no blocking processes defined, using WhatRoute as default
2022-05-25 13:46:58 : DEBUG : whatroute : Changing directory to /Users/st/Documents/GitHub/Installomator/build
2022-05-25 13:46:58 : INFO  : whatroute : App(s) found: /Applications/WhatRoute.app
2022-05-25 13:46:58 : INFO  : whatroute : found app at /Applications/WhatRoute.app, version 2.5.0, on versionKey CFBundleShortVersionString
2022-05-25 13:46:58 : INFO  : whatroute : appversion: 2.5.0
2022-05-25 13:46:58 : INFO  : whatroute : Latest version of WhatRoute is 2.5.0
2022-05-25 13:46:58 : WARN  : whatroute : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-05-25 13:46:58 : REQ   : whatroute : Downloading https://www.whatroute.net/software/whatroute-2.5.0.zip to WhatRoute.zip
2022-05-25 13:47:18 : DEBUG : whatroute : File list: -rw-r--r--  1 st  staff    38M May 25 13:47 WhatRoute.zip
2022-05-25 13:47:18 : DEBUG : whatroute : File type: WhatRoute.zip: Zip archive data, at least v1.0 to extract, compression method=store
2022-05-25 13:47:18 : DEBUG : whatroute : curl output was:
*   Trying 222.154.233.147:443...
* Connected to www.whatroute.net (222.154.233.147) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [322 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [25 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4423 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=bryanc.co.nz
*  start date: May 15 06:02:07 2022 GMT
*  expire date: Aug 13 06:02:06 2022 GMT
*  subjectAltName: host "www.whatroute.net" matched cert's "www.whatroute.net"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
> GET /software/whatroute-2.5.0.zip HTTP/1.1
> Host: www.whatroute.net
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 25 May 2022 11:46:59 GMT
< Server: Apache
< Last-Modified: Thu, 31 Mar 2022 01:31:34 GMT
< ETag: "2586bfd-5db799f55fabc"
< Accept-Ranges: bytes
< Content-Length: 39349245
< Content-Type: application/zip
<
{ [7964 bytes data]
* Connection #0 to host www.whatroute.net left intact

2022-05-25 13:47:18 : DEBUG : whatroute : DEBUG mode 1, not checking for blocking processes
2022-05-25 13:47:18 : REQ   : whatroute : Installing WhatRoute
2022-05-25 13:47:18 : INFO  : whatroute : Unzipping WhatRoute.zip
2022-05-25 13:47:19 : INFO  : whatroute : Verifying: /Users/st/Documents/GitHub/Installomator/build/WhatRoute.app
2022-05-25 13:47:19 : DEBUG : whatroute : App size:  60M	/Users/st/Documents/GitHub/Installomator/build/WhatRoute.app
2022-05-25 13:47:19 : DEBUG : whatroute : Debugging enabled, App Verification output was:
/Users/st/Documents/GitHub/Installomator/build/WhatRoute.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Bryan Christianson (H5879E8LML)

2022-05-25 13:47:20 : INFO  : whatroute : Team ID matching: H5879E8LML (expected: H5879E8LML )
2022-05-25 13:47:20 : INFO  : whatroute : Downloaded version of WhatRoute is 2.5.0 on versionKey CFBundleShortVersionString, same as installed.
2022-05-25 13:47:20 : DEBUG : whatroute : DEBUG mode 1, not reopening anything
2022-05-25 13:47:20 : REG   : whatroute : No new version to install
2022-05-25 13:47:20 : REQ   : whatroute : ################## End Installomator, exit code 0
```
2022-05-25 14:03:51 +02:00
Søren Theilgaard
c219f38459 Create barcoclickshare.sh 2022-05-25 13:26:37 +02:00
Fletcher Salesky
82bda85d6c Merge branch 'Installomator:main' into main 2022-05-23 15:01:19 -07:00
Fletcher Salesky
4c2a49af60 Create strongdm.sh 2022-05-23 13:22:58 -07:00
macmangr
650a07402f New Label: SynologyAssistant
./assemble.sh -l /Mosyle/Resources/InstallomatorLabels synologyassistant
2022-05-22 15:50:07 : REQ   : synologyassistant : ################## Start Installomator v. 9.2, date 2022-05-22
2022-05-22 15:50:07 : INFO  : synologyassistant : ################## Version: 9.2
2022-05-22 15:50:07 : INFO  : synologyassistant : ################## Date: 2022-05-22
2022-05-22 15:50:07 : INFO  : synologyassistant : ################## synologyassistant
2022-05-22 15:50:07 : DEBUG : synologyassistant : DEBUG mode 1 enabled.
2022-05-22 15:50:07 : INFO  : synologyassistant : BLOCKING_PROCESS_ACTION=tell_user
2022-05-22 15:50:07 : INFO  : synologyassistant : NOTIFY=success
2022-05-22 15:50:07 : INFO  : synologyassistant : LOGGING=DEBUG
2022-05-22 15:50:08 : INFO  : synologyassistant : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-22 15:50:08 : INFO  : synologyassistant : Label type: dmg
2022-05-22 15:50:08 : INFO  : synologyassistant : archiveName: SynologyAssistant.dmg
2022-05-22 15:50:08 : INFO  : synologyassistant : no blocking processes defined, using SynologyAssistant as default
2022-05-22 15:50:08 : DEBUG : synologyassistant : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-05-22 15:50:08 : INFO  : synologyassistant : No version found using packageID com.synology.DSAssistant
2022-05-22 15:50:08 : INFO  : synologyassistant : App(s) found: /Applications/SynologyAssistant.app
2022-05-22 15:50:08.721 defaults[13210:199987]
The domain/default pair of (/Applications/SynologyAssistant.app/Contents/Info.plist, CFBundleShortVersionString) does not exist
2022-05-22 15:50:08 : INFO  : synologyassistant : found app at /Applications/SynologyAssistant.app, version , on versionKey CFBundleShortVersionString
2022-05-22 15:50:08 : INFO  : synologyassistant : appversion:
2022-05-22 15:50:08 : INFO  : synologyassistant : Latest version of SynologyAssistant is 7.0.3-50049
2022-05-22 15:50:08 : REQ   : synologyassistant : Downloading https://global.download.synology.com/download/Utility/Assistant/7.0.3-50049/Mac/synology-assistant-7.0.3-50049.dmg to SynologyAssistant.dmg
2022-05-22 15:50:11 : DEBUG : synologyassistant : File list: -rw-r--r--  1 savvas  staff    18M 22 Mai 15:50 SynologyAssistant.dmg
2022-05-22 15:50:11 : DEBUG : synologyassistant : File type: SynologyAssistant.dmg: zlib compressed data
2022-05-22 15:50:11 : DEBUG : synologyassistant : curl output was:
*   Trying 13.225.80.21:443...
* Connected to global.download.synology.com (13.225.80.21) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [333 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [5175 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=global.download.synology.com
*  start date: Apr 29 07:21:41 2022 GMT
*  expire date: May 31 07:21:41 2023 GMT
*  subjectAltName: host "global.download.synology.com" matched cert's "global.download.synology.com"
*  issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7f7c9b00bc00)
> GET /download/Utility/Assistant/7.0.3-50049/Mac/synology-assistant-7.0.3-50049.dmg HTTP/2
> Host: global.download.synology.com
> user-agent: curl/7.79.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
< content-type: application/octet-stream
< content-length: 19155257
< date: Thu, 19 May 2022 09:02:41 GMT
< last-modified: Tue, 26 Apr 2022 18:33:58 GMT
< etag: "5f132f58c5ab0b776ef49dbb654c1537-4"
< accept-ranges: bytes
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 6c9a2d99a25484f38efa27d58a726b2c.cloudfront.net (CloudFront)
< x-amz-cf-pop: FRA2-C2
< x-amz-cf-id: H4CRHnyudj_GtrQCJxMOq7TDWr3nptzEUr3qFy9ezPu3j0UsuyZ_fw==
< age: 276448
<
{ [16042 bytes data]
* Connection #0 to host global.download.synology.com left intact

2022-05-22 15:50:11 : DEBUG : synologyassistant : DEBUG mode 1, not checking for blocking processes
2022-05-22 15:50:11 : REQ   : synologyassistant : Installing SynologyAssistant
2022-05-22 15:50:11 : INFO  : synologyassistant : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/SynologyAssistant.dmg
2022-05-22 15:50:14 : DEBUG : synologyassistant : Debugging enabled, dmgmount output was:
Prüfsumme für Protective Master Boot Record (MBR : 0) berechnen …
Protective Master Boot Record (MBR :: Die überprüfte CRC32-Prüfsumme ist $95B941F8
Prüfsumme für GPT Header (Primary GPT Header : 1) berechnen …
GPT Header (Primary GPT Header : 1): Die überprüfte CRC32-Prüfsumme ist $D85F8F1F
Prüfsumme für GPT Partition Data (Primary GPT Table : 2) berechnen …
GPT Partition Data (Primary GPT Tabl: Die überprüfte CRC32-Prüfsumme ist $0F713C62
Prüfsumme für  (Apple_Free : 3) berechnen …
(Apple_Free : 3): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für disk image (Apple_HFS : 4) berechnen …
disk image (Apple_HFS : 4): Die überprüfte CRC32-Prüfsumme ist $0772429B
Prüfsumme für  (Apple_Free : 5) berechnen …
(Apple_Free : 5): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für GPT Partition Data (Backup GPT Table : 6) berechnen …
GPT Partition Data (Backup GPT Table: Die überprüfte CRC32-Prüfsumme ist $0F713C62
Prüfsumme für GPT Header (Backup GPT Header : 7) berechnen …
GPT Header (Backup GPT Header : 7): Die überprüfte CRC32-Prüfsumme ist $0FF7183C
Die überprüfte CRC32-Prüfsumme ist $F223F8EC
/dev/disk2          	GUID_partition_scheme
/dev/disk2s1        	Apple_HFS                      	/Volumes/synology-assistant-7.0.3-50049

2022-05-22 15:50:14 : INFO  : synologyassistant : Mounted: /Volumes/synology-assistant-7.0.3-50049
2022-05-22 15:50:14 : INFO  : synologyassistant : Verifying: /Volumes/synology-assistant-7.0.3-50049/SynologyAssistant.app
2022-05-22 15:50:14 : DEBUG : synologyassistant : App size:  40M	/Volumes/synology-assistant-7.0.3-50049/SynologyAssistant.app
2022-05-22 15:50:15 : DEBUG : synologyassistant : Debugging enabled, App Verification output was:
/Volumes/synology-assistant-7.0.3-50049/SynologyAssistant.app: accepted
source=Notarized Developer ID
override=security disabled
origin=Developer ID Application: Synology Inc. (X85BAK35Y4)

2022-05-22 15:50:15 : INFO  : synologyassistant : Team ID matching: X85BAK35Y4 (expected: X85BAK35Y4 )
2022-05-22 15:50:15.860 defaults[13280:200237]
The domain/default pair of (/Volumes/synology-assistant-7.0.3-50049/SynologyAssistant.app/Contents/Info.plist, CFBundleShortVersionString) does not exist
2022-05-22 15:50:15 : INFO  : synologyassistant : Installing SynologyAssistant version  on versionKey CFBundleShortVersionString.
2022-05-22 15:50:15 : INFO  : synologyassistant : App has LSMinimumSystemVersion: 10.7
2022-05-22 15:50:15 : DEBUG : synologyassistant : DEBUG mode 1 enabled, skipping remove, copy and chown steps
2022-05-22 15:50:16 : INFO  : synologyassistant : Finishing...
2022-05-22 15:50:26 : INFO  : synologyassistant : No version found using packageID com.synology.DSAssistant
2022-05-22 15:50:26 : INFO  : synologyassistant : App(s) found: /Applications/SynologyAssistant.app
2022-05-22 15:50:26.241 defaults[13304:200361]
The domain/default pair of (/Applications/SynologyAssistant.app/Contents/Info.plist, CFBundleShortVersionString) does not exist
2022-05-22 15:50:26 : INFO  : synologyassistant : found app at /Applications/SynologyAssistant.app, version , on versionKey CFBundleShortVersionString
2022-05-22 15:50:26 : REQ   : synologyassistant : Installed SynologyAssistant
2022-05-22 15:50:26 : INFO  : synologyassistant : notifying
2022-05-22 15:50:26 : DEBUG : synologyassistant : Unmounting /Volumes/synology-assistant-7.0.3-50049
2022-05-22 15:50:26 : DEBUG : synologyassistant : Debugging enabled, Unmounting output was:
"disk2" ejected.
2022-05-22 15:50:26 : DEBUG : synologyassistant : DEBUG mode 1, not reopening anything
2022-05-22 15:50:26 : REQ   : synologyassistant : All done!
2022-05-22 15:50:26 : REQ   : synologyassistant : ################## End Installomator, exit code 0
2022-05-22 15:52:09 +02:00
macmangr
13b0e99bb8 New Label: NetSpot
./assemble.sh -l /Mosyle/Resources/InstallomatorLabels netspot
2022-05-22 15:46:11 : REQ   : netspot : ################## Start Installomator v. 9.2, date 2022-05-22
2022-05-22 15:46:11 : INFO  : netspot : ################## Version: 9.2
2022-05-22 15:46:11 : INFO  : netspot : ################## Date: 2022-05-22
2022-05-22 15:46:11 : INFO  : netspot : ################## netspot
2022-05-22 15:46:11 : DEBUG : netspot : DEBUG mode 1 enabled.
2022-05-22 15:46:12 : INFO  : netspot : BLOCKING_PROCESS_ACTION=tell_user
2022-05-22 15:46:12 : INFO  : netspot : NOTIFY=success
2022-05-22 15:46:12 : INFO  : netspot : LOGGING=DEBUG
2022-05-22 15:46:12 : INFO  : netspot : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-22 15:46:12 : INFO  : netspot : Label type: dmg
2022-05-22 15:46:12 : INFO  : netspot : archiveName: NetSpot.dmg
2022-05-22 15:46:12 : INFO  : netspot : no blocking processes defined, using NetSpot as default
2022-05-22 15:46:12 : DEBUG : netspot : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-05-22 15:46:12 : INFO  : netspot : App(s) found: /Applications/NetSpot.app
2022-05-22 15:46:12 : INFO  : netspot : found app at /Applications/NetSpot.app, version 2.14.1037, on versionKey CFBundleShortVersionString
2022-05-22 15:46:12 : INFO  : netspot : appversion: 2.14.1037
2022-05-22 15:46:12 : INFO  : netspot : Latest version of NetSpot is 2.14.1037
2022-05-22 15:46:12 : WARN  : netspot : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-05-22 15:46:12 : REQ   : netspot : Downloading https://cdn.netspotapp.com/download/NetSpot.dmg to NetSpot.dmg
2022-05-22 15:46:14 : DEBUG : netspot : File list: -rw-r--r--  1 savvas  staff    14M 22 Mai 15:46 NetSpot.dmg
2022-05-22 15:46:14 : DEBUG : netspot : File type: NetSpot.dmg: zlib compressed data
2022-05-22 15:46:14 : DEBUG : netspot : curl output was:
*   Trying 195.181.174.6:443...
* Connected to cdn.netspotapp.com (195.181.174.6) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [323 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4519 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=cdn.netspotapp.com
*  start date: Aug 16 00:00:00 2021 GMT
*  expire date: Aug 16 23:59:59 2022 GMT
*  subjectAltName: host "cdn.netspotapp.com" matched cert's "cdn.netspotapp.com"
*  issuer: C=LV; L=Riga; O=GoGetSSL; CN=GoGetSSL RSA DV CA
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7fd99f00d400)
> GET /download/NetSpot.dmg HTTP/2
> Host: cdn.netspotapp.com
> user-agent: curl/7.79.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
< date: Sun, 22 May 2022 13:46:12 GMT
< content-type: application/octet-stream
< content-length: 14205239
< last-modified: Mon, 01 Nov 2021 11:52:37 GMT
< etag: "617fd505-d8c137"
< access-control-allow-origin: *
< x-accel-expires: @1653227772
< server: CDN77-Turbo
< x-77-nzt: AcO1rgUdD4PeTyMAAA
< x-77-nzt-ray: 4MvfbNRBJzs
< x-cache: REVALIDATED
< x-age: 9039
< x-77-pop: frankfurtDE
< x-77-cache: HIT
< accept-ranges: bytes
<
{ [16065 bytes data]
* Connection #0 to host cdn.netspotapp.com left intact

2022-05-22 15:46:14 : DEBUG : netspot : DEBUG mode 1, not checking for blocking processes
2022-05-22 15:46:14 : REQ   : netspot : Installing NetSpot
2022-05-22 15:46:14 : INFO  : netspot : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/NetSpot.dmg
2022-05-22 15:46:17 : DEBUG : netspot : Debugging enabled, dmgmount output was:
Prüfsumme für Protective Master Boot Record (MBR : 0) berechnen …
Protective Master Boot Record (MBR :: Die überprüfte CRC32-Prüfsumme ist $F3D13A57
Prüfsumme für GPT Header (Primary GPT Header : 1) berechnen …
GPT Header (Primary GPT Header : 1): Die überprüfte CRC32-Prüfsumme ist $94095ED1
Prüfsumme für GPT Partition Data (Primary GPT Table : 2) berechnen …
GPT Partition Data (Primary GPT Tabl: Die überprüfte CRC32-Prüfsumme ist $1ECC5766
Prüfsumme für  (Apple_Free : 3) berechnen …
(Apple_Free : 3): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für disk image (Apple_HFS : 4) berechnen …
disk image (Apple_HFS : 4): Die überprüfte CRC32-Prüfsumme ist $A09406C9
Prüfsumme für  (Apple_Free : 5) berechnen …
(Apple_Free : 5): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für GPT Partition Data (Backup GPT Table : 6) berechnen …
GPT Partition Data (Backup GPT Table: Die überprüfte CRC32-Prüfsumme ist $1ECC5766
Prüfsumme für GPT Header (Backup GPT Header : 7) berechnen …
GPT Header (Backup GPT Header : 7): Die überprüfte CRC32-Prüfsumme ist $9DC9CAF0
Die überprüfte CRC32-Prüfsumme ist $DF172160
/dev/disk2          	GUID_partition_scheme
/dev/disk2s1        	Apple_HFS                      	/Volumes/NetSpot

2022-05-22 15:46:17 : INFO  : netspot : Mounted: /Volumes/NetSpot
2022-05-22 15:46:17 : INFO  : netspot : Verifying: /Volumes/NetSpot/NetSpot.app
2022-05-22 15:46:17 : DEBUG : netspot : App size:  27M	/Volumes/NetSpot/NetSpot.app
2022-05-22 15:46:18 : DEBUG : netspot : Debugging enabled, App Verification output was:
/Volumes/NetSpot/NetSpot.app: accepted
source=Notarized Developer ID
override=security disabled
origin=Developer ID Application: Etwok Inc (5QLDY8TU83)

2022-05-22 15:46:18 : INFO  : netspot : Team ID matching: 5QLDY8TU83 (expected: 5QLDY8TU83 )
2022-05-22 15:46:18 : INFO  : netspot : Downloaded version of NetSpot is 2.14.1037 on versionKey CFBundleShortVersionString, same as installed.
2022-05-22 15:46:18 : DEBUG : netspot : Unmounting /Volumes/NetSpot
2022-05-22 15:46:18 : DEBUG : netspot : Debugging enabled, Unmounting output was:
"disk2" ejected.
2022-05-22 15:46:18 : DEBUG : netspot : DEBUG mode 1, not reopening anything
2022-05-22 15:46:18 : REG   : netspot : No new version to install
2022-05-22 15:46:18 : REQ   : netspot : ################## End Installomator, exit code 0
2022-05-22 15:47:49 +02:00
macmangr
0d30b6fb6c New Label: Merlin Project
./assemble.sh -l /Mosyle/Resources/InstallomatorLabels merlinproject
2022-05-22 15:39:04 : REQ   : merlinproject : ################## Start Installomator v. 9.2, date 2022-05-22
2022-05-22 15:39:04 : INFO  : merlinproject : ################## Version: 9.2
2022-05-22 15:39:04 : INFO  : merlinproject : ################## Date: 2022-05-22
2022-05-22 15:39:04 : INFO  : merlinproject : ################## merlinproject
2022-05-22 15:39:04 : DEBUG : merlinproject : DEBUG mode 1 enabled.
2022-05-22 15:39:05 : INFO  : merlinproject : BLOCKING_PROCESS_ACTION=tell_user
2022-05-22 15:39:05 : INFO  : merlinproject : NOTIFY=success
2022-05-22 15:39:05 : INFO  : merlinproject : LOGGING=DEBUG
2022-05-22 15:39:05 : INFO  : merlinproject : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-22 15:39:05 : INFO  : merlinproject : Label type: zip
2022-05-22 15:39:05 : INFO  : merlinproject : archiveName: Merlin Project.zip
2022-05-22 15:39:05 : INFO  : merlinproject : no blocking processes defined, using Merlin Project as default
2022-05-22 15:39:05 : DEBUG : merlinproject : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-05-22 15:39:05 : INFO  : merlinproject : App(s) found: /Applications/Merlin Project.app
2022-05-22 15:39:05 : INFO  : merlinproject : found app at /Applications/Merlin Project.app, version 8.1.3, on versionKey CFBundleShortVersionString
2022-05-22 15:39:05 : INFO  : merlinproject : appversion: 8.1.3
2022-05-22 15:39:05 : INFO  : merlinproject : Latest version of Merlin Project is 8.1.3
2022-05-22 15:39:05 : WARN  : merlinproject : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-05-22 15:39:05 : REQ   : merlinproject : Downloading https://www.projectwizards.net/downloads/MerlinProject.zip to Merlin Project.zip
2022-05-22 15:39:11 : DEBUG : merlinproject : File list: -rw-r--r--  1 savvas  staff    39M 22 Mai 15:39 Merlin Project.zip
2022-05-22 15:39:11 : DEBUG : merlinproject : File type: Merlin Project.zip: Zip archive data, at least v1.0 to extract, compression method=store
2022-05-22 15:39:11 : DEBUG : merlinproject : curl output was:
*   Trying 83.169.29.130:443...
* Connected to www.projectwizards.net (83.169.29.130) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [327 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [25 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [3047 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=*.projectwizards.net
*  start date: Jan 20 14:50:05 2022 GMT
*  expire date: Feb 19 14:50:05 2023 GMT
*  subjectAltName: host "www.projectwizards.net" matched cert's "*.projectwizards.net"
*  issuer: C=US; ST=Arizona; L=Scottsdale; O=Starfield Technologies, Inc.; OU=http://certs.starfieldtech.com/repository/; CN=Starfield Secure Certificate Authority - G2
*  SSL certificate verify ok.
> GET /downloads/MerlinProject.zip HTTP/1.1
> Host: www.projectwizards.net
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Sun, 22 May 2022 13:39:05 GMT
< Content-Type: application/zip
< Content-Length: 40627041
< Connection: keep-alive
< Server: Apache
< Last-Modified: Wed, 02 Mar 2022 13:12:50 GMT
< ETag: "26beb61-5d93c09d87880"
< Accept-Ranges: bytes
<
{ [16132 bytes data]
* Connection #0 to host www.projectwizards.net left intact

2022-05-22 15:39:11 : DEBUG : merlinproject : DEBUG mode 1, not checking for blocking processes
2022-05-22 15:39:11 : REQ   : merlinproject : Installing Merlin Project
2022-05-22 15:39:11 : INFO  : merlinproject : Unzipping Merlin Project.zip
2022-05-22 15:39:13 : INFO  : merlinproject : Verifying: /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Merlin Project.app
2022-05-22 15:39:13 : DEBUG : merlinproject : App size: 130M	/Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Merlin Project.app
2022-05-22 15:39:14 : DEBUG : merlinproject : Debugging enabled, App Verification output was:
/Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Merlin Project.app: accepted
source=Notarized Developer ID
override=security disabled
origin=Developer ID Application: ProjectWizards GmbH (9R6P9VZV27)

2022-05-22 15:39:14 : INFO  : merlinproject : Team ID matching: 9R6P9VZV27 (expected: 9R6P9VZV27 )
2022-05-22 15:39:14 : INFO  : merlinproject : Downloaded version of Merlin Project is 8.1.3 on versionKey CFBundleShortVersionString, same as installed.
2022-05-22 15:39:14 : DEBUG : merlinproject : DEBUG mode 1, not reopening anything
2022-05-22 15:39:14 : REG   : merlinproject : No new version to install
2022-05-22 15:39:14 : REQ   : merlinproject : ################## End Installomator, exit code 0
2022-05-22 15:41:58 +02:00
macmangr
4040067fc7 New Label: FLEXOPTIX App
./assemble.sh -l /Mosyle/Resources/InstallomatorLabels flexoptixapp
2022-05-22 15:24:14 : REQ   : flexoptixapp : ################## Start Installomator v. 9.2, date 2022-05-22
2022-05-22 15:24:14 : INFO  : flexoptixapp : ################## Version: 9.2
2022-05-22 15:24:14 : INFO  : flexoptixapp : ################## Date: 2022-05-22
2022-05-22 15:24:14 : INFO  : flexoptixapp : ################## flexoptixapp
2022-05-22 15:24:14 : DEBUG : flexoptixapp : DEBUG mode 1 enabled.
2022-05-22 15:24:14 : INFO  : flexoptixapp : BLOCKING_PROCESS_ACTION=tell_user
2022-05-22 15:24:14 : INFO  : flexoptixapp : NOTIFY=success
2022-05-22 15:24:14 : INFO  : flexoptixapp : LOGGING=DEBUG
2022-05-22 15:24:14 : INFO  : flexoptixapp : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-22 15:24:14 : INFO  : flexoptixapp : Label type: dmg
2022-05-22 15:24:14 : INFO  : flexoptixapp : archiveName: FLEXOPTIX App.dmg
2022-05-22 15:24:14 : INFO  : flexoptixapp : no blocking processes defined, using FLEXOPTIX App as default
2022-05-22 15:24:14 : DEBUG : flexoptixapp : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-05-22 15:24:14 : INFO  : flexoptixapp : App(s) found: /Applications/FLEXOPTIX App.app
2022-05-22 15:24:14 : INFO  : flexoptixapp : found app at /Applications/FLEXOPTIX App.app, version 5.11.0, on versionKey CFBundleShortVersionString
2022-05-22 15:24:14 : INFO  : flexoptixapp : appversion: 5.11.0
2022-05-22 15:24:14 : INFO  : flexoptixapp : Latest version of FLEXOPTIX App is 5.11.0
2022-05-22 15:24:14 : WARN  : flexoptixapp : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-05-22 15:24:14 : REQ   : flexoptixapp : Downloading https://flexbox.reconfigure.me/download/electron/mac/x64/current to FLEXOPTIX App.dmg
2022-05-22 15:24:26 : DEBUG : flexoptixapp : File list: -rw-r--r--  1 savvas  staff    83M 22 Mai 15:24 FLEXOPTIX App.dmg
2022-05-22 15:24:26 : DEBUG : flexoptixapp : File type: FLEXOPTIX App.dmg: zlib compressed data
2022-05-22 15:24:26 : DEBUG : flexoptixapp : curl output was:
*   Trying 162.55.184.232:443...
* Connected to flexbox.reconfigure.me (162.55.184.232) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [327 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [108 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [4202 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [300 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [37 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=reconfigure.me
*  start date: Apr  1 21:52:26 2022 GMT
*  expire date: Jun 30 21:52:25 2022 GMT
*  subjectAltName: host "flexbox.reconfigure.me" matched cert's "flexbox.reconfigure.me"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
> GET /download/electron/mac/x64/current HTTP/1.1
> Host: flexbox.reconfigure.me
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Server: nginx
< Date: Sun, 22 May 2022 13:24:14 GMT
< Content-Type: text/html
< Content-Length: 138
< Connection: keep-alive
< Location: /download/electron/mac/x64//FLEXOPTIX App-5.11.0.dmg
<
* Ignoring the response-body
{ [140 bytes data]
* Connection #0 to host flexbox.reconfigure.me left intact
* Issue another request to this URL: 'https://flexbox.reconfigure.me/download/electron/mac/x64//FLEXOPTIX%20App-5.11.0.dmg'
* Found bundle for host flexbox.reconfigure.me: 0x6000036886f0 [serially]
* Can not multiplex, even if we wanted to!
* Re-using existing connection! (#0) with host flexbox.reconfigure.me
* Connected to flexbox.reconfigure.me (162.55.184.232) port 443 (#0)
> GET /download/electron/mac/x64//FLEXOPTIX%20App-5.11.0.dmg HTTP/1.1
> Host: flexbox.reconfigure.me
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: nginx
< Date: Sun, 22 May 2022 13:24:14 GMT
< Content-Type: application/octet-stream
< Content-Length: 86705875
< Last-Modified: Fri, 25 Jun 2021 15:08:54 GMT
< Connection: keep-alive
< ETag: "60d5f186-52b06d3"
< Accept-Ranges: bytes
<
{ [16129 bytes data]
* Connection #0 to host flexbox.reconfigure.me left intact

2022-05-22 15:24:26 : DEBUG : flexoptixapp : DEBUG mode 1, not checking for blocking processes
2022-05-22 15:24:26 : REQ   : flexoptixapp : Installing FLEXOPTIX App
2022-05-22 15:24:26 : INFO  : flexoptixapp : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/FLEXOPTIX App.dmg
2022-05-22 15:24:29 : DEBUG : flexoptixapp : Debugging enabled, dmgmount output was:
Prüfsumme für Protective Master Boot Record (MBR : 0) berechnen …
Protective Master Boot Record (MBR :: Die überprüfte CRC32-Prüfsumme ist $F896513C
Prüfsumme für GPT Header (Primary GPT Header : 1) berechnen …
GPT Header (Primary GPT Header : 1): Die überprüfte CRC32-Prüfsumme ist $2A26FF3A
Prüfsumme für GPT Partition Data (Primary GPT Table : 2) berechnen …
GPT Partition Data (Primary GPT Tabl: Die überprüfte CRC32-Prüfsumme ist $C7EAE15F
Prüfsumme für  (Apple_Free : 3) berechnen …
(Apple_Free : 3): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für disk image (Apple_HFS : 4) berechnen …
disk image (Apple_HFS : 4): Die überprüfte CRC32-Prüfsumme ist $20C222C3
Prüfsumme für  (Apple_Free : 5) berechnen …
(Apple_Free : 5): Die überprüfte CRC32-Prüfsumme ist $00000000
Prüfsumme für GPT Partition Data (Backup GPT Table : 6) berechnen …
GPT Partition Data (Backup GPT Table: Die überprüfte CRC32-Prüfsumme ist $C7EAE15F
Prüfsumme für GPT Header (Backup GPT Header : 7) berechnen …
GPT Header (Backup GPT Header : 7): Die überprüfte CRC32-Prüfsumme ist $A017024D
Die überprüfte CRC32-Prüfsumme ist $00C1C1BD
/dev/disk2          	GUID_partition_scheme
/dev/disk2s1        	Apple_HFS                      	/Volumes/FLEXOPTIX App 5.11.0

2022-05-22 15:24:29 : INFO  : flexoptixapp : Mounted: /Volumes/FLEXOPTIX App 5.11.0
2022-05-22 15:24:29 : INFO  : flexoptixapp : Verifying: /Volumes/FLEXOPTIX App 5.11.0/FLEXOPTIX App.app
2022-05-22 15:24:29 : DEBUG : flexoptixapp : App size: 190M	/Volumes/FLEXOPTIX App 5.11.0/FLEXOPTIX App.app
2022-05-22 15:24:32 : DEBUG : flexoptixapp : Debugging enabled, App Verification output was:
/Volumes/FLEXOPTIX App 5.11.0/FLEXOPTIX App.app: accepted
source=Notarized Developer ID
override=security disabled
origin=Developer ID Application: Flexoptix GmbH (C5JETSFPHL)

2022-05-22 15:24:32 : INFO  : flexoptixapp : Team ID matching: C5JETSFPHL (expected: C5JETSFPHL )
2022-05-22 15:24:32 : INFO  : flexoptixapp : Downloaded version of FLEXOPTIX App is 5.11.0 on versionKey CFBundleShortVersionString, same as installed.
2022-05-22 15:24:32 : DEBUG : flexoptixapp : Unmounting /Volumes/FLEXOPTIX App 5.11.0
2022-05-22 15:24:32 : DEBUG : flexoptixapp : Debugging enabled, Unmounting output was:
"disk2" ejected.
2022-05-22 15:24:32 : DEBUG : flexoptixapp : DEBUG mode 1, not reopening anything
2022-05-22 15:24:32 : REG   : flexoptixapp : No new version to install
2022-05-22 15:24:32 : REQ   : flexoptixapp : ################## End Installomator, exit code 0
2022-05-22 15:25:26 +02:00
macmangr
20e6d0d122 New Label: Carbon Copy Cloner
./assemble.sh -l /Mosyle/Resources/InstallomatorLabels carboncopycloner
2022-05-22 15:17:32 : REQ   : carboncopycloner : ################## Start Installomator v. 9.2, date 2022-05-22
2022-05-22 15:17:32 : INFO  : carboncopycloner : ################## Version: 9.2
2022-05-22 15:17:32 : INFO  : carboncopycloner : ################## Date: 2022-05-22
2022-05-22 15:17:32 : INFO  : carboncopycloner : ################## carboncopycloner
2022-05-22 15:17:32 : DEBUG : carboncopycloner : DEBUG mode 1 enabled.
2022-05-22 15:17:33 : INFO  : carboncopycloner : BLOCKING_PROCESS_ACTION=tell_user
2022-05-22 15:17:33 : INFO  : carboncopycloner : NOTIFY=success
2022-05-22 15:17:33 : INFO  : carboncopycloner : LOGGING=DEBUG
2022-05-22 15:17:33 : INFO  : carboncopycloner : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-22 15:17:33 : INFO  : carboncopycloner : Label type: zip
2022-05-22 15:17:33 : INFO  : carboncopycloner : archiveName: Carbon Copy Cloner.zip
2022-05-22 15:17:33 : INFO  : carboncopycloner : no blocking processes defined, using Carbon Copy Cloner as default
2022-05-22 15:17:33 : DEBUG : carboncopycloner : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-05-22 15:17:33 : INFO  : carboncopycloner : App(s) found: /Applications/Carbon Copy Cloner.app
2022-05-22 15:17:33 : INFO  : carboncopycloner : found app at /Applications/Carbon Copy Cloner.app, version 6.1.1, on versionKey CFBundleShortVersionString
2022-05-22 15:17:33 : INFO  : carboncopycloner : appversion: 6.1.1
2022-05-22 15:17:34 : INFO  : carboncopycloner : Latest version of Carbon Copy Cloner is 6.1.1
2022-05-22 15:17:34 : WARN  : carboncopycloner : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-05-22 15:17:34 : REQ   : carboncopycloner : Downloading https://bombich.scdn1.secure.raxcdn.com/software/files/ccc-6.1.1.7323.zip to Carbon Copy Cloner.zip
2022-05-22 15:17:36 : DEBUG : carboncopycloner : File list: -rw-r--r--  1 savvas  staff    19M 22 Mai 15:17 Carbon Copy Cloner.zip
2022-05-22 15:17:36 : DEBUG : carboncopycloner : File type: Carbon Copy Cloner.zip: Zip archive data, at least v1.0 to extract, compression method=store
2022-05-22 15:17:36 : DEBUG : carboncopycloner : curl output was:
*   Trying 23.203.70.242:443...
* Connected to bombich.scdn1.secure.raxcdn.com (23.203.70.242) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [336 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [102 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [2916 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=Texas; L=Windcrest; O=Rackspace US Inc.; CN=*.scdn1.secure.raxcdn.com
*  start date: Dec 11 00:00:00 2021 GMT
*  expire date: Dec 13 23:59:59 2022 GMT
*  subjectAltName: host "bombich.scdn1.secure.raxcdn.com" matched cert's "*.scdn1.secure.raxcdn.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7fd33e00c600)
> GET /software/files/ccc-6.1.1.7323.zip HTTP/2
> Host: bombich.scdn1.secure.raxcdn.com
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 200
< etag:
< server: LiteSpeed
< content-type: application/zip
< last-modified: Sat, 14 May 2022 14:52:09 GMT
< accept-ranges: bytes
< content-length: 20106063
< cache-control: public, max-age=19010
< expires: Sun, 22 May 2022 18:34:24 GMT
< date: Sun, 22 May 2022 13:17:34 GMT
<
{ [2676 bytes data]
* Connection #0 to host bombich.scdn1.secure.raxcdn.com left intact

2022-05-22 15:17:36 : DEBUG : carboncopycloner : DEBUG mode 1, not checking for blocking processes
2022-05-22 15:17:36 : REQ   : carboncopycloner : Installing Carbon Copy Cloner
2022-05-22 15:17:36 : INFO  : carboncopycloner : Unzipping Carbon Copy Cloner.zip
2022-05-22 15:17:37 : INFO  : carboncopycloner : Verifying: /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Carbon Copy Cloner.app
2022-05-22 15:17:37 : DEBUG : carboncopycloner : App size:  54M	/Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Carbon Copy Cloner.app
2022-05-22 15:17:38 : DEBUG : carboncopycloner : Debugging enabled, App Verification output was:
/Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/Carbon Copy Cloner.app: accepted
source=Notarized Developer ID
override=security disabled
origin=Developer ID Application: Bombich Software, Inc. (L4F2DED5Q7)

2022-05-22 15:17:38 : INFO  : carboncopycloner : Team ID matching: L4F2DED5Q7 (expected: L4F2DED5Q7 )
2022-05-22 15:17:38 : INFO  : carboncopycloner : Downloaded version of Carbon Copy Cloner is 6.1.1 on versionKey CFBundleShortVersionString, same as installed.
2022-05-22 15:17:38 : DEBUG : carboncopycloner : DEBUG mode 1, not reopening anything
2022-05-22 15:17:38 : REG   : carboncopycloner : No new version to install
2022-05-22 15:17:38 : REQ   : carboncopycloner : ################## End Installomator, exit code 0
2022-05-22 15:18:39 +02:00
macmangr
63423f175e New label A Better Finder Rename 11
./assemble.sh -l /Users/savvas/Desktop/Mosyle/Resources/InstallomatorLabels abetterfinderrename11
2022-05-22 14:29:11 : REQ   : abetterfinderrename11 : ################## Start Installomator v. 9.2, date 2022-05-22
2022-05-22 14:29:11 : INFO  : abetterfinderrename11 : ################## Version: 9.2
2022-05-22 14:29:11 : INFO  : abetterfinderrename11 : ################## Date: 2022-05-22
2022-05-22 14:29:11 : INFO  : abetterfinderrename11 : ################## abetterfinderrename11
2022-05-22 14:29:11 : DEBUG : abetterfinderrename11 : DEBUG mode 1 enabled.
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : BLOCKING_PROCESS_ACTION=tell_user
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : NOTIFY=success
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : LOGGING=DEBUG
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : Label type: dmg
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : archiveName: A Better Finder Rename 11.dmg
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : no blocking processes defined, using A Better Finder Rename 11 as default
2022-05-22 14:29:12 : DEBUG : abetterfinderrename11 : Changing directory to /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build
2022-05-22 14:29:12 : INFO  : abetterfinderrename11 : App(s) found: /Applications/A Better Finder Rename 11.app
2022-05-22 14:29:13 : INFO  : abetterfinderrename11 : found app at /Applications/A Better Finder Rename 11.app, version 11.48, on versionKey CFBundleShortVersionString
2022-05-22 14:29:13 : INFO  : abetterfinderrename11 : appversion: 11.48
2022-05-22 14:29:13 : INFO  : abetterfinderrename11 : Latest version of A Better Finder Rename 11 is 11.48
2022-05-22 14:29:13 : WARN  : abetterfinderrename11 : DEBUG mode 1 enabled, not exiting, but there is no new version of app.
2022-05-22 14:29:13 : REQ   : abetterfinderrename11 : Downloading https://www.publicspace.net/download/ABFRX11.dmg to A Better Finder Rename 11.dmg
2022-05-22 14:29:17 : DEBUG : abetterfinderrename11 : File list: -rw-r--r--  1 savvas  staff    13M 22 Mai 14:29 A Better Finder Rename 11.dmg
2022-05-22 14:29:17 : DEBUG : abetterfinderrename11 : File type: A Better Finder Rename 11.dmg: zlib compressed data
2022-05-22 14:29:17 : DEBUG : abetterfinderrename11 : curl output was:
*   Trying 45.76.0.90:443...
* Connected to www.publicspace.net (45.76.0.90) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [324 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [93 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [4042 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=publicspace.net
*  start date: Apr 26 11:06:03 2022 GMT
*  expire date: Jul 25 11:06:02 2022 GMT
*  subjectAltName: host "www.publicspace.net" matched cert's "www.publicspace.net"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
> GET /download/ABFRX11.dmg HTTP/1.1
> Host: www.publicspace.net
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Date: Sun, 22 May 2022 12:29:13 GMT
< Server: Apache/2.2.15 (CentOS)
< Set-Cookie: ps_Xi=fc3532242f71db63f14eec8e38ba7ddc; path=/; expires=Fri, 21 May 2027 12:29:13 GMT
< Set-Cookie: ps_Xt=ja%3D2%3Bjb%3D1%3Bgl%3D0%3Bgo%3D1%3Bgi%3D1%3Bgm%3D1%3Bgj%3D0%3Bod%3D1%3Bof%3D1%3Boc%3D1%3Bob%3D1%3Bog%3D1%3Boa%3D1%3Boe%3D1%3Blw%3D1%3Blz%3D1%3Blc%3D1%3Blb%3D1%3Bla%3D1%3Blx%3D1%3Bly%3D1%3Biz%3D1%3Biv%3D1%3Bit%3D1%3Biu%3D1%3Bix%3D1%3Biy%3D1%3Bis%3D1%3Biw%3D1%3Bfk%3D0%3Bfl%3D0%3Bfo%3D1%3Bfp%3D1%3Bfq%3D0%3Bfs%3D1%3Bnp%3DA%3Bns%3Donly%3Bny%3D1%3Bnt%3D1%3Bnv%3D1%3Bnw%3D1%3Bnx%3D1%3Bnu%3D1%3Bnz%3D1%3Bf%3D1%3Bb%3D0%3Ba%3D0%3Be%3D0%3Bc%3D0%3Bd%3D0%3B; path=/; expires=Fri, 21 May 2027 12:29:13 GMT
< Set-Cookie: ps_Xu=bookmarked%3B%3Cnone%3E%3Bwin; path=/; expires=Tue, 21 Jun 2022 12:29:13 GMT
< location: https://d3k6s0oeufjjjn.cloudfront.net/download0_41ea57282d185/ABFRX11.dmg
< Content-Length: 0
< Connection: close
< Content-Type: application/octet-stream
<
* Closing connection 0
* TLSv1.2 (IN), TLS alert, close notify (256):
{ [2 bytes data]
* TLSv1.2 (OUT), TLS alert, close notify (256):
} [2 bytes data]
* Issue another request to this URL: 'https://d3k6s0oeufjjjn.cloudfront.net/download0_41ea57282d185/ABFRX11.dmg'
*   Trying 13.224.194.186:443...
* Connected to d3k6s0oeufjjjn.cloudfront.net (13.224.194.186) port 443 (#1)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
} [334 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [10 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4963 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=*.cloudfront.net
*  start date: Feb  1 00:00:00 2022 GMT
*  expire date: Jan 31 23:59:59 2023 GMT
*  subjectAltName: host "d3k6s0oeufjjjn.cloudfront.net" matched cert's "*.cloudfront.net"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
> GET /download0_41ea57282d185/ABFRX11.dmg HTTP/1.1
> Host: d3k6s0oeufjjjn.cloudfront.net
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< Content-Type: text/html; charset=iso-8859-1
< Content-Length: 356
< Connection: keep-alive
< Date: Sat, 21 May 2022 19:30:43 GMT
< Server: Apache/2.2.15 (CentOS)
< Location: https://www.publicspace.net/download0_41ea57282d185/ABFRX11.dmg
< X-Cache: Hit from cloudfront
< Via: 1.1 7a18a0a1d9929dae345690b88b08dd5e.cloudfront.net (CloudFront)
< X-Amz-Cf-Pop: FRA2-C1
< X-Amz-Cf-Id: U2_dcxL3hiHNhc2e3kxvUwhreA_DhClBfHdIVe1LB-_Gy2QXk3o6Yw==
< Age: 61110
<
* Ignoring the response-body
{ [356 bytes data]
* Connection #1 to host d3k6s0oeufjjjn.cloudfront.net left intact
* Issue another request to this URL: 'https://www.publicspace.net/download0_41ea57282d185/ABFRX11.dmg'
* Hostname www.publicspace.net was found in DNS cache
*   Trying 45.76.0.90:443...
* Connected to www.publicspace.net (45.76.0.90) port 443 (#2)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* SSL re-using session ID
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [263 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [81 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=publicspace.net
*  start date: Apr 26 11:06:03 2022 GMT
*  expire date: Jul 25 11:06:02 2022 GMT
*  subjectAltName: host "www.publicspace.net" matched cert's "www.publicspace.net"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
> GET /download0_41ea57282d185/ABFRX11.dmg HTTP/1.1
> Host: www.publicspace.net
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Sun, 22 May 2022 12:29:14 GMT
< Server: Apache/2.2.15 (CentOS)
< Last-Modified: Wed, 18 May 2022 10:33:04 GMT
< ETag: "21690-d51308-5df46c8419800"
< Accept-Ranges: bytes
< Content-Length: 13964040
< Connection: close
< Content-Type: text/plain; charset=UTF-8
<
{ [16384 bytes data]
* Closing connection 2
* TLSv1.2 (IN), TLS alert, close notify (256):
{ [2 bytes data]
* TLSv1.2 (OUT), TLS alert, close notify (256):
} [2 bytes data]

2022-05-22 14:29:17 : DEBUG : abetterfinderrename11 : DEBUG mode 1, not checking for blocking processes
2022-05-22 14:29:17 : REQ   : abetterfinderrename11 : Installing A Better Finder Rename 11
2022-05-22 14:29:17 : INFO  : abetterfinderrename11 : Mounting /Users/savvas/Desktop/Mosyle/Resources/Installomator-main original/build/A Better Finder Rename 11.dmg
2022-05-22 14:29:19 : DEBUG : abetterfinderrename11 : Debugging enabled, dmgmount output was:

Disclaimer of Warranty

This software is sold "as is" and without warranties as to performance
or merchantability or any other warranties whether expressed or
implied. Because of the various hardware and software environments
into which this program may be put, no warranty of fitness for a
particular purpose is offered. Good data processing procedure
dictates that any program be throughly tested with non-critical
data before relying on it. The user must assume the entire risk of
using the program. Any liability of the seller or author of the
program will be limited exclusively to product replacement or refund
of purchase price.
Prüfsumme für Driver Descriptor Map (DDM : 0) berechnen …
Driver Descriptor Map (DDM : 0): Die überprüfte CRC32-Prüfsumme ist $5A82F9A7
Prüfsumme für Apple (Apple_partition_map : 1) berechnen …
Apple (Apple_partition_map : 1): Die überprüfte CRC32-Prüfsumme ist $E3975401
Prüfsumme für disk image (Apple_HFS : 2) berechnen …
disk image (Apple_HFS : 2): Die überprüfte CRC32-Prüfsumme ist $1B97C162
Prüfsumme für  (Apple_Free : 3) berechnen …
(Apple_Free : 3): Die überprüfte CRC32-Prüfsumme ist $00000000
Die überprüfte CRC32-Prüfsumme ist $C5263827
/dev/disk2          	Apple_partition_scheme
/dev/disk2s1        	Apple_partition_map
/dev/disk2s2        	Apple_HFS                      	/Volumes/A Better Finder Rename 11

2022-05-22 14:29:19 : INFO  : abetterfinderrename11 : Mounted: /Volumes/A Better Finder Rename 11
2022-05-22 14:29:19 : INFO  : abetterfinderrename11 : Verifying: /Volumes/A Better Finder Rename 11/A Better Finder Rename 11.app
2022-05-22 14:29:19 : DEBUG : abetterfinderrename11 : App size:  43M	/Volumes/A Better Finder Rename 11/A Better Finder Rename 11.app
2022-05-22 14:29:21 : DEBUG : abetterfinderrename11 : Debugging enabled, App Verification output was:
/Volumes/A Better Finder Rename 11/A Better Finder Rename 11.app: accepted
source=Notarized Developer ID
override=security disabled
origin=Developer ID Application: Frank Reiff (7Y9KW4ND8W)

2022-05-22 14:29:21 : INFO  : abetterfinderrename11 : Team ID matching: 7Y9KW4ND8W (expected: 7Y9KW4ND8W )
2022-05-22 14:29:21 : INFO  : abetterfinderrename11 : Downloaded version of A Better Finder Rename 11 is 11.48 on versionKey CFBundleShortVersionString, same as installed.
2022-05-22 14:29:21 : DEBUG : abetterfinderrename11 : Unmounting /Volumes/A Better Finder Rename 11
2022-05-22 14:29:21 : DEBUG : abetterfinderrename11 : Debugging enabled, Unmounting output was:
"disk2" ejected.
2022-05-22 14:29:21 : DEBUG : abetterfinderrename11 : DEBUG mode 1, not reopening anything
2022-05-22 14:29:21 : REG   : abetterfinderrename11 : No new version to install
2022-05-22 14:29:21 : REQ   : abetterfinderrename11 : ################## End Installomator, exit code 0
2022-05-22 14:56:31 +02:00
Fletcher Salesky
e56be4f18a Update ringcentralapp.sh 2022-05-20 19:31:58 -07:00
Greg R
db85295899 New Label: KeepingYouAwake
https://keepingyouawake.app/
2022-05-20 12:37:33 -07:00
Fletcher Salesky
442a4ae0af Create duodevicehealth.sh 2022-05-19 22:19:13 -07:00
Fletcher Salesky
f8b91946c6 Create mmhmm.sh 2022-05-19 21:35:27 -07:00
Liam Steckler
b96e1dbca1 Add ipswupdater label using JSON parsing 2022-05-18 08:50:57 -07:00
Søren Theilgaard
3ccc9dc93e versionKey added to the labels.
Output:
```
➜  Installomator/utils/assemble.sh marathoninfinity DEBUG=0
2022-05-18 15:21:53 : WARN  : marathoninfinity : setting variable from argument DEBUG=0
2022-05-18 15:21:53 : REQ   : marathoninfinity : ################## Start Installomator v. 10.0beta, date 2022-05-18
2022-05-18 15:21:53 : INFO  : marathoninfinity : ################## Version: 10.0beta
2022-05-18 15:21:53 : INFO  : marathoninfinity : ################## Date: 2022-05-18
2022-05-18 15:21:53 : INFO  : marathoninfinity : ################## marathoninfinity
2022-05-18 15:21:53 : INFO  : marathoninfinity : BLOCKING_PROCESS_ACTION=tell_user
2022-05-18 15:21:53 : INFO  : marathoninfinity : NOTIFY=success
2022-05-18 15:21:53 : INFO  : marathoninfinity : LOGGING=INFO
2022-05-18 15:21:53 : INFO  : marathoninfinity : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-05-18 15:21:53 : INFO  : marathoninfinity : Label type: dmg
2022-05-18 15:21:53 : INFO  : marathoninfinity : archiveName: MarathonInfinity-[0-9.]*-Mac.dmg
2022-05-18 15:21:53 : INFO  : marathoninfinity : no blocking processes defined, using Marathon Infinity as default
2022-05-18 15:21:53 : INFO  : marathoninfinity : App(s) found: /Applications/Marathon Infinity.app
2022-05-18 15:21:53 : INFO  : marathoninfinity : found app at /Applications/Marathon Infinity.app, version 20220115, on versionKey CFBundleVersion
2022-05-18 15:21:53 : INFO  : marathoninfinity : appversion: 20220115
2022-05-18 15:21:53 : INFO  : marathoninfinity : Latest version of Marathon Infinity is 20220115
2022-05-18 15:21:53 : INFO  : marathoninfinity : There is no newer version available.
2022-05-18 15:21:53 : INFO  : marathoninfinity : App not closed, so no reopen.
2022-05-18 15:21:53 : REQ   : marathoninfinity : No newer version.
2022-05-18 15:21:53 : REQ   : marathoninfinity : ################## End Installomator, exit code 0

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

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

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

View File

@@ -1,3 +1,182 @@
## v10
- updates to MDM sample scripts (#738)
- updates to Swift Dialog integration (#717)
- documentation updates (#711)
And everything from the betas ([beta1](https://github.com/Installomator/Installomator/releases/tag/v10beta1), [beta2](https://github.com/Installomator/Installomator/releases/tag/v10beta2), [beta3](https://github.com/Installomator/Installomator/releases/tag/v10beta3))
- new labels:
- ibmnotifier (#716)
- ipvisionconnect (#749)
- logitechoptionsplus (#719)
- lucidlink (#722)
- mactex (#685)
- onscreencontrol (#581)
- projectplace (#688)
- subethaedit (#728)
- sublimemerge (#729)
- venturablocker (#712)
- vysor (#710)
- updated labels:
- googleadseditor (#739)
- openvpnconnectv3 (#750)
- tunnelblick (#618)
## v10beta3
- option to add item to dock if dockutil is installed (#701 requires dockutil https://github.com/kcrawford/dockutil )
- further improvements to GitHub downloads (#691)
- updated user dialog when app is already on the latest version (#658)
Plus everything from beta1 and beta2.
- new labels:
- adobeacrobatprodc (#707)
- adobereaderdc-install (#707)
- archiwareb2go (#625, #707)
- archiwarepst (#624)
- bitrix24 (#661)
- charles (#670)
- chronoagent (#617)
- chronosync (#616)
- cytoscape (#689)
- egnytecore (#655)
- fellow (#599)
- filemakerpro (#609)
- fujifilmwebcam (#598)
- gfxcardstatus (#690)
- horos (#610)
- inetclearreportsdesigner (#601)
- jdk18 (#608)
- latexit (#684)
- nudgesuite (#633)
- origin (#662)
- parallelsrasclient (#607)
- polylens (#671)
- splashtopbusiness (#660)
- tailscale (#620)
- zoomoutlookplugin (#656)
- zotero (#634)
- zulujdk18 (#612)
- updated labels:
- acroniscyberprotectconnectagent (#678)
- adobecreativeclouddesktop (#687)
- adobereaderdc-update (#707)
- audacity (#708)
- duckduckgo (#704)
- libreoffice (#605)
- nudge
- obs (#692)
- r (#702)
- rstudio (#702)
- screamingfrogseospider (#665)
- vlc (#705, #606)
- xcreds
## v10beta2
- fixed problem with GitHub labels (#659)
- bz2 archive support (#659)
- fixed WorkspaceOne support (#653)
- updated how `aapNewVersion` is determined (#680)
Plus everything from v10beta1
- new labels:
- abetterfinderrename11 (#552)
- carboncopycloner (#553)
- cocoapods (#659)
- coconutbattery (#588)
- cricutdesignspace (#562)
- dynalist (#591)
- fellow (#591)
- flexoptixapp (#554)
- googleadseditor (#652, #541)
- kap (#568)
- keepingyouawake (#549)
- lcadvancedvpnclient (#584)
- masv (#569)
- merlinproject (#555)
- mongodbcompass (#654)
- netspot (#556)
- relatel (#619)
- sonicvisualiser (#575)
- strongdm (#559)
- synologyassistant (#557)
- synologydriveclient (#582)
- tencentmeeting (#570)
- typinator (#583)
- xcreds (#675)
- updated labels:
- acroniscyberprotectconnect/remotix (#664)
- acroniscyberprotectconnectagent/remotixagent (#664)
- awsvpnclient (#586)
- boxtools (#589)
- clevershare2 (#664)
- coderunner (#664)
- colourcontrastanalyser (#664)
- cryptomator (#664)
- dangerzone (#664)
- drawio (#664)
- golang (#664)
- icons (#664)
- insomnia (#664)
- knockknock (#664)
- libreoffice (#672)
- macports
- opera (#664)
- supportapp (#664)
- vmwarehorizonclient (#645, #511)
- deleted/deactivated labels:
- microsoftyammer (#664)
- wickrme (#664)
- wickrpro (#664)
## v10beta1
- [swiftDialog](https://github.com/bartreardon/swiftDialog) integration (#641, #632), many thanks to @bartreardon, [sample scripts](in the MDM folder)
- added WorkspaceOne option for LOGO (#517)
- added function for JSON parsing with JXA (#529)
- updated assemble.sh script to update Labels.txt when script is rebuilt (#540)
- added a no requisite install script (#493)
- GitHub lookup now don't use API calls, this should avoid or at least reduce rate limiting (#543)
- fixed redundant exit codes (#643, #561)
NOTE: some exit codes have changed! see [Installomator Exit Codes](https://github.com/Installomator/Installomator/wiki/Installomator-Exit-Codes) for a list
- new labels:
- bluejeanswithaudiodriver (#473)
- duodevicehealth (#548)
- googlechromeenterprise (#532)
- ipswupdater (#545)
- mmhmm (#571)
- nordlayer (#419)
- prune (#538)
- whatroute (#560)
- updated labels:
- blender (#535, #622)
- camtasia2019 (#547)
- clickshare (#565)
- egnyte (#500)
- googledrive (#563)
- grammarly (#576)
- marathon, marathon2, marathoninfinity (#544)
- miro (#475, #539)
- notion (#566)
- ringcentralapp (#550)
- sublimetext (#593, #578, #567, #623, #626)
- talkdeskcallbar (#536)
- talkdeskcxcloud (#537)
- wireshark (#585)
## v9.2
**Note**: Both Google and Mozilla recommend using the pkg installers instead of the dmg downloads for managed deployments. So far, Installomator has provided labels for both. (`googlechrome` and `googlechromepkg` or `firefox` and `firefoxpkg`, respectively) Since there are problems with the dmg downloads, a future release of Installomator will _disable_ the `firefox` and `googlechrome` dmg labels. You should switch to using `googlechromepkg` and `firefoxpkg` labels instead.

File diff suppressed because it is too large Load Diff

View File

@@ -3,12 +3,17 @@
1passwordcli
4kvideodownloader
8x8
abetterfinderrename11
abstract
acroniscyberprotectconnect
acroniscyberprotectconnectagent
adobeacrobatprodc
adobebrackets
adobeconnect
adobecreativeclouddesktop
adobereaderdc
adobereaderdc-install
adobereaderdc-install
adobereaderdc-update
aircall
airserver
@@ -32,6 +37,8 @@ applesfmono
applesfpro
applesfsymbols
aquaskk
archiwareb2go
archiwarepst
arq7
asana
atext
@@ -53,9 +60,11 @@ bartender
basecamp3
bbedit
bettertouchtool
bitrix24
bitwarden
blender
bluejeans
bluejeanswithaudiodriver
boxdrive
boxsync
boxtools
@@ -71,7 +80,11 @@ camtasia2019
camtasia2020
camtasia2021
canva
carboncopycloner
charles
chatwork
chronoagent
chronosync
cisdem-documentreader
citrixworkspace
clevershare2
@@ -81,14 +94,18 @@ closeio
cloudya
clue
cluefull
cocoapods
coconutbattery
code42
coderunner
colourcontrastanalyser
cormorant
craftmanager
craftmanagerforsketch
cricutdesignspace
cryptomator
cyberduck
cytoscape
daisydisk
dangerzone
darktable
@@ -110,9 +127,12 @@ drawio
drift
dropbox
duckduckgo
duodevicehealth
dynalist
easeusdatarecoverywizard
easyfind
egnyte
egnytecore
egnytewebedit
element
eraseinstall
@@ -124,8 +144,10 @@ exifrenamer
fantastical
fastscripts
favro
fellow
ferdi
figma
filemakerpro
filezilla
findanyfile
firefox
@@ -136,16 +158,21 @@ firefoxesr_intl
firefoxesrpkg
firefoxpkg
firefoxpkg_intl
flexoptixapp
flowjo
flux
flycut
fontexplorer
front
fsmonitor
fujifilmwebcam
gfxcardstatus
gimp
githubdesktop
golang
googleadseditor
googlechrome
googlechromeenterprise
googlechromepkg
googledrive
googledrivebackupandsync
@@ -164,23 +191,28 @@ gyazogif
hancock
handbrake
hazel
horos
houdahspot
hpeasyadmin
hpeasystart
hype
hyper
ibarcoder
ibmnotifier
icons
idrive
idrivethin
iina
imageoptim
imazingprofileeditor
inetclearreportsdesigner
inkscape
insomnia
installomator
installomator_theile
intellijideace
ipswupdater
ipvisionconnect
istatmenus
iterm2
itsycal
@@ -190,6 +222,7 @@ jamfconnectconfiguration
jamfmigrator
jamfpppcutility
jamfreenroller
jdk18
jetbrainsclion
jetbrainsdatagrip
jetbrainsintellijidea
@@ -200,8 +233,10 @@ jetbrainspycharmce
jetbrainsrubymine
jetbrainstoolbox
jetbrainswebstorm
kap
karabinerelements
keepassxc
keepingyouawake
keka
keybase
keyboardmaestro
@@ -210,15 +245,19 @@ knockknock
krisp
krita
lastpass
latexit
launchbar
lcadvancedvpnclient
lexarrecoverytool
libreoffice
linear
logioptions
logitechoptions
logitechoptionsplus
logseq
loom
lowprofile
lucidlink
lucifer
lulu
macadminspython
@@ -226,12 +265,15 @@ maccyapp
macfuse
macoslaps
macports
mactex
malwarebytes
marathon
marathon2
marathoninfinity
masv
mattermost
menumeters
merlinproject
microsoftautoupdate
microsoftazuredatastudio
microsoftazurestorageexplorer
@@ -255,27 +297,31 @@ microsoftskypeforbusiness
microsoftteams
microsoftvisualstudiocode
microsoftword
microsoftyammer
mightymike
mindmanager
miro
mmhmm
mobikinassistantforandroid
mochakeyboard
mochatelnet
mochatn3270
mochatn3812
mochatn5250
mongodbcompass
montereyblocker
mowgliiitsycal
musescore
muzzle
nanosaur
netnewswire
netspot
nextcloud
nomad
nomadlogin
nordlayer
notion
nudge
nudgesuite
nvivo
obs
obsidian
@@ -290,14 +336,17 @@ omniplan4
omnipresence
onionshare
onlyofficedesktop
onscreencontrol
openvpnconnect
openvpnconnectv3
opera
origin
ottomatic
overflow
pacifist
packages
pandoc
parallelsrasclient
paretosecurity
parsec
pdfsam
@@ -307,16 +356,19 @@ pitch
plantronicshub
platypus
plisteditpro
polylens
postman
prism9
pritunl
privileges
proctortrack
projectplace
promiseutility
promiseutilityr
propresenter7
protonvpn
proxyman
prune
pycharmce
pymol
qgis-pr
@@ -325,6 +377,7 @@ ramboxce
rancherdesktop
rectangle
redeye
relatel
remotedesktopmanagerenterprise
remotedesktopmanagerfree
remotix
@@ -369,17 +422,22 @@ snagit2020
snagit2021
snagit2022
snapgeneviewer
sonicvisualiser
sonobus
sonos
sonoss1
sonoss2
sourcetree
splashtopbusiness
splashtopsos
spotify
sqlpropostgres
sqlprostudio
steelseriesengine
strongdm
strongsync
subethaedit
sublimemerge
sublimetext
superhuman
supportapp
@@ -387,10 +445,13 @@ suspiciouspackage
swiftdialog
swiftruntimeforcommandlinetools
sync
synologyassistant
synologydriveclient
tableaudesktop
tableaupublic
tableaureader
tageditor
tailscale
talkdeskcallbar
talkdeskcxcloud
taskpaper
@@ -400,6 +461,7 @@ teamviewerqs
techsmithcapture
telegram
tembo
tencentmeeting
textexpander
textmate
theunarchiver
@@ -413,6 +475,7 @@ torbrowser
trex
tunnelbear
tunnelblick
typinator
typora
ultimakercura
umbrellaroamingclient
@@ -422,6 +485,7 @@ unnaturalscrollwheels
utm
vagrant
vanilla
venturablocker
veracrypt
vimac
virtualbox
@@ -431,18 +495,19 @@ vivaldi
vlc
vmwarehorizonclient
vscodium
vysor
wacomdrivers
wallyezflash
webex
webexmeetings
webexteams
wechat
whatroute
whatsapp
wickrme
wickrpro
wireshark
wordservice
wwdc
xcreds
xeroxphaser7800
xeroxworkcentre7800
xink
@@ -458,9 +523,12 @@ zohoworkdrivetruesync
zoom
zoomclient
zoomgov
zoomoutlookplugin
zoomrooms
zotero
zulujdk11
zulujdk13
zulujdk15
zulujdk17
zulujdk18
zulujdk8

View File

@@ -1,185 +0,0 @@
#!/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.
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem"
######################################################################
# Parameters for reinstall/initial install (owner root:wheel):
# "BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes SYSTEMOWNER=1"
# Parameters for Self Service installed app:
# "BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=all"
# Parameters for security important apps, like browsers (run automaticaly every day):
# "BLOCKING_PROCESS_ACTION=tell_user_then_kill"
# Update of service apps (run automatically):
# "BLOCKING_PROCESS_ACTION=quit_kill NOTIFY=silent"
parameters="BLOCKING_PROCESS_ACTION=tell_user_then_kill NOTIFY=all"
###############################################
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
cmdOutput="$(${destFile} ${what} LOGO=$LOGO $parameters LOGGING=WARN || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -ne 0 ]] ; then
echo -e "Error installing ${what}. Exit code ${exitStatus}"
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
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.
# Shouldnt 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 its 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

View File

@@ -0,0 +1,354 @@
#!/bin/sh
# Installation using Installomator with Dialog showing progress (and posibility of adding to the Dock)
# Installation of software using `valuesfromarguments` to install a custom software using Installomator through GitHub
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
# Have the label been submittet in a PR for Installomator?
# What version of Installomator is it expected to be included in?
# Version 10.0
item="gfxcardstatus" # enter the software to install (if it has a label in future version of Installomator)
# Label variables below
# GitHub functions
downloadURLFromGit() { # $1 git user name, $2 git repo name
gitusername=${1?:"no git user name"}
gitreponame=${2?:"no git repo name"}
if [[ $type == "pkgInDmg" ]]; then
filetype="dmg"
elif [[ $type == "pkgInZip" ]]; then
filetype="zip"
else
filetype=$type
fi
if [ -n "$archiveName" ]; then
downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*$archiveName" | head -1 || true)
if [[ "$(echo $downloadURL | grep -ioE "https.*$archiveName" || true)" == "" ]]; then
#printlog "Trying GitHub API for download URL."
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }" || true)
fi
else
downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1 || true)
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype" || true)" == "" ]]; then
#printlog "Trying GitHub API for download URL."
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }" || true)
fi
fi
if [ -z "$downloadURL" ]; then
echo "could not retrieve download URL for $gitusername/$gitreponame"
exit 1
else
echo "$downloadURL"
return 0
fi
}
versionFromGit() {
# credit: Søren Theilgaard (@theilgaard)
# $1 git user name, $2 git repo name
gitusername=${1?:"no git user name"}
gitreponame=${2?:"no git repo name"}
#appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g' || true)
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g' || true)
if [ -z "$appNewVersion" ]; then
#echo "could not retrieve version number for $gitusername/$gitreponame"
appNewVersion=""
else
echo "$appNewVersion"
return 0
fi
}
# Variables for label
name="gfxCardStatus"
type="zip"
packageID=""
downloadURL="$(downloadURLFromGit codykrieger gfxCardStatus)"
appNewVersion="$(versionFromGit codykrieger gfxCardStatus)"
versionKey=""
expectedTeamID="LF22FTQC25"
# Dialog icon
icon=""
# icon should be a file system path or an URL to an online PNG.
# In Mosyle an URL can be found by copy picture address from a Custom Command icon.
# dockutil variables
addToDock="1" # with dockutil after installation (0 if not)
appPath="/Applications/$name.app"
# Other variables
dialog_command_file="/var/tmp/dialog.log"
dialogApp="/Library/Application Support/Dialog/Dialog.app"
dockutil="/usr/local/bin/dockutil"
installomatorOptions="BLOCKING_PROCESS_ACTION=prompt_user DIALOG_CMD_FILE=${dialog_command_file}" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill out the label variables above, and those will be included in the Installomator call, circa on line 248
# Script will run this label through Installomator.
######################################################################
# v. 10.0.3 : A bit more logging on succes, and change in ending Dialog part.
# v. 10.0.2 : Improved icon checks and failovers
# v. 10.0.1 : github-functions added. Improved appIcon handling. Can add the app to Dock using dockutil.
# v. 10.0 : Integration with Dialog and Installomator v. 10
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
if [[ -z "$item" ]]; then
item="$name"
fi
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
checkCmdOutput () {
local checkOutput="$1"
exitStatus="$( echo "${checkOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${checkOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$checkOutput"
#errorOutput="$( echo "${checkOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
#echo "$checkOutput"
}
# Check the currently logged in user
currentUser=$(stat -f "%Su" /dev/console)
if [ -z "$currentUser" ] || [ "$currentUser" = "loginwindow" ] || [ "$currentUser" = "_mbsetupuser" ] || [ "$currentUser" = "root" ]; then
echo "ERROR. Logged in user is $currentUser! Cannot proceed."
exit 97
fi
# Get the current user's UID for dockutil
uid=$(id -u "$currentUser")
# Find the home folder of the user
userHome="$(dscl . -read /users/${currentUser} NFSHomeDirectory | awk '{print $2}')"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Mark: Installation begins
installomatorVersion="$(${destFile} version | cut -d "." -f1 || true)"
if [[ $installomatorVersion -lt 10 ]] || [[ $(sw_vers -buildVersion | cut -c1-2) -lt 20 ]]; then
echo "Skipping swiftDialog UI, using notifications."
#echo "Installomator should be at least version 10 to support swiftDialog. Installed version $installomatorVersion."
#echo "And macOS 11 Big Sur (build 20A) is required for swiftDialog. Installed build $(sw_vers -buildVersion)."
installomatorNotify="NOTIFY=all"
else
installomatorNotify="NOTIFY=silent"
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
# Install using Installlomator
cmdOutput="$(${destFile} dialog LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
# Configure and display swiftDialog
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
message="Installing ${itemName}"
else
message="Installing ${item}"
fi
echo "$item $itemName"
#Check icon (expecting beginning with “http” to be web-link and “/” to be disk file)
#echo "icon before check: $icon"
if [[ "$(echo ${icon} | grep -iE "^(http|ftp).*")" != "" ]]; then
#echo "icon looks to be web-link"
if ! curl -sfL --output /dev/null -r 0-0 "${icon}" ; then
echo "ERROR: Cannot download ${icon} link. Reset icon."
icon=""
fi
elif [[ "$(echo ${icon} | grep -iE "^\/.*")" != "" ]]; then
#echo "icon looks to be a file"
if [[ ! -a "${icon}" ]]; then
echo "ERROR: Cannot find icon file ${icon}. Reset icon."
icon=""
fi
else
echo "ERROR: Cannot figure out icon ${icon}. Reset icon."
icon=""
fi
#echo "icon after first check: $icon"
# If no icon defined we are trying to search for installed app icon
if [[ "$icon" == "" ]]; then
appPath=$(mdfind "kind:application AND name:$itemName" | head -1 || true)
appIcon=$(defaults read "${appPath}/Contents/Info.plist" CFBundleIconFile || true)
if [[ "$(echo "$appIcon" | grep -io ".icns")" == "" ]]; then
appIcon="${appIcon}.icns"
fi
icon="${appPath}/Contents/Resources/${appIcon}"
#echo "Icon before file check: ${icon}"
if [ ! -f "${icon}" ]; then
# Using LOGO variable to show logo in swiftDialog
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
icon="${LOGO_PATH}"
fi
fi
echo "LOGO: $LOGO"
echo "icon: ${icon}"
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1
fi
# Install software using Installomator with valuesfromarguments
cmdOutput="$(${destFile} valuesfromarguments LOGO=$LOGO \
name=\"${name}\" \
type=${type} \
packageID=${packageID} \
downloadURL=\"$downloadURL\" \
appNewVersion=${appNewVersion} \
versionKey=${versionKey} \
expectedTeamID=${expectedTeamID} \
${installomatorOptions} ${installomatorNotify} || true)"
checkCmdOutput "${cmdOutput}"
# Mark: dockutil stuff
if [[ $addToDock -eq 1 ]]; then
dialogUpdate "progresstext: Adding to Dock"
if [[ ! -d $dockutil ]]; then
echo "Cannot find dockutil at $dockutil, trying installation"
# Install using Installlomator
cmdOutput="$(${destFile} dockutil LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
echo "Adding to Dock"
$dockutil --add "${appPath}" "${userHome}/Library/Preferences/com.apple.dock.plist" || true
sleep 1
else
echo "Not adding to Dock."
fi
# Mark: Ending
if [[ $installomatorVersion -ge 10 && $(sw_vers -buildVersion | cut -c1-2) -ge 20 ]]; then
# close and quit dialog
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
# pause a moment
sleep 0.5
dialogUpdate "quit:"
# let everything catch up
sleep 0.5
# just to be safe
#killall "Dialog" 2>/dev/null || true
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,300 @@
#!/bin/sh
# Installation using Installomator with Dialog showing progress (and posibility of adding to the Dock)
# Installation of software using `valuesfromarguments` to install a custom software using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
# Have the label been submittet in a PR for Installomator?
# What version of Installomator is it expected to be included in?
# Version 10.0
item="clickshare" # enter the software to install (if it has a label in future version of Installomator)
# Variables for label
name="ClickShare" # If spaces in the name, fill out "${name}" in Installomator-call below, circa line 249. Spaces should be escaped in that line.
type="appInDmgInZip"
packageID=""
downloadURL="https://www.barco.com$( curl -fs "https://www.barco.com/en/clickshare/app" | grep -A6 -i "macos" | grep -i "FileNumber" | tr '"' "\n" | grep -i "FileNumber" )"
appNewVersion="$(eval "$( echo $downloadURL | sed -E 's/.*(MajorVersion.*BuildVersion=[0-9]*).*/\1/' | sed 's/&amp//g' )" ; ((MajorVersion++)) ; ((MajorVersion--)); ((MinorVersion++)) ; ((MinorVersion--)); ((PatchVersion++)) ; ((PatchVersion--)); ((BuildVersion++)) ; ((BuildVersion--)); echo "${MajorVersion}.${MinorVersion}.${PatchVersion}-b${BuildVersion}")"
expectedTeamID="P6CDJZR997"
# Dialog icon
icon=""
# icon should be a file system path or an URL to an online PNG.
# In Mosyle an URL can be found by copy picture address from a Custom Command icon.
# dockutil variables
addToDock="1" # with dockutil after installation (0 if not)
appPath="/Applications/$name.app"
# Other variables
dialog_command_file="/var/tmp/dialog.log"
dialogApp="/Library/Application Support/Dialog/Dialog.app"
dockutil="/usr/local/bin/dockutil"
installomatorOptions="BLOCKING_PROCESS_ACTION=prompt_user DIALOG_CMD_FILE=${dialog_command_file}" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill out the label variables above, and those will be included in the Installomator call, circa on line 248
# Script will run this label through Installomator.
######################################################################
# v. 10.0.3 : A bit more logging on succes, and change in ending Dialog part.
# v. 10.0.2 : Improved icon checks and failovers
# v. 10.0.1 : Improved appIcon handling. Can add the app to Dock using dockutil
# v. 10.0 : Integration with Dialog and Installomator v. 10
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
if [[ -z "$item" ]]; then
item="$name"
fi
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
checkCmdOutput () {
local checkOutput="$1"
exitStatus="$( echo "${checkOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${checkOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$checkOutput"
#errorOutput="$( echo "${checkOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
#echo "$checkOutput"
}
# Check the currently logged in user
currentUser=$(stat -f "%Su" /dev/console)
if [[ -z "$currentUser" ]] || [[ "$currentUser" = "loginwindow" ]] || [[ "$currentUser" = "_mbsetupuser" ]] || [[ "$currentUser" = "root" ]]; then
echo "ERROR. Logged in user is $currentUser! Cannot proceed."
exit 97
fi
# Get the current user's UID for dockutil
uid=$(id -u "$currentUser")
# Find the home folder of the user
userHome="$(dscl . -read /users/${currentUser} NFSHomeDirectory | awk '{print $2}')"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Mark: Installation begins
installomatorVersion="$(${destFile} version | cut -d "." -f1 || true)"
if [[ $installomatorVersion -lt 10 ]] || [[ $(sw_vers -buildVersion | cut -c1-2) -lt 20 ]]; then
echo "Skipping swiftDialog UI, using notifications."
#echo "Installomator should be at least version 10 to support swiftDialog. Installed version $installomatorVersion."
#echo "And macOS 11 Big Sur (build 20A) is required for swiftDialog. Installed build $(sw_vers -buildVersion)."
installomatorNotify="NOTIFY=all"
else
installomatorNotify="NOTIFY=silent"
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
# Install using Installlomator
cmdOutput="$(${destFile} dialog LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
# Configure and display swiftDialog
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
message="Installing ${itemName}"
else
message="Installing ${item}"
fi
echo "$item $itemName"
#Check icon (expecting beginning with “http” to be web-link and “/” to be disk file)
#echo "icon before check: $icon"
if [[ "$(echo ${icon} | grep -iE "^(http|ftp).*")" != "" ]]; then
#echo "icon looks to be web-link"
if ! curl -sfL --output /dev/null -r 0-0 "${icon}" ; then
echo "ERROR: Cannot download ${icon} link. Reset icon."
icon=""
fi
elif [[ "$(echo ${icon} | grep -iE "^\/.*")" != "" ]]; then
#echo "icon looks to be a file"
if [[ ! -a "${icon}" ]]; then
echo "ERROR: Cannot find icon file ${icon}. Reset icon."
icon=""
fi
else
echo "ERROR: Cannot figure out icon ${icon}. Reset icon."
icon=""
fi
#echo "icon after first check: $icon"
# If no icon defined we are trying to search for installed app icon
if [[ "$icon" == "" ]]; then
appPath=$(mdfind "kind:application AND name:$itemName" | head -1 || true)
appIcon=$(defaults read "${appPath}/Contents/Info.plist" CFBundleIconFile || true)
if [[ "$(echo "$appIcon" | grep -io ".icns")" == "" ]]; then
appIcon="${appIcon}.icns"
fi
icon="${appPath}/Contents/Resources/${appIcon}"
#echo "Icon before file check: ${icon}"
if [ ! -f "${icon}" ]; then
# Using LOGO variable to show logo in swiftDialog
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
icon="${LOGO_PATH}"
fi
fi
echo "LOGO: $LOGO"
echo "icon: ${icon}"
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1
fi
# Install software using Installomator with valuesfromarguments
cmdOutput="$(${destFile} valuesfromarguments LOGO=$LOGO \
name=\"${name}\" \
type=${type} \
packageID=${packageID} \
downloadURL=\"$downloadURL\" \
appNewVersion=${appNewVersion} \
versionKey=${versionKey} \
expectedTeamID=${expectedTeamID} \
${installomatorOptions} ${installomatorNotify} || true)"
checkCmdOutput "${cmdOutput}"
# Mark: dockutil stuff
if [[ $addToDock -eq 1 ]]; then
dialogUpdate "progresstext: Adding to Dock"
if [[ ! -d $dockutil ]]; then
echo "Cannot find dockutil at $dockutil, trying installation"
# Install using Installlomator
cmdOutput="$(${destFile} dockutil LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
echo "Adding to Dock"
$dockutil --add "${appPath}" "${userHome}/Library/Preferences/com.apple.dock.plist" || true
sleep 1
else
echo "Not adding to Dock."
fi
# Mark: Ending
if [[ $installomatorVersion -ge 10 && $(sw_vers -buildVersion | cut -c1-2) -ge 20 ]]; then
# close and quit dialog
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
# pause a moment
sleep 0.5
dialogUpdate "quit:"
# let everything catch up
sleep 0.5
# just to be safe
#killall "Dialog" 2>/dev/null || true
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,275 @@
#!/bin/sh
# Installation using Installomator with Dialog showing progress (and posibility of adding to the Dock)
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="" # enter the software to install
# Examples: brave, duckduckgo, firefoxpkg, googlechromepkg, microsoftedge, opera
# Dialog icon
icon=""
# icon should be a file system path or an URL to an online PNG.
# In Mosyle an URL can be found by copy picture address from a Custom Command icon.
# dockutil variables
addToDock="1" # with dockutil after installation (0 if not)
appPath="/Applications/Firefox.app"
# Other variables
dialog_command_file="/var/tmp/dialog.log"
dialogApp="/Library/Application Support/Dialog/Dialog.app"
dockutil="/usr/local/bin/dockutil"
installomatorOptions="BLOCKING_PROCESS_ACTION=tell_user_then_quit DIALOG_CMD_FILE=${dialog_command_file}" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 10.0.3 : A bit more logging on succes, and change in ending Dialog part.
# v. 10.0.2 : Improved icon checks and failovers
# v. 10.0.1 : Improved appIcon handling. Can add the app to Dock using dockutil
# v. 10.0 : Integration with Dialog and Installomator v. 10
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
checkCmdOutput () {
local checkOutput="$1"
exitStatus="$( echo "${checkOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${checkOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$checkOutput"
#errorOutput="$( echo "${checkOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
#echo "$checkOutput"
}
# Check the currently logged in user
currentUser=$(stat -f "%Su" /dev/console)
if [ -z "$currentUser" ] || [ "$currentUser" = "loginwindow" ] || [ "$currentUser" = "_mbsetupuser" ] || [ "$currentUser" = "root" ]; then
echo "ERROR. Logged in user is $currentUser! Cannot proceed."
exit 97
fi
# Get the current user's UID for dockutil
uid=$(id -u "$currentUser")
# Find the home folder of the user
userHome="$(dscl . -read /users/${currentUser} NFSHomeDirectory | awk '{print $2}')"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Mark: Installation begins
installomatorVersion="$(${destFile} version | cut -d "." -f1 || true)"
if [[ $installomatorVersion -lt 10 ]] || [[ $(sw_vers -buildVersion | cut -c1-2) -lt 20 ]]; then
echo "Skipping swiftDialog UI, using notifications."
#echo "Installomator should be at least version 10 to support swiftDialog. Installed version $installomatorVersion."
#echo "And macOS 11 Big Sur (build 20A) is required for swiftDialog. Installed build $(sw_vers -buildVersion)."
installomatorNotify="NOTIFY=all"
else
installomatorNotify="NOTIFY=silent"
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
# Install using Installlomator
cmdOutput="$(${destFile} dialog LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
# Configure and display swiftDialog
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
message="Installing ${itemName}"
else
message="Installing ${item}"
fi
echo "$item $itemName"
#Check icon (expecting beginning with “http” to be web-link and “/” to be disk file)
#echo "icon before check: $icon"
if [[ "$(echo ${icon} | grep -iE "^(http|ftp).*")" != "" ]]; then
#echo "icon looks to be web-link"
if ! curl -sfL --output /dev/null -r 0-0 "${icon}" ; then
echo "ERROR: Cannot download ${icon} link. Reset icon."
icon=""
fi
elif [[ "$(echo ${icon} | grep -iE "^\/.*")" != "" ]]; then
#echo "icon looks to be a file"
if [[ ! -a "${icon}" ]]; then
echo "ERROR: Cannot find icon file ${icon}. Reset icon."
icon=""
fi
else
echo "ERROR: Cannot figure out icon ${icon}. Reset icon."
icon=""
fi
#echo "icon after first check: $icon"
# If no icon defined we are trying to search for installed app icon
if [[ "$icon" == "" ]]; then
appPath=$(mdfind "kind:application AND name:$itemName" | head -1 || true)
appIcon=$(defaults read "${appPath}/Contents/Info.plist" CFBundleIconFile || true)
if [[ "$(echo "$appIcon" | grep -io ".icns")" == "" ]]; then
appIcon="${appIcon}.icns"
fi
icon="${appPath}/Contents/Resources/${appIcon}"
#echo "Icon before file check: ${icon}"
if [ ! -f "${icon}" ]; then
# Using LOGO variable to show logo in swiftDialog
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
icon="${LOGO_PATH}"
fi
fi
echo "LOGO: $LOGO"
echo "icon: ${icon}"
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1
fi
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} ${installomatorNotify} || true)"
checkCmdOutput "${cmdOutput}"
# Mark: dockutil stuff
if [[ $addToDock -eq 1 ]]; then
dialogUpdate "progresstext: Adding to Dock"
if [[ ! -d $dockutil ]]; then
echo "Cannot find dockutil at $dockutil, trying installation"
# Install using Installlomator
cmdOutput="$(${destFile} dockutil LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
echo "Adding to Dock"
$dockutil --add "${appPath}" "${userHome}/Library/Preferences/com.apple.dock.plist" || true
sleep 1
else
echo "Not adding to Dock."
fi
# Mark: Ending
if [[ $installomatorVersion -ge 10 && $(sw_vers -buildVersion | cut -c1-2) -ge 20 ]]; then
# close and quit dialog
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
# pause a moment
sleep 0.5
dialogUpdate "quit:"
# let everything catch up
sleep 0.5
# just to be safe
#killall "Dialog" 2>/dev/null || true
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,278 @@
#!/bin/sh
# Installation using Installomator with Dialog showing progress (and posibility of adding to the Dock)
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="microsoftoffice365" # enter the software to install
# Examples: microsoftofficebusinesspro, microsoftoffice365
# Dialog icon
icon=""
# icon should be a file system path or an URL to an online PNG.
# In Mosyle an URL can be found by copy picture address from a Custom Command icon.
# dockutil variables
addToDock="1" # with dockutil after installation (0 if not)
appPaths=("/Applications/Microsoft Outlook.app" "/Applications/Microsoft Word.app" "/Applications/Microsoft Excel.app" "/Applications/Microsoft PowerPoint.app" "/Applications/Microsoft OneNote.app")
# Other variables
dialog_command_file="/var/tmp/dialog.log"
dialogApp="/Library/Application Support/Dialog/Dialog.app"
dockutil="/usr/local/bin/dockutil"
installomatorOptions="BLOCKING_PROCESS_ACTION=prompt_user DIALOG_CMD_FILE=${dialog_command_file}" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 10.0.3 : A bit more logging on succes, and change in ending Dialog part.
# v. 10.0.2 : Improved icon checks and failovers
# v. 10.0.1 : Improved appIcon handling. Can add the app to Dock using dockutil
# v. 10.0 : Integration with Dialog and Installomator v. 10
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
checkCmdOutput () {
local checkOutput="$1"
exitStatus="$( echo "${checkOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${checkOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$checkOutput"
#errorOutput="$( echo "${checkOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
#echo "$checkOutput"
}
# Check the currently logged in user
currentUser=$(stat -f "%Su" /dev/console)
if [ -z "$currentUser" ] || [ "$currentUser" = "loginwindow" ] || [ "$currentUser" = "_mbsetupuser" ] || [ "$currentUser" = "root" ]; then
echo "ERROR. Logged in user is $currentUser! Cannot proceed."
exit 97
fi
# Get the current user's UID for dockutil
uid=$(id -u "$currentUser")
# Find the home folder of the user
userHome="$(dscl . -read /users/${currentUser} NFSHomeDirectory | awk '{print $2}')"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Mark: Installation begins
installomatorVersion="$(${destFile} version | cut -d "." -f1 || true)"
if [[ $installomatorVersion -lt 10 ]] || [[ $(sw_vers -buildVersion | cut -c1-2) -lt 20 ]]; then
echo "Skipping swiftDialog UI, using notifications."
#echo "Installomator should be at least version 10 to support swiftDialog. Installed version $installomatorVersion."
#echo "And macOS 11 Big Sur (build 20A) is required for swiftDialog. Installed build $(sw_vers -buildVersion)."
installomatorNotify="NOTIFY=all"
else
installomatorNotify="NOTIFY=silent"
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
# Install using Installlomator
cmdOutput="$(${destFile} dialog LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
# Configure and display swiftDialog
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
message="Installing ${itemName}"
else
message="Installing ${item}"
fi
echo "$item $itemName"
#Check icon (expecting beginning with “http” to be web-link and “/” to be disk file)
#echo "icon before check: $icon"
if [[ "$(echo ${icon} | grep -iE "^(http|ftp).*")" != "" ]]; then
#echo "icon looks to be web-link"
if ! curl -sfL --output /dev/null -r 0-0 "${icon}" ; then
echo "ERROR: Cannot download ${icon} link. Reset icon."
icon=""
fi
elif [[ "$(echo ${icon} | grep -iE "^\/.*")" != "" ]]; then
#echo "icon looks to be a file"
if [[ ! -a "${icon}" ]]; then
echo "ERROR: Cannot find icon file ${icon}. Reset icon."
icon=""
fi
else
echo "ERROR: Cannot figure out icon ${icon}. Reset icon."
icon=""
fi
#echo "icon after first check: $icon"
# If no icon defined we are trying to search for installed app icon
if [[ "$icon" == "" ]]; then
appPath=$(mdfind "kind:application AND name:$itemName" | head -1 || true)
appIcon=$(defaults read "${appPath}/Contents/Info.plist" CFBundleIconFile || true)
if [[ "$(echo "$appIcon" | grep -io ".icns")" == "" ]]; then
appIcon="${appIcon}.icns"
fi
icon="${appPath}/Contents/Resources/${appIcon}"
#echo "Icon before file check: ${icon}"
if [ ! -f "${icon}" ]; then
# Using LOGO variable to show logo in swiftDialog
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
icon="${LOGO_PATH}"
fi
fi
echo "LOGO: $LOGO"
echo "icon: ${icon}"
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1
fi
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} ${installomatorNotify} || true)"
checkCmdOutput "${cmdOutput}"
# Mark: dockutil stuff
if [[ $addToDock -eq 1 ]]; then
dialogUpdate "progresstext: Adding to Dock"
if [[ ! -d $dockutil ]]; then
echo "Cannot find dockutil at $dockutil, trying installation"
# Install using Installlomator
cmdOutput="$(${destFile} dockutil LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
echo "Adding to Dock"
for appPath in "${appPaths[@]}"; do
$dockutil --add "${appPath}" "${userHome}/Library/Preferences/com.apple.dock.plist" --no-restart || true
done
$dockutil --add "/AppThatDoesNotExistAnywhereOnDiskButMakingDockutilRestartTheDock" "${userHome}/Library/Preferences/com.apple.dock.plist" || true
sleep 1
else
echo "Not adding to Dock."
fi
# Mark: Ending
iif [[ $installomatorVersion -ge 10 && $(sw_vers -buildVersion | cut -c1-2) -ge 20 ]]; then
# close and quit dialog
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
# pause a moment
sleep 0.5
dialogUpdate "quit:"
# let everything catch up
sleep 0.5
# just to be safe
#killall "Dialog" 2>/dev/null || true
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,272 @@
#!/bin/sh
# Installation using Installomator with Dialog showing progress (and posibility of adding to the Dock)
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="" # enter the software to install
# Examples: adobecreativeclouddesktop, canva, cyberduck, handbrake, inkscape, textmate, vlc
# Dialog icon
icon=""
# icon should be a file system path or an URL to an online PNG, so beginning with either “/” or “http”.
# In Mosyle an URL can be found by copy picture address from a Custom Command icon.
# dockutil variables
addToDock="0" # with dockutil after installation (0 if not)
appPath="/Applications/Cyberduck.app"
# Other variables
dialog_command_file="/var/tmp/dialog.log"
dialogApp="/Library/Application Support/Dialog/Dialog.app"
dockutil="/usr/local/bin/dockutil"
installomatorOptions="BLOCKING_PROCESS_ACTION=prompt_user DIALOG_CMD_FILE=${dialog_command_file}" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 10.0.3 : A bit more logging on succes, and change in ending Dialog part.
# v. 10.0.2 : Improved icon checks and failovers
# v. 10.0.1 : Improved appIcon handling. Can add the app to Dock using dockutil
# v. 10.0 : Integration with Dialog and Installomator v. 10
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
checkCmdOutput () {
local checkOutput="$1"
exitStatus="$( echo "${checkOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${checkOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$checkOutput"
#errorOutput="$( echo "${checkOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
#echo "$checkOutput"
}
# Check the currently logged in user
currentUser=$(stat -f "%Su" /dev/console)
if [ -z "$currentUser" ] || [ "$currentUser" = "loginwindow" ] || [ "$currentUser" = "_mbsetupuser" ] || [ "$currentUser" = "root" ]; then
echo "ERROR. Logged in user is $currentUser! Cannot proceed."
exit 97
fi
# Get the current user's UID for dockutil
uid=$(id -u "$currentUser")
# Find the home folder of the user
userHome="$(dscl . -read /users/${currentUser} NFSHomeDirectory | awk '{print $2}')"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Mark: Installation begins
installomatorVersion="$(${destFile} version | cut -d "." -f1 || true)"
if [[ $installomatorVersion -lt 10 ]] || [[ $(sw_vers -buildVersion | cut -c1-2) -lt 20 ]]; then
echo "Skipping swiftDialog UI, using notifications."
#echo "Installomator should be at least version 10 to support swiftDialog. Installed version $installomatorVersion."
#echo "And macOS 11 Big Sur (build 20A) is required for swiftDialog. Installed build $(sw_vers -buildVersion)."
installomatorNotify="NOTIFY=all"
else
installomatorNotify="NOTIFY=silent"
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
# Install using Installlomator
cmdOutput="$(${destFile} dialog LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
# Configure and display swiftDialog
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
message="Installing ${itemName}"
else
message="Installing ${item}"
fi
echo "$item $itemName"
#Check icon (expecting beginning with “http” to be web-link and “/” to be disk file)
#echo "icon before check: $icon"
if [[ "$(echo ${icon} | grep -iE "^(http|ftp).*")" != "" ]]; then
#echo "icon looks to be web-link"
if ! curl -sfL --output /dev/null -r 0-0 "${icon}" ; then
echo "ERROR: Cannot download ${icon} link. Reset icon."
icon=""
fi
elif [[ "$(echo ${icon} | grep -iE "^\/.*")" != "" ]]; then
#echo "icon looks to be a file"
if [[ ! -a "${icon}" ]]; then
echo "ERROR: Cannot find icon file ${icon}. Reset icon."
icon=""
fi
else
echo "ERROR: Cannot figure out icon ${icon}. Reset icon."
icon=""
fi
#echo "icon after first check: $icon"
# If no icon defined we are trying to search for installed app icon
if [[ "$icon" == "" ]]; then
appPath=$(mdfind "kind:application AND name:$itemName" | head -1 || true)
appIcon=$(defaults read "${appPath}/Contents/Info.plist" CFBundleIconFile || true)
if [[ "$(echo "$appIcon" | grep -io ".icns")" == "" ]]; then
appIcon="${appIcon}.icns"
fi
icon="${appPath}/Contents/Resources/${appIcon}"
#echo "Icon before file check: ${icon}"
if [ ! -f "${icon}" ]; then
# Using LOGO variable to show logo in swiftDialog
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
icon="${LOGO_PATH}"
fi
fi
echo "LOGO: $LOGO"
echo "icon: ${icon}"
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1
fi
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} ${installomatorNotify} || true)"
checkCmdOutput "${cmdOutput}"
# Mark: dockutil stuff
if [[ $addToDock -eq 1 ]]; then
dialogUpdate "progresstext: Adding to Dock"
if [[ ! -d $dockutil ]]; then
echo "Cannot find dockutil at $dockutil, trying installation"
# Install using Installlomator
cmdOutput="$(${destFile} dockutil LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
echo "Adding to Dock"
$dockutil --add "${appPath}" "${userHome}/Library/Preferences/com.apple.dock.plist" || true
sleep 1
else
echo "Not adding to Dock."
fi
# Mark: Ending
if [[ $installomatorVersion -ge 10 && $(sw_vers -buildVersion | cut -c1-2) -ge 20 ]]; then
# close and quit dialog
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
# pause a moment
sleep 0.5
dialogUpdate "quit:"
# let everything catch up
sleep 0.5
# just to be safe
#killall "Dialog" 2>/dev/null || true
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,275 @@
#!/bin/sh
# Installation using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="" # enter the software to install
# Examples: applenyfonts, applesfarabic, applesfcompact, applesfmono, applesfpro, applesfsymbols, desktoppr, dialog, dockutil, knockknock, lulu, nomad, nudge, shield, supportapp, wordservice, xcreds, xink
# Dialog icon
icon=""
# icon should be a file system path or an URL to an online PNG.
# In Mosyle an URL can be found by copy picture address from a Custom Command icon.
# dockutil variables
addToDock="1" # with dockutil after installation (0 if not)
appPath="/Applications/Xink.app"
# Other variables
dialog_command_file="/var/tmp/dialog.log"
dialogApp="/Library/Application Support/Dialog/Dialog.app"
dockutil="/usr/local/bin/dockutil"
installomatorOptions="BLOCKING_PROCESS_ACTION=ignore DIALOG_CMD_FILE=${dialog_command_file}" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 10.0.3 : A bit more logging on succes, and change in ending Dialog part.
# v. 10.0.2 : Improved icon checks and failovers
# v. 10.0.1 : Can add the app to Dock using dockutil
# v. 10.0 : Integration with Dialog and Installomator v. 10
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
checkCmdOutput () {
local checkOutput="$1"
exitStatus="$( echo "${checkOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${checkOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$checkOutput"
#errorOutput="$( echo "${checkOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
#echo "$checkOutput"
}
# Check the currently logged in user
currentUser=$(stat -f "%Su" /dev/console)
if [ -z "$currentUser" ] || [ "$currentUser" = "loginwindow" ] || [ "$currentUser" = "_mbsetupuser" ] || [ "$currentUser" = "root" ]; then
echo "ERROR. Logged in user is $currentUser! Cannot proceed."
exit 97
fi
# Get the current user's UID for dockutil
uid=$(id -u "$currentUser")
# Find the home folder of the user
userHome="$(dscl . -read /users/${currentUser} NFSHomeDirectory | awk '{print $2}')"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Mark: Installation begins
installomatorVersion="$(${destFile} version | cut -d "." -f1 || true)"
if [[ $installomatorVersion -lt 10 ]] || [[ $(sw_vers -buildVersion | cut -c1-2) -lt 20 ]]; then
echo "Skipping swiftDialog UI, using notifications."
#echo "Installomator should be at least version 10 to support swiftDialog. Installed version $installomatorVersion."
#echo "And macOS 11 Big Sur (build 20A) is required for swiftDialog. Installed build $(sw_vers -buildVersion)."
installomatorNotify="NOTIFY=all"
else
installomatorNotify="NOTIFY=silent"
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
# Install using Installlomator
cmdOutput="$(${destFile} dialog LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
# Configure and display swiftDialog
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
message="Installing ${itemName}"
else
message="Installing ${item}"
fi
echo "$item $itemName"
#Check icon (expecting beginning with “http” to be web-link and “/” to be disk file)
#echo "icon before check: $icon"
if [[ "$(echo ${icon} | grep -iE "^(http|ftp).*")" != "" ]]; then
#echo "icon looks to be web-link"
if ! curl -sfL --output /dev/null -r 0-0 "${icon}" ; then
echo "ERROR: Cannot download ${icon} link. Reset icon."
icon=""
fi
elif [[ "$(echo ${icon} | grep -iE "^\/.*")" != "" ]]; then
#echo "icon looks to be a file"
if [[ ! -a "${icon}" ]]; then
echo "ERROR: Cannot find icon file ${icon}. Reset icon."
icon=""
fi
else
echo "ERROR: Cannot figure out icon ${icon}. Reset icon."
icon=""
fi
#echo "icon after first check: $icon"
# If no icon defined we are trying to search for installed app icon
if [[ "$icon" == "" ]]; then
appPath=$(mdfind "kind:application AND name:$itemName" | head -1 || true)
appIcon=$(defaults read "${appPath}/Contents/Info.plist" CFBundleIconFile || true)
if [[ "$(echo "$appIcon" | grep -io ".icns")" == "" ]]; then
appIcon="${appIcon}.icns"
fi
icon="${appPath}/Contents/Resources/${appIcon}"
#echo "Icon before file check: ${icon}"
if [ ! -f "${icon}" ]; then
# Using LOGO variable to show logo in swiftDialog
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
icon="${LOGO_PATH}"
fi
fi
echo "LOGO: $LOGO"
echo "icon: ${icon}"
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1
fi
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} ${installomatorNotify} || true)"
checkCmdOutput "${cmdOutput}"
# Mark: dockutil stuff
if [[ $addToDock -eq 1 ]]; then
dialogUpdate "progresstext: Adding to Dock"
if [[ ! -d $dockutil ]]; then
echo "Cannot find dockutil at $dockutil, trying installation"
# Install using Installlomator
cmdOutput="$(${destFile} dockutil LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore LOGGING=REQ NOTIFY=silent || true)"
checkCmdOutput "${cmdOutput}"
fi
echo "Adding to Dock"
$dockutil --add "${appPath}" "${userHome}/Library/Preferences/com.apple.dock.plist" || true
sleep 1
else
echo "Not adding to Dock."
fi
# Mark: Ending
if [[ $installomatorVersion -ge 10 && $(sw_vers -buildVersion | cut -c1-2) -ge 20 ]]; then
# close and quit dialog
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
# pause a moment
sleep 0.5
dialogUpdate "quit:"
# let everything catch up
sleep 0.5
# just to be safe
#killall "Dialog" 2>/dev/null || true
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

103
MDM/App-install/App VFA.sh Executable file
View File

@@ -0,0 +1,103 @@
#!/bin/sh
# Installation using Installomator
# Installation of software using valuesfromarguments to install a custom software using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
# Have the label been submittet in a PR for Installomator?
# What version of Installomator is it expected to be included in?
# Version 10
item="" # enter the software to install (if it has a label in future version of Installomator)
# Variables for label
name="ClickShare" # Spaces in the name will not work
type="appInDmgInZip"
packageID=""
downloadURL="https://www.barco.com$( curl -fs "https://www.barco.com/en/clickshare/app" | grep -A6 -i "macos" | grep -i "FileNumber" | tr '"' "\n" | grep -i "FileNumber" )"
appNewVersion="$(eval "$( echo $downloadURL | sed -E 's/.*(MajorVersion.*BuildVersion=[0-9]*).*/\1/' | sed 's/&amp//g' )" ; ((MajorVersion++)) ; ((MajorVersion--)); ((MinorVersion++)) ; ((MinorVersion--)); ((PatchVersion++)) ; ((PatchVersion--)); ((BuildVersion++)) ; ((BuildVersion--)); echo "${MajorVersion}.${MinorVersion}.${PatchVersion}-b${BuildVersion}")"
versionKey=""
expectedTeamID="P6CDJZR997"
installomatorOptions="BLOCKING_PROCESS_ACTION=prompt_user LOGGING=INFO NOTIFY=all" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "what" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $what"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator with valuesfromarguments
cmdOutput="$(${destFile} valuesfromarguments LOGO=$LOGO \
name=\"${name}\" \
type=${type} \
packageID=${packageID} \
downloadURL=\"$downloadURL\" \
appNewVersion=${appNewVersion} \
versionKey=${versionKey} \
expectedTeamID=${expectedTeamID} \
blockingProcesses=\"NONE\" \
${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${what} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${what}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,80 @@
#!/bin/sh
# Installation using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="firefoxpkg" # enter the software to install
# Examples: brave, duckduckgo, firefoxpkg, googlechromepkg, microsoftedge, opera
installomatorOptions="BLOCKING_PROCESS_ACTION=tell_user_then_quit" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,80 @@
#!/bin/sh
# Installation using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="" # enter the software to install
# Examples: brave, duckduckgo, firefoxpkg, googlechromepkg, microsoftedge, opera
installomatorOptions="BLOCKING_PROCESS_ACTION=tell_user_then_quit NOTIFY=all" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "what" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $what"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${what} LOGO=$LOGO ${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${what} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${what}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,80 @@
#!/bin/sh
# Installation using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="" # enter the software to install
# Examples: adobecreativeclouddesktop, textmate, vlc
installomatorOptions="BLOCKING_PROCESS_ACTION=tell_user" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,81 @@
#!/bin/sh
# Installation using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="" # enter the software to install
# Examples: adobecreativeclouddesktop, canva, cyberduck, handbrake, inkscape, textmate, vlc
installomatorOptions="BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=all" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,80 @@
#!/bin/sh
# Installation using Installomator
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="dockutil" # enter the software to install
# Examples: applenyfonts, applesfarabic, applesfcompact, applesfmono, applesfpro, applesfsymbols, desktoppr, dialog, dockutil, knockknock, lulu, nomad, nudge, shield, supportapp, wordservice, xcreds, xink
installomatorOptions="BLOCKING_PROCESS_ACTION=ignore NOTIFY=silent" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -1,193 +0,0 @@
#!/bin/zsh
# Installation using Installomator
whatList="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 "whatList" above with labels separated by space " ".
# Script will loop through these labels.
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem"
######################################################################
# Parameters for reinstall/initial install (owner root:wheel):
# "BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes SYSTEMOWNER=1"
# Parameters for Self Service installed app:
# "BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=all"
# Parameters for security important apps, like browsers (run automaticaly every day):
# "BLOCKING_PROCESS_ACTION=tell_user_then_kill"
# Update of service apps (run automatically):
# "BLOCKING_PROCESS_ACTION=quit_kill NOTIFY=silent"
parameters="BLOCKING_PROCESS_ACTION=tell_user NOTIFY=all"
######################################################################
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Count errors
errorCount=0
for what in $whatList; do
#echo $what
# Install software using Installomator
cmdOutput="$(${destFile} ${what} LOGO=$LOGO $parameters LOGGING=WARN || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -ne 0 ]] ; then
echo -e "Error installing ${what}. Exit code ${exitStatus}"
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
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.
# Shouldnt 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 its 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

View File

@@ -0,0 +1,93 @@
#!/bin/sh
# Update with Installomator if app exist
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="microsoftedge" # enter the software to install
# Examples: brave, duckduckgo, firefoxpkg, googlechromepkg, microsoftedge, opera
appPath="/Applications/Microsoft Edge.app"
# Examples: Microsoft Edge.app, Brave Browser.app, DuckDuckGo.app, Google Chrome.app, Firefox.app, Opera.app
installomatorOptions="BLOCKING_PROCESS_ACTION=tell_user_then_quit" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
# Check if app is installed
# We only want this to run if it's already installed
if [ ! -e "${appPath}" ]; then
echo "App not found here:"
echo "${appPath}"
echo "Exiting."
exit 98
fi
echo "${appPath} Found!"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,93 @@
#!/bin/sh
# Update with Installomator if app exist
LOGO="" # "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
item="" # enter the software to install
# Examples: cyberduck, handbrake, textmate, vlc
appPath="/Applications/Cyberduck.app"
# Examples: Cyberduck.app, Handbrake.app, Textmate.app, VLC.app
installomatorOptions="BLOCKING_PROCESS_ACTION=prompt_user" # Separated by space
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
# To be used as a script sent out from a MDM.
# Fill the variable "item" above with a label.
# Script will run this label through Installomator.
######################################################################
# v. 9.2.2 : A bit more logging on succes.
# v. 9.2.1 : Better logging handling and installomatorOptions fix.
######################################################################
# Mark: Script
# PATH declaration
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
echo "$(date +%F\ %T) [LOG-BEGIN] $item"
# Check if app is installed
# We only want this to run if it's already installed
if [ ! -e "${appPath}" ]; then
echo "App not found here:"
echo "${appPath}"
echo "Exiting."
exit 98
fi
echo "${appPath} Found!"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo "${item} succesfully installed."
selectedOutput="$( echo "${cmdOutput}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)" || true )"
echo "$selectedOutput"
else
echo "ERROR installing ${item}. Exit code ${exitStatus}"
echo "$cmdOutput"
#errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
#echo "$errorOutput"
fi
echo "[$(DATE)][LOG-END]"
caffexit $exitStatus

View File

@@ -0,0 +1,19 @@
#!/bin/sh
# A small script to grab Installomator log from a client Mac.
# Can be sent to the client so the result can be seen in MDM
# Only uncomment the line below for the things you want to see.
logFile="/var/log/Installomator.log"
# Show latest 100 lines of the log
tail -100 "${logFile}"
# Show latest 500 lines but filter to REQ|ERROR|WARN lines
# Great overview of the log
#tail -500 "${logFile}" | grep --binary-files=text -E ": (REQ|ERROR|WARN)"
# Show only one label
# Great to see everything for a label that might fail or not working as expected
label="valuesfromarguments"
#cat "${logFile}" | grep --binary-files=text ": ${label}"

View File

@@ -0,0 +1,361 @@
#!/bin/sh
# Installomator 1st installation with DEPNotify window (auto installation at enrollment)
instance="" # Name of used instance
LOGO="" # "appstore", "jamf", "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
items=(dialog dockutil microsoftautoupdate supportapp applenyfonts applesfpro applesfmono applesfcompact xink zohoworkdrivetruesync textmate 1password7 wwdc theunarchiver keka microsoftedge microsoftteams microsoftonedrive microsoftoffice365)
# Remember: dialog dockutil
installomatorOptions="NOTIFY=silent BLOCKING_PROCESS_ACTION=ignore INSTALL=force IGNORE_APP_STORE_APPS=yes LOGGING=REQ"
# DEPNotify display settings, change as desired
title="Installing Apps and other software"
message="Please wait while we download and install the needed software."
endMessage="Installation complete! Please reboot to activate FileVault."
errorMessage="A problem was encountered setting up this Mac. Please contact IT."
######################################################################
# Installomator 1st DEPNotify
#
# Installation using Installomator showing progress with DEPNotify
# Great stand-alone solution if installs are only done using Installomator.
# No customization below…
######################################################################
# This script can be used to install software using Installomator.
# Script will start DEPNotify to display a progress bar.
# Progress bar moves between installations
######################################################################
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
#
# This script made by Søren Theilgaard
# https://github.com/Theile
# Twitter and MacAdmins Slack: @theilgaard
#
# Some functions and code from Installomator:
# https://github.com/Installomator/Installomator
#
######################################################################
scriptVersion="9.6"
# v. 9.6 : 2022-11-15 : GitHub API call is first, only try alternative if that fails.
# v. 9.5 : 2022-09-21 : change of GitHub download
# v. 9.4 : 2022-09-14 : downloadURL can fall back on GitHub API
# v. 9.3 : 2022-08-29 : installomatorOptions in quotes and ignore blocking processes. Improved installation with looping if it fails, so it can try again. Improved GitHub handling. ws1 support.
# v. 9.2.2 : 2022-06-17 : installomatorOptions introduced. Check 1.1.1.1 for internet connection.
# v. 9.2.1 : 2022-05-30 : Some changes to logging
# v. 9.2 : 2022-05-19 : Built in installer for Installlomator, and display dialog if error happens. Now universal script for all supported MDMs based on LOGO variable.
# v. 9.1 : 2022-04-13 : Using INSTALL=force in Label only, so Microsoft labels will not start updating
# v. 9.0.1 : 2022-02-21 : LOGO=addigy, few more "true" lines, and errorOutput on error
# v. 9.0.0 : 2022-02-14 : Updated for Inst. 9.0, Logging improved with printlog
######################################################################
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Check before running
case $LOGO in
addigy|microsoft)
conditionFile="/var/db/.Installomator1stDone"
# Addigy and Microsoft Endpoint Manager (Intune) need a check for a touched file
if [ -e "$conditionFile" ]; then
echo "$LOGO setup detected"
echo "$conditionFile exists, so we exit."
exit 0
else
echo "$conditionFile not found, so we continue…"
fi
;;
esac
# Mark: Constants, logging and caffeinate
log_message="$instance: Installomator 1st with DEPNotify, v$scriptVersion"
label="1st-v$scriptVersion"
log_location="/private/var/log/Installomator.log"
printlog(){
timestamp=$(date +%F\ %T)
if [[ "$(whoami)" == "root" ]]; then
echo "$timestamp :: $label : $1" | tee -a $log_location
else
echo "$timestamp :: $label : $1"
fi
}
printlog "[LOG-BEGIN] ${log_message}"
# Internet check
if [[ "$(nc -z -v -G 10 1.1.1.1 53 2>&1 | grep -io "succeeded")" != "succeeded" ]]; then
printlog "ERROR. No internet connection, we cannot continue."
exit 90
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid" || true
pkill caffeinate || true
printlog "[LOG-END] Status $1"
exit $1
}
# Command-file to DEPNotify
DEPNOTIFY_LOG="/var/tmp/depnotify.log"
# Counters
errorCount=0
countLabels=${#items[@]}
printlog "Total installations: $countLabels"
# Using LOGO variable to specify MDM and shown logo
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
printlog "LOGO: $LOGO - LOGO_PATH: $LOGO_PATH"
# Mark: Functions
printlog "depnotify_command function"
echo "" > $DEPNOTIFY_LOG || true
function depnotify_command(){
printlog "DEPNotify-command: $1"
echo "$1" >> $DEPNOTIFY_LOG || true
}
printlog "startDEPNotify function"
function startDEPNotify() {
currentUser="$(stat -f "%Su" /dev/console)"
currentUserID=$(id -u "$currentUser")
launchctl asuser $currentUserID open -a "/Applications/Utilities/DEPNotify.app/Contents/MacOS/DEPNotify" --args -path "$DEPNOTIFY_LOG" || true # --args -fullScreen
sleep 5
depnotify_command "Command: KillCommandFile:"
depnotify_command "Command: MainTitle: $title"
depnotify_command "Command: Image: $LOGO_PATH"
depnotify_command "Command: MainText: $message"
depnotify_command "Command: Determinate: $countLabels"
}
# Notify the user using AppleScript
printlog "displayDialog function"
function displayDialog(){
currentUser="$(stat -f "%Su" /dev/console)"
currentUserID=$(id -u "$currentUser")
if [[ "$currentUser" != "" ]]; then
launchctl asuser $currentUserID sudo -u $currentUser osascript -e "button returned of (display dialog \"$message\" buttons {\"OK\"} default button \"OK\" with icon POSIX file \"$LOGO_PATH\")" || true
fi
}
# Mark: Code
name="Installomator"
printlog "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg
gitusername="Installomator"
gitreponame="Installomator"
#printlog "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#printlog "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#printlog "$appNewVersion"
expectedTeamID="JME5BW3F3R"
destFile="/usr/local/Installomator/Installomator.sh"
currentInstalledVersion="$(${destFile} version 2>/dev/null || true)"
printlog "${destFile} version: $currentInstalledVersion"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
printlog "$name not found or version not latest."
printlog "${destFile}"
printlog "Installing version ${appNewVersion} ..."
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
printlog "Created working directory '$tmpDir'"
# Download the installer package
printlog "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
printlog "error downloading $downloadURL, with status $curlDownloadStatus"
printlog "${curlDownload}"
exitCode=1
else
printlog "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
printlog "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
printlog "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
printlog "ERROR. $name package installation failed."
printlog "${pkgInstall}"
exitCode=2
else
printlog "Installing $name package succes."
exitCode=0
fi
else
printlog "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
printlog "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
printlog "Sleep a bit before trying download and install again. $installationCount time(s)."
printlog "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
printlog "Download and install of $name succes."
fi
done
# Remove the temporary working directory
printlog "Deleting working directory '$tmpDir' and its contents."
printlog "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
printlog "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
printlog "$name version $appNewVersion installed!"
fi
else
printlog "$name version $appNewVersion already found. Perfect!"
fi
# Installing DEPNotify
cmdOutput="$( ${destFile} depnotify LOGO=$LOGO NOTIFY=silent BLOCKING_PROCESS_ACTION=ignore LOGGING=WARN || true )"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
printlog "DEPNotify install result: $exitStatus"
itemName=""
errorLabels=""
((countLabels++))
((countLabels--))
printlog "$countLabels labels to install"
startDEPNotify
for item in "${items[@]}"; do
# Check if DEPNotify is running and try open it if not
if ! pgrep -xq "DEPNotify"; then
startDEPNotify
fi
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
depnotify_command "Status: $itemName installing…"
else
depnotify_command "Status: $item installing…"
fi
printlog "$item $itemName"
cmdOutput="$( ${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true )"
#cmdOutput="2022-05-19 13:20:45 : REQ : installomator : ################## End Installomator, exit code 0"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
printlog "${item} succesfully installed."
warnOutput="$( echo "${cmdOutput}" | grep --binary-files=text "WARN" || true )"
printlog "$warnOutput"
else
printlog "Error installing ${item}. Exit code ${exitStatus}"
#printlog "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
printlog "$errorOutput"
((errorCount++))
errorLabels="$errorLabels ${item}"
fi
((countLabels--))
itemName=""
done
# Mark: Finishing
# Prevent re-run of script if conditionFile is set
if [[ ! -z "$conditionFile" ]]; then
printlog "Touching condition file so script will not run again"
touch "$conditionFile" || true
printlog "$(ls -al "$conditionFile" || true)"
fi
# Show error to user if any
printlog "Errors: $errorCount"
if [[ $errorCount -ne 0 ]]; then
errorMessage="${errorMessage} Total errors: $errorCount"
message="$errorMessage"
displayDialog &
endMessage="$message"
printlog "errorLabels: $errorLabels"
fi
depnotify_command "Command: MainText: $endMessage"
depnotify_command "Command: Quit: $endMessage"
sleep 1
printlog "Remove $(rm -fv $DEPNOTIFY_LOG || true)"
printlog "Ending"
caffexit $errorCount

View File

@@ -0,0 +1,309 @@
#!/bin/sh
# Installomator 1st installation (auto installation at enrollment)
instance="" # Name of used instance
LOGO="" # "appstore", "jamf", "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
items=(dialog dockutil microsoftautoupdate supportapp xink zohoworkdrivetruesync textmate applenyfonts applesfpro applesfmono applesfcompact 1password7 wwdc theunarchiver keka microsoftedge microsoftteams microsoftonedrive microsoftoffice365)
# Remember: dialog dockutil
installomatorOptions="NOTIFY=silent BLOCKING_PROCESS_ACTION=ignore INSTALL=force IGNORE_APP_STORE_APPS=yes LOGGING=REQ"
# Error message to user if any occur
showError="1" # Show error message if 1 (0 if it should not be shown)
errorMessage="A problem was encountered setting up this Mac. Please contact IT."
######################################################################
# Installomator 1st
#
# Installation using Installomator
# (use separate Progress 1st script to show progress)
# No customization below…
######################################################################
# This script can be used to install software using Installomator.
# Script will display a dialog if any errors happens.
# User is not notified about installations.
######################################################################
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
#
# This script made by Søren Theilgaard
# https://github.com/Theile
# Twitter and MacAdmins Slack: @theilgaard
#
# Some functions and code from Installomator:
# https://github.com/Installomator/Installomator
#
######################################################################
scriptVersion="9.6"
# v. 9.6 : 2022-11-15 : GitHub API call is first, only try alternative if that fails.
# v. 9.5 : 2022-09-21 : change of GitHub download
# v. 9.4 : 2022-09-14 : Making error message optional. downloadURL can fall back on GitHub API.
# v. 9.3 : 2022-08-29 : installomatorOptions in quotes and ignore blocking processes. Improved installation with looping if it fails, so it can try again. Improved GitHub handling. ws1 support.
# v. 9.2.2 : 2022-06-17 : installomatorOptions introduced. Check 1.1.1.1 for internet connection.
# v. 9.2.1 : 2022-05-30 : Some changes to logging
# v. 9.2 : 2022-05-19 : Built in installer for Installomator, and display dialog if error happens. Now universal script for all supported MDMs based on LOGO variable.
######################################################################
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Check before running
case $LOGO in
addigy|microsoft)
conditionFile="/var/db/.Installomator1stDone"
# Addigy and Microsoft Endpoint Manager (Intune) need a check for a touched file
if [ -e "$conditionFile" ]; then
echo "$LOGO setup detected"
echo "$conditionFile exists, so we exit."
exit 0
else
echo "$conditionFile not found, so we continue…"
fi
;;
esac
# Mark: Constants, logging and caffeinate
log_message="$instance: Installomator 1st, v$scriptVersion"
label="1st-v$scriptVersion"
log_location="/private/var/log/Installomator.log"
printlog(){
timestamp=$(date +%F\ %T)
if [[ "$(whoami)" == "root" ]]; then
echo "$timestamp :: $label : $1" | tee -a $log_location
else
echo "$timestamp :: $label : $1"
fi
}
printlog "[LOG-BEGIN] ${log_message}"
# Internet check
if [[ "$(nc -z -v -G 10 1.1.1.1 53 2>&1 | grep -io "succeeded")" != "succeeded" ]]; then
printlog "ERROR. No internet connection, we cannot continue."
caffexit 90
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid" || true
pkill caffeinate || true
printlog "[LOG-END] Status $1"
exit $1
}
# Counters
errorCount=0
countLabels=${#items[@]}
printlog "Total installations: $countLabels"
# Using LOGO variable to specify MDM and shown logo
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
printlog "LOGO: $LOGO LOGO_PATH: $LOGO_PATH"
# Mark: Functions
# Notify the user using AppleScript
function displayDialog(){
currentUser="$(stat -f "%Su" /dev/console)"
currentUserID=$(id -u "$currentUser")
if [[ "$currentUser" != "" ]]; then
launchctl asuser $currentUserID sudo -u $currentUser osascript -e "button returned of (display dialog \"$message\" buttons {\"OK\"} default button \"OK\" with icon POSIX file \"$LOGO_PATH\")" || true
fi
}
# Mark: Code
name="Installomator"
printlog "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg
gitusername="Installomator"
gitreponame="Installomator"
#printlog "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#printlog "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#printlog "$appNewVersion"
expectedTeamID="JME5BW3F3R"
destFile="/usr/local/Installomator/Installomator.sh"
currentInstalledVersion="$(${destFile} version 2>/dev/null || true)"
printlog "${destFile} version: $currentInstalledVersion"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
printlog "$name not found or version not latest."
printlog "${destFile}"
printlog "Installing version ${appNewVersion} ..."
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
printlog "Created working directory '$tmpDir'"
# Download the installer package
printlog "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
printlog "error downloading $downloadURL, with status $curlDownloadStatus"
printlog "${curlDownload}"
exitCode=1
else
printlog "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
printlog "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
printlog "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
printlog "ERROR. $name package installation failed."
printlog "${pkgInstall}"
exitCode=2
else
printlog "Installing $name package succes."
exitCode=0
fi
else
printlog "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
printlog "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
printlog "Sleep a bit before trying download and install again. $installationCount time(s)."
printlog "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
printlog "Download and install of $name succes."
fi
done
# Remove the temporary working directory
printlog "Deleting working directory '$tmpDir' and its contents."
printlog "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
printlog "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
printlog "$name version $appNewVersion installed!"
fi
else
printlog "$name version $appNewVersion already found. Perfect!"
fi
errorLabels=""
((countLabels++))
((countLabels--))
printlog "$countLabels labels to install"
for item in "${items[@]}"; do
printlog "$item"
cmdOutput="$( ${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true )"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
printlog "${item} succesfully installed."
warnOutput="$( echo "${cmdOutput}" | grep --binary-files=text "WARN" || true )"
printlog "$warnOutput"
else
printlog "Error installing ${item}. Exit code ${exitStatus}"
#printlog "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
printlog "$errorOutput"
((errorCount++))
errorLabels="$errorLabels ${item}"
fi
((countLabels--))
itemName=""
done
# Mark: Finishing
# Prevent re-run of script if conditionFile is set
if [[ ! -z "$conditionFile" ]]; then
printlog "Touching condition file so script will not run again"
touch "$conditionFile" || true
printlog "$(ls -al "$conditionFile" || true)"
fi
# Show error to user if any
printlog "Errors: $errorCount"
if [[ $errorCount -ne 0 ]]; then
printlog "ERROR: Display error dialog to user!"
errorMessage="${errorMessage} Total errors: $errorCount"
if [[ $showError -eq 1 ]]; then
message="$errorMessage"
displayDialog &
fi
printlog "errorLabels: $errorLabels"
fi
printlog "Ending"
caffexit $errorCount

View File

@@ -0,0 +1,361 @@
#!/bin/sh
# Installomator 1st installation with DEPNotify window (for self Service deployment)
instance="" # Name of used instance
LOGO="" # "appstore", "jamf", "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
items=(dialog dockutil microsoftautoupdate supportapp applenyfonts applesfpro applesfmono applesfcompact xink zohoworkdrivetruesync textmate 1password7 wwdc theunarchiver keka microsoftedge microsoftteams microsoftonedrive microsoftoffice365)
# Remember: dialog dockutil
installomatorOptions="NOTIFY=all BLOCKING_PROCESS_ACTION=prompt_user"
# DEPNotify display settings, change as desired
title="Installing Apps and other software"
message="Please wait while we download and install the needed software."
endMessage="Installation complete! Please reboot to activate FileVault."
errorMessage="A problem was encountered setting up this Mac. Please contact IT."
######################################################################
# Installomator 1st DEPNotify
#
# Installation using Installomator showing progress with DEPNotify
# Great stand-alone solution if installs are only done using Installomator.
# No customization below…
######################################################################
# This script can be used to install software using Installomator.
# Script will start DEPNotify to display a progress bar.
# Progress bar moves between installations
######################################################################
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
#
# This script made by Søren Theilgaard
# https://github.com/Theile
# Twitter and MacAdmins Slack: @theilgaard
#
# Some functions and code from Installomator:
# https://github.com/Installomator/Installomator
#
######################################################################
scriptVersion="9.6"
# v. 9.6 : 2022-11-15 : GitHub API call is first, only try alternative if that fails.
# v. 9.5 : 2022-09-21 : change of GitHub download
# v. 9.4 : 2022-09-14 : downloadURL can fall back on GitHub API
# v. 9.3 : 2022-08-29 : installomatorOptions in quotes and ignore blocking processes. Improved installation with looping if it fails, so it can try again. Improved GitHub handling. ws1 support.
# v. 9.2.2 : 2022-06-17 : installomatorOptions introduced. Check 1.1.1.1 for internet connection.
# v. 9.2.1 : 2022-05-30 : Some changes to logging
# v. 9.2 : 2022-05-19 : Built in installer for Installlomator, and display dialog if error happens. Now universal script for all supported MDMs based on LOGO variable.
# v. 9.1 : 2022-04-13 : Using INSTALL=force in Label only, so Microsoft labels will not start updating
# v. 9.0.1 : 2022-02-21 : LOGO=addigy, few more "true" lines, and errorOutput on error
# v. 9.0.0 : 2022-02-14 : Updated for Inst. 9.0, Logging improved with printlog
######################################################################
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Check before running
case $LOGO in
addigy|microsoft)
conditionFile="/var/db/.Installomator1stDone"
# Addigy and Microsoft Endpoint Manager (Intune) need a check for a touched file
if [ -e "$conditionFile" ]; then
echo "$LOGO setup detected"
echo "$conditionFile exists, so we exit."
exit 0
else
echo "$conditionFile not found, so we continue…"
fi
;;
esac
# Mark: Constants, logging and caffeinate
log_message="$instance: Installomator 1st with DEPNotify, v$scriptVersion"
label="1st-v$scriptVersion"
log_location="/private/var/log/Installomator.log"
printlog(){
timestamp=$(date +%F\ %T)
if [[ "$(whoami)" == "root" ]]; then
echo "$timestamp :: $label : $1" | tee -a $log_location
else
echo "$timestamp :: $label : $1"
fi
}
printlog "[LOG-BEGIN] ${log_message}"
# Internet check
if [[ "$(nc -z -v -G 10 1.1.1.1 53 2>&1 | grep -io "succeeded")" != "succeeded" ]]; then
printlog "ERROR. No internet connection, we cannot continue."
exit 90
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid" || true
pkill caffeinate || true
printlog "[LOG-END] Status $1"
exit $1
}
# Command-file to DEPNotify
DEPNOTIFY_LOG="/var/tmp/depnotify.log"
# Counters
errorCount=0
countLabels=${#items[@]}
printlog "Total installations: $countLabels"
# Using LOGO variable to specify MDM and shown logo
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
printlog "LOGO: $LOGO - LOGO_PATH: $LOGO_PATH"
# Mark: Functions
printlog "depnotify_command function"
echo "" > $DEPNOTIFY_LOG || true
function depnotify_command(){
printlog "DEPNotify-command: $1"
echo "$1" >> $DEPNOTIFY_LOG || true
}
printlog "startDEPNotify function"
function startDEPNotify() {
currentUser="$(stat -f "%Su" /dev/console)"
currentUserID=$(id -u "$currentUser")
launchctl asuser $currentUserID open -a "/Applications/Utilities/DEPNotify.app/Contents/MacOS/DEPNotify" --args -path "$DEPNOTIFY_LOG" || true # --args -fullScreen
sleep 5
depnotify_command "Command: KillCommandFile:"
depnotify_command "Command: MainTitle: $title"
depnotify_command "Command: Image: $LOGO_PATH"
depnotify_command "Command: MainText: $message"
depnotify_command "Command: Determinate: $countLabels"
}
# Notify the user using AppleScript
printlog "displayDialog function"
function displayDialog(){
currentUser="$(stat -f "%Su" /dev/console)"
currentUserID=$(id -u "$currentUser")
if [[ "$currentUser" != "" ]]; then
launchctl asuser $currentUserID sudo -u $currentUser osascript -e "button returned of (display dialog \"$message\" buttons {\"OK\"} default button \"OK\" with icon POSIX file \"$LOGO_PATH\")" || true
fi
}
# Mark: Code
name="Installomator"
printlog "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg
gitusername="Installomator"
gitreponame="Installomator"
#printlog "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#printlog "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#printlog "$appNewVersion"
expectedTeamID="JME5BW3F3R"
destFile="/usr/local/Installomator/Installomator.sh"
currentInstalledVersion="$(${destFile} version 2>/dev/null || true)"
printlog "${destFile} version: $currentInstalledVersion"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
printlog "$name not found or version not latest."
printlog "${destFile}"
printlog "Installing version ${appNewVersion} ..."
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
printlog "Created working directory '$tmpDir'"
# Download the installer package
printlog "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
printlog "error downloading $downloadURL, with status $curlDownloadStatus"
printlog "${curlDownload}"
exitCode=1
else
printlog "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
printlog "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
printlog "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
printlog "ERROR. $name package installation failed."
printlog "${pkgInstall}"
exitCode=2
else
printlog "Installing $name package succes."
exitCode=0
fi
else
printlog "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
printlog "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
printlog "Sleep a bit before trying download and install again. $installationCount time(s)."
printlog "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
printlog "Download and install of $name succes."
fi
done
# Remove the temporary working directory
printlog "Deleting working directory '$tmpDir' and its contents."
printlog "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
printlog "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
printlog "$name version $appNewVersion installed!"
fi
else
printlog "$name version $appNewVersion already found. Perfect!"
fi
# Installing DEPNotify
cmdOutput="$( ${destFile} depnotify LOGO=$LOGO NOTIFY=silent BLOCKING_PROCESS_ACTION=ignore LOGGING=WARN || true )"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
printlog "DEPNotify install result: $exitStatus"
itemName=""
errorLabels=""
((countLabels++))
((countLabels--))
printlog "$countLabels labels to install"
startDEPNotify
for item in "${items[@]}"; do
# Check if DEPNotify is running and try open it if not
if ! pgrep -xq "DEPNotify"; then
startDEPNotify
fi
itemName=$( ${destFile} ${item} RETURN_LABEL_NAME=1 LOGGING=REQ INSTALL=force | tail -1 || true )
if [[ "$itemName" != "#" ]]; then
depnotify_command "Status: $itemName installing…"
else
depnotify_command "Status: $item installing…"
fi
printlog "$item $itemName"
cmdOutput="$( ${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true )"
#cmdOutput="2022-05-19 13:20:45 : REQ : installomator : ################## End Installomator, exit code 0"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
printlog "${item} succesfully installed."
warnOutput="$( echo "${cmdOutput}" | grep --binary-files=text "WARN" || true )"
printlog "$warnOutput"
else
printlog "Error installing ${item}. Exit code ${exitStatus}"
#printlog "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
printlog "$errorOutput"
((errorCount++))
errorLabels="$errorLabels ${item}"
fi
((countLabels--))
itemName=""
done
# Mark: Finishing
# Prevent re-run of script if conditionFile is set
if [[ ! -z "$conditionFile" ]]; then
printlog "Touching condition file so script will not run again"
touch "$conditionFile" || true
printlog "$(ls -al "$conditionFile" || true)"
fi
# Show error to user if any
printlog "Errors: $errorCount"
if [[ $errorCount -ne 0 ]]; then
errorMessage="${errorMessage} Total errors: $errorCount"
message="$errorMessage"
displayDialog &
endMessage="$message"
printlog "errorLabels: $errorLabels"
fi
depnotify_command "Command: MainText: $endMessage"
depnotify_command "Command: Quit: $endMessage"
sleep 1
printlog "Remove $(rm -fv $DEPNOTIFY_LOG || true)"
printlog "Ending"
caffexit $errorCount

308
MDM/Installomator 1st SS.sh Executable file
View File

@@ -0,0 +1,308 @@
#!/bin/sh
# Installomator 1st installation (for Self Service deployment)
instance="" # Name of used instance
LOGO="" # "appstore", "jamf", "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
items=(dialog dockutil microsoftautoupdate supportapp applenyfonts applesfpro applesfmono applesfcompact xink zohoworkdrivetruesync textmate 1password7 wwdc theunarchiver keka microsoftedge microsoftteams microsoftonedrive microsoftoffice365)
# Remember: dialog dockutil
installomatorOptions="NOTIFY=all BLOCKING_PROCESS_ACTION=prompt_user"
# Error message to user if any occur
showError="1" # Show error message if 1 (0 if it should not be shown)
errorMessage="A problem was encountered setting up this Mac. Please contact IT."
######################################################################
# Installomator 1st for Self Service
#
# Installation using Installomator
# No customization below…
######################################################################
# This script can be used to install software using Installomator, where the user activate it in Self Service.
# Script will display a dialog if any errors happens.
# Progress is shown in notifications to the user
######################################################################
# Other installomatorOptions:
# LOGGING=REQ
# LOGGING=DEBUG
# LOGGING=WARN
# BLOCKING_PROCESS_ACTION=ignore
# BLOCKING_PROCESS_ACTION=tell_user
# BLOCKING_PROCESS_ACTION=tell_user_then_quit
# BLOCKING_PROCESS_ACTION=prompt_user
# BLOCKING_PROCESS_ACTION=prompt_user_loop
# BLOCKING_PROCESS_ACTION=prompt_user_then_kill
# BLOCKING_PROCESS_ACTION=quit
# BLOCKING_PROCESS_ACTION=kill
# NOTIFY=all
# NOTIFY=success
# NOTIFY=silent
# IGNORE_APP_STORE_APPS=yes
# INSTALL=force
######################################################################
#
# This script made by Søren Theilgaard
# https://github.com/Theile
# Twitter and MacAdmins Slack: @theilgaard
#
# Some functions and code from Installomator:
# https://github.com/Installomator/Installomator
#
######################################################################
scriptVersion="9.6"
# v. 9.6 : 2022-11-15 : GitHub API call is first, only try alternative if that fails.
# v. 9.5 : 2022-09-21 : change of GitHub download
# v. 9.4 : 2022-09-14 : Making error message optional. downloadURL can fall back on GitHub API.
# v. 9.3 : 2022-08-29 : installomatorOptions in quotes and ignore blocking processes. Improved installation with looping if it fails, so it can try again. Improved GitHub handling. ws1 support.
# v. 9.2.2 : 2022-06-17 : installomatorOptions introduced. Check 1.1.1.1 for internet connection.
# v. 9.2.1 : 2022-05-30 : Some changes to logging
# v. 9.2 : 2022-05-19 : Built in installer for Installomator, and display dialog if error happens. Now universal script for all supported MDMs based on LOGO variable.
######################################################################
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Check before running
case $LOGO in
addigy|microsoft)
conditionFile="/var/db/.Installomator1stDone"
# Addigy and Microsoft Endpoint Manager (Intune) need a check for a touched file
if [ -e "$conditionFile" ]; then
echo "$LOGO setup detected"
echo "$conditionFile exists, so we exit."
exit 0
else
echo "$conditionFile not found, so we continue…"
fi
;;
esac
# Mark: Constants, logging and caffeinate
log_message="$instance: Installomator 1st, v$scriptVersion"
label="1st-v$scriptVersion"
log_location="/private/var/log/Installomator.log"
printlog(){
timestamp=$(date +%F\ %T)
if [[ "$(whoami)" == "root" ]]; then
echo "$timestamp :: $label : $1" | tee -a $log_location
else
echo "$timestamp :: $label : $1"
fi
}
printlog "[LOG-BEGIN] ${log_message}"
# Internet check
if [[ "$(nc -z -v -G 10 1.1.1.1 53 2>&1 | grep -io "succeeded")" != "succeeded" ]]; then
printlog "ERROR. No internet connection, we cannot continue."
caffexit 90
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid" || true
pkill caffeinate || true
printlog "[LOG-END] Status $1"
exit $1
}
# Counters
errorCount=0
countLabels=${#items[@]}
printlog "Total installations: $countLabels"
# Using LOGO variable to specify MDM and shown logo
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
printlog "LOGO: $LOGO LOGO_PATH: $LOGO_PATH"
# Mark: Functions
# Notify the user using AppleScript
function displayDialog(){
currentUser="$(stat -f "%Su" /dev/console)"
currentUserID=$(id -u "$currentUser")
if [[ "$currentUser" != "" ]]; then
launchctl asuser $currentUserID sudo -u $currentUser osascript -e "button returned of (display dialog \"$message\" buttons {\"OK\"} default button \"OK\" with icon POSIX file \"$LOGO_PATH\")" || true
fi
}
# Mark: Code
name="Installomator"
printlog "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg
gitusername="Installomator"
gitreponame="Installomator"
#printlog "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#printlog "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#printlog "$appNewVersion"
expectedTeamID="JME5BW3F3R"
destFile="/usr/local/Installomator/Installomator.sh"
currentInstalledVersion="$(${destFile} version 2>/dev/null || true)"
printlog "${destFile} version: $currentInstalledVersion"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
printlog "$name not found or version not latest."
printlog "${destFile}"
printlog "Installing version ${appNewVersion} ..."
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
printlog "Created working directory '$tmpDir'"
# Download the installer package
printlog "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
printlog "error downloading $downloadURL, with status $curlDownloadStatus"
printlog "${curlDownload}"
exitCode=1
else
printlog "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
printlog "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
printlog "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
printlog "ERROR. $name package installation failed."
printlog "${pkgInstall}"
exitCode=2
else
printlog "Installing $name package succes."
exitCode=0
fi
else
printlog "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
printlog "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
printlog "Sleep a bit before trying download and install again. $installationCount time(s)."
printlog "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
printlog "Download and install of $name succes."
fi
done
# Remove the temporary working directory
printlog "Deleting working directory '$tmpDir' and its contents."
printlog "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
printlog "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
printlog "$name version $appNewVersion installed!"
fi
else
printlog "$name version $appNewVersion already found. Perfect!"
fi
errorLabels=""
((countLabels++))
((countLabels--))
printlog "$countLabels labels to install"
for item in "${items[@]}"; do
printlog "$item"
cmdOutput="$( ${destFile} ${item} LOGO=$LOGO ${installomatorOptions} || true )"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
printlog "${item} succesfully installed."
warnOutput="$( echo "${cmdOutput}" | grep --binary-files=text "WARN" || true )"
printlog "$warnOutput"
else
printlog "Error installing ${item}. Exit code ${exitStatus}"
#printlog "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
printlog "$errorOutput"
((errorCount++))
errorLabels="$errorLabels ${item}"
fi
((countLabels--))
itemName=""
done
# Mark: Finishing
# Prevent re-run of script if conditionFile is set
if [[ ! -z "$conditionFile" ]]; then
printlog "Touching condition file so script will not run again"
touch "$conditionFile" || true
printlog "$(ls -al "$conditionFile" || true)"
fi
# Show error to user if any
printlog "Errors: $errorCount"
if [[ $errorCount -ne 0 ]]; then
printlog "ERROR: Display error dialog to user!"
errorMessage="${errorMessage} Total errors: $errorCount"
if [[ $showError -eq 1 ]]; then
message="$errorMessage"
displayDialog &
fi
printlog "errorLabels: $errorLabels"
fi
printlog "Ending"
caffexit $errorCount

View File

@@ -0,0 +1,13 @@
#!/bin/sh
# Mark: Addigy Condition on condition file
# Install on success
conditionFile="/var/db/.Installomator1stDone"
if [ -e "$conditionFile" ]; then
echo "$conditionFile exists. Exiting."
exit 1
else
echo "$conditionFile not found. Continue…"
exit 0
fi

View File

@@ -0,0 +1,11 @@
#!/bin/sh
# PREVENT Installomator 1st Auto-install from running
# DESCRIPTION
# Will create the file to prevent Installomator 1st Auto-install from running.
# Only for MDM solutions (like Addigy and Microsoft) that have conditions for runnning scripts and do not offer an enrollment event for runnning the script.
# By runninng this script, the file will be created on the client, that will prevent Installomator 1st Auto-install from runnning.
# This is a great help for implementing Installomator 1st Auto-install in a running solution, where the command below have to be run on currently enrolled devices, and then Installomator 1st Auto-install can be assigned to all machines, and will run only on newly enrolled devices.
/usr/bin/touch "/var/db/.Installomator1stDone"

View File

@@ -1,42 +0,0 @@
#!/bin/bash
# Updating Installomator
# Usefull to push out after deployment if earlier version was deployed in DEP profile
what="installomator" # enter the software to install
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem"
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Install software using Installomator
cmdOutput="$(${destFile} ${what} LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore NOTIFY=silent LOGGING=req || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo -e "${what} succesfully installed.\n"
else
echo -e "Error installing ${what}. Exit code ${exitStatus}\n"
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
caffexit $exitStatus
fi
echo "[$(DATE)][LOG-END]"
caffexit 0

View File

@@ -0,0 +1,160 @@
#!/bin/zsh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# MARK: Arguments/Parameters
# Parameter 4: path to the swiftDialog command file
dialog_command_file=${4:-"/var/tmp/dialog.log"}
# Parameter 5: message displayed over the progress bar
message=${5:-"Self Service Progress"}
# Parameter 6: path or URL to an icon
icon=${6:-"/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"}
# see Dan Snelson's advice on how to get a URL to an icon in Self Service
# https://rumble.com/v119x6y-harvesting-self-service-icons.html
# MARK: Constants
dialogApp="/Library/Application Support/Dialog/Dialog.app"
# MARK: Functions
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
# MARK: sanity checks
# check minimal macOS requirement
if [[ $(sw_vers -buildVersion ) < "20A" ]]; then
echo "This script requires at least macOS 11 Big Sur."
exit 98
fi
# check we are running as root
if [[ $DEBUG -eq 0 && $(id -u) -ne 0 ]]; then
echo "This script should be run as root"
exit 97
fi
# swiftDialog installation
name="Dialog"
echo "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg w. app version check
gitusername="bartreardon"
gitreponame="swiftDialog"
#echo "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#echo "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#echo "$appNewVersion"
expectedTeamID="PWA5E9TQ59"
destFile="/Library/Application Support/Dialog/Dialog.app"
versionKey="CFBundleShortVersionString" #CFBundleVersion
currentInstalledVersion="$(defaults read "${destFile}/Contents/Info.plist" $versionKey || true)"
echo "${name} version: $currentInstalledVersion"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
echo "$name not found or version not latest."
echo "${destFile}"
echo "Installing version ${appNewVersion}"
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
echo "Created working directory '$tmpDir'"
# Download the installer package
echo "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
echo "error downloading $downloadURL, with status $curlDownloadStatus"
echo "${curlDownload}"
exitCode=1
else
echo "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
echo "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
echo "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
echo "ERROR. $name package installation failed."
echo "${pkgInstall}"
exitCode=2
else
echo "Installing $name package succes."
exitCode=0
fi
else
echo "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
echo "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
echo "Sleep a bit before trying download and install again. $installationCount time(s)."
echo "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
echo "Download and install of $name succes."
fi
done
# Remove the temporary working directory
echo "Deleting working directory '$tmpDir' and its contents."
echo "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
echo "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
echo "$name version $appNewVersion installed!"
fi
else
echo "$name version $appNewVersion already found. Perfect!"
fi
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
exit 95
fi
# MARK: Configure and display swiftDialog
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1

View File

@@ -0,0 +1,69 @@
#!/bin/zsh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# MARK: Arguments/Parameters
# Parameter 4: path to the swiftDialog command file
dialog_command_file=${4:-"/var/tmp/dialog.log"}
# Parameter 5: message displayed over the progress bar
message=${5:-"Self Service Progress"}
# Parameter 6: path or URL to an icon
icon=${6:-"/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"}
# see Dan Snelson's advice on how to get a URL to an icon in Self Service
# https://rumble.com/v119x6y-harvesting-self-service-icons.html
# MARK: Constants
dialogApp="/Library/Application Support/Dialog/Dialog.app"
# MARK: Functions
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
# MARK: sanity checks
# check minimal macOS requirement
if [[ $(sw_vers -buildVersion ) < "20A" ]]; then
echo "This script requires at least macOS 11 Big Sur."
exit 98
fi
# check we are running as root
if [[ $DEBUG -eq 0 && $(id -u) -ne 0 ]]; then
echo "This script should be run as root"
exit 97
fi
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
exit 95
fi
# MARK: Configure and display swiftDialog
# display first screen
open -a "$dialogApp" --args \
--title none \
--icon "$icon" \
--message "$message" \
--mini \
--progress 100 \
--position bottomright \
--movable \
--commandfile "$dialog_command_file"
# give everything a moment to catch up
sleep 0.1

48
MDM/Jamf/ReadMe.md Normal file
View File

@@ -0,0 +1,48 @@
# Display Installomator Progress with SwiftDialog in Jamf
Installomator 10 has functionality to communicate with [Bart Reardon's swiftDialog](https://github.com/bartreardon/swiftDialog). When you set the `DIALOG_CMD_FILE` variable Installomator will write progress for downloads and installation (with pkgs) to the command file which allows swiftDialog to display the progress.
However, you have to launch and setup swiftDialog to display a window with a progress bar before Installomator launches and also make sure swiftDialog quits after Installomator has run. This may seem complex at first but allows to configure swiftDialog just for your case without needing to modify the Installomator script.
Here are some example script that would run before and after Installomator to display a swiftDialog window and quit the process after. Since Jamf Pro executes scripts in alphanumerical order, the names are chosen accordingly, to ensure proper order.
## Setup in Jamf Pro
To show Installomator progress with swiftDialog from a Jamf Policy, you require three scripts:
- `00_Prepare_SwiftDialog.sh`: Configures and displays the swiftDialog window
- `Installomator.sh`: (v10 or higher)
- `zz_Quit_SwiftDialog.sh`: quits swiftDialog
Add these three scripts to your Jamf Pro and create a policy with these three scripts. The names are chosen that the script appear in the correct order. If you rename the scripts in Jamf Pro, this may disrupt the order and the workflow will not work anymore. The "Priority" of the scripts in the policy should all be the same value.
The different scripts require a set of parameters. We will use the `googlechromepkg` label as an example.
`00_Prepare_SwiftDialog.sh`
Parameter 4: `/var/tmp/dialog.log` (Path to the swiftDialog command file)
Parameter 5: `Installing Google Chrome...` (text shown in the swiftDialog window above the progress bar)
Parameter 6: Path to or URL for an icon in swiftDialog. This can be a path on the client or a URL. See Dan Snelson's advice on how to get icon URLs for Self Service icons: https://rumble.com/v119x6y-harvesting-self-service-icons.html
`Installomator.sh`
Parameter 4: `googlechromepkg` (the label to install)
Parameter 5: `DIALOG_CMD_FILE=/var/tmp/dialog.log` (the swiftDialog command file, this has to be the same value as parameter 4 in the previous script)
Parameter 6: `NOTIFY=silent` (disable Installomator notifications, optional)
You can add more configurations to the Installomator script when needed.
`zz_Quit_SwiftDialog`
Parameter 4: `/var/tmp/dialog.log` (the swiftDialog command file, this has to be the same value as parameter 4 in the first script)
Then setup the remainder of the Jamf Policy to your needs. This works best with Self Service policies.
When you run the policy, the first script will configure and display swiftDialog. Installomator.sh will download and install the app while writing the proper update commands to the file set in `DIALOG_CMD_FILE`. The final script will quit swiftDialog.
![](SelfServiceProgress.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

57
MDM/Jamf/zz_Quit_SwiftDialog.sh Executable file
View File

@@ -0,0 +1,57 @@
#!/bin/zsh
# MARK: Arguments/Parameters
# Parameter 4: path to the swiftDialog command file
dialog_command_file=${4:-"/var/tmp/dialog.log"}
# MARK: Constants
dialogApp="/Library/Application Support/Dialog/Dialog.app"
dialogUpdate() {
# $1: dialog command
local dcommand="$1"
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> "$dialog_command_file"
echo "Dialog: $dcommand"
fi
}
# check minimal macOS requirement
if [[ $(sw_vers -buildVersion ) < "20A" ]]; then
echo "This script requires at least macOS 11 Big Sur."
exit 98
fi
# check we are running as root
if [[ $DEBUG -eq 0 && $(id -u) -ne 0 ]]; then
echo "This script should be run as root"
exit 97
fi
# check for Swift Dialog
if [[ ! -d $dialogApp ]]; then
echo "Cannot find dialog at $dialogApp"
exit 95
fi
# close and quit dialog
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
# pause a moment
sleep 0.5
dialogUpdate "quit:"
# let everything catch up
sleep 0.5
# just to be safe
killall "Dialog"
# the killall command above will return error when Dialog is already quit
# but we don't want that to register as a failure in Jamf, so always exit 0
exit 0

View File

@@ -1,115 +0,0 @@
#!/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 (9.1.0)/Installomator-9.1.pkg" -target /
# Installation using Installomator
whatList="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 "whatList" above with labels separated by space " ".
# Script will loop through these labels and exit with number of errors.
######################################################################
# Parameters for reinstall/initial install (owner root:wheel):
# "BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes SYSTEMOWNER=1"
# Parameters for Self Service installed app:
# "BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=all"
# Parameters for security important apps, like browsers (run automaticaly every day):
# "BLOCKING_PROCESS_ACTION=tell_user_then_kill"
# Update of service apps (run automatically):
# "BLOCKING_PROCESS_ACTION=quit_kill NOTIFY=silent"
parameters="BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes"
######################################################################
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Count errors
errorCount=0
for what in $whatList; do
#echo $what
# Install software using Installomator
cmdOutput="$(${destFile} ${what} LOGO=addigy $parameters || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -ne 0 ]] ; then
echo -e "Error installing ${what}. Exit code ${exitStatus}"
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
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="9.1"
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

View File

@@ -1,79 +0,0 @@
PKG_ID="com.scriptingosx.Installomator"
TARGET_VERSION="9.1"
URLDOWNLOAD="%MosyleCDNFile:blah-blah-blah%"
######################################################################
# Installation using Installomator (enter the software to install separated with spaces in the "whatList"-variable)
whatList="handbrake theunarchiver microsoftoffice365"
# Covered by Mosyle Catalog: "brave firefox googlechrome microsoftedge microsoftteams signal sublimetext vlc webex zoom" among others
LOGO="mosyleb" # or "mosylem"
######################################################################
## Mark: Code here
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
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 what in $whatList; do
#echo $item
# Install software using Installomator
cmdOutput="$(${destFile} ${what} LOGO=$LOGO NOTIFY=all BLOCKING_PROCESS_ACTION=tell_user || true)" # NOTIFY=silent BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -ne 0 ]] ; then
echo "Error installing ${what}. Exit code ${exitStatus}"
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
let errorCount++
fi
done
echo
echo "Errors: $errorCount"
echo "[$(DATE)][LOG-END]"
caffexit $errorCount

View File

@@ -1,56 +0,0 @@
#!/bin/bash
# Software
# Installation using Installomator
# Example of installing software using valuesfromarguments to install a custom software
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem"
###############################################
# 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."
exit 99
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid"
pkill caffeinate
exit $1
}
# Variables to calculate
downloadURL="https://craft-assets.invisionapp.com/CraftManager/production/CraftManager.zip"
appNewVersion=$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath -e '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f2)
# Install software using Installomator
cmdOutput="$(${destFile} valuesfromarguments LOGO=$LOGO \
name=CraftManager \
type=zip \
downloadURL=$downloadURL \
appNewVersion=$appNewVersion \
expectedTeamID=VRXQSNCL5W \
BLOCKING_PROCESS_ACTION=prompt_user \
LOGGING=REQ \
NOTIFY=all || true)"
# Check result
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )"
if [[ ${exitStatus} -eq 0 ]] ; then
echo -e "${what} succesfully installed.\n"
else
echo -e "Error installing ${what}. Exit code ${exitStatus}\n"
#printlog "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
caffexit $exitStatus
fi
echo "[$(DATE)][LOG-END]"
caffexit 0

View File

@@ -0,0 +1,13 @@
#!/bin/sh
# Mark: Addigy Condition on condition file
# Install on success
conditionFile="/var/db/.Progress1stDone"
if [ -e "$conditionFile" ]; then
echo "$conditionFile exists. Exiting."
exit 1
else
echo "$conditionFile not found. Continue…"
exit 0
fi

View File

@@ -0,0 +1,11 @@
#!/bin/sh
# PREVENT Progress 1st swiftDialog from running
# DESCRIPTION
# Will create the file to prevent Progress 1st swiftDialog from running.
# Only for MDM solutions (like Addigy and Microsoft) that have conditions for runnning scripts and do not offer an enrollment event for runnning the script.
# By runninng this script, the file will be created on the client, that will prevent Progress 1st swiftDialog from runnning.
# This is a great help for implementing Progress 1st swiftDialog in a running solution, where the command below have to be run on currently enrolled devices, and then Progress 1st swiftDialog can be assigned to all machines, and will run only on newly enrolled devices.
/usr/bin/touch "/var/db/.Progress1stDone"

399
MDM/Progress 1st swiftDialog.sh Executable file
View File

@@ -0,0 +1,399 @@
#!/bin/sh
# Progress 1st with swiftDialog (auto installation at enrollment)
instance="" # Name of used instance
LOGO="" # "appstore", "jamf", "mosyleb", "mosylem", "addigy", "microsoft", "ws1"
apps=(
"swiftDialog,/usr/local/bin/dialog"
"dockutil,/usr/local/bin/dockutil"
"desktoppr,/usr/local/bin/desktoppr"
"SupportApp,/Applications/Support.app"
"Xink,/Applications/Xink.app"
"Apple NewYork Font,/Library/Fonts/NewYork.ttf"
"Apple SF Pro Font,/Library/Fonts/SF-Pro.ttf"
"Apple SF Mono Font,/Library/Fonts/SF-Mono-Bold.otf"
"Apple SF Compact Font,/Library/Fonts/SF-Compact.ttf"
"Zoho WorkDrive TrueSync,/Applications/Zoho WorkDrive TrueSync.app"
"TextMate,/Applications/TextMate.app"
"Sublime Text,/Applications/Sublime Text.app"
"1Password,/Applications/1Password 7.app"
"Mactracker,/Applications/Mactracker.app"
"WWDC,/Applications/WWDC.app"
"The Unarchiver,/Applications/The Unarchiver.app"
"Keka,/Applications/Keka.app"
"Brave,/Applications/Brave Browser.app"
"Firefox,/Applications/Firefox.app"
"Microsoft AutoUpdate,/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app"
"Microsoft Edge,/Applications/Microsoft Edge.app"
"Microsoft Teams,/Applications/Microsoft Teams.app"
"Microsoft Excel,/Applications/Microsoft Excel.app"
"Microsoft OneNote,/Applications/Microsoft OneNote.app"
"Microsoft Outlook,/Applications/Microsoft Outlook.app"
"Microsoft PowerPoint,/Applications/Microsoft PowerPoint.app"
"Microsoft Word,/Applications/Microsoft Word.app"
"Microsoft OneDrive,/Applications/OneDrive.app"
)
# Dialog display settings, change as desired
title="Installing Apps and other software"
message="Please wait while we download and install the needed software."
endMessage="Installation complete! Please reboot to activate FileVault."
displayEndMessageDialog=1 # Should endMessage be shown as a dialog? (0|1)
errorMessage="A problem was encountered setting up this Mac. Please contact IT."
######################################################################
# Progress 1st Dialog
#
# Showing installation progress using swiftDialog
# No customization below…
######################################################################
# Complete script meant for running via MDM on device enrollment. This will download
# and install Dialog on the fly before opening Dialog.
#
# Log: /private/var/log/InstallationProgress.log
# This file prevents script from running again on Addigy and Microsoft Endpoint (Intune):
# "/var/db/.Progress1stDone"
#
# Display a Dialog with a list of applications and indicate when theyve been installed
# Useful when apps are deployed at random, perhaps without local logging.
# Applies to Mosyle App Catalog installs, VPP app installs, Installomator installs etc.
# The script watches the existence of files in the file system, so that is used to show progress.
#
# Requires Dialog v1.9.1 or later (will be installed) https://github.com/bartreardon/swiftDialog
#
######################################################################
#
# This script made by Søren Theilgaard
# https://github.com/Theile
# Twitter and MacAdmins Slack: @theilgaard
#
# Based on the work by Adam Codega:
# https://github.com/acodega/dialog-scripts
#
# Some functions and code from Installomator:
# https://github.com/Installomator/Installomator
#
######################################################################
# List of apps/installs to process in “apps” array.
# Provide the display name as you prefer and the path to the app/file. ex:
# "Google Chrome,/Applications/Google Chrome.app"
# A comma separates the display name from the path. Do not use commas in your display name text.
#
# Tip: Check for something like print drivers using the pkg receipt, like:
# "Konica-Minolta drivers,/var/db/receipts/jp.konicaminolta.print.package.C759.plist"
# Or fonts, like:
# "Apple SF Pro Font,/Library/Fonts/SF-Pro.ttf"
######################################################################
scriptVersion="9.6"
# v. 9.6 : 2022-11-15 : GitHub API call is first, only try alternative if that fails.
# v. 9.5 : 2022-09-21 : change of GitHub download
# v. 9.4 : 2022-09-14 : downloadURL can fall back on GitHub API
# v. 9.3 : 2022-08-29 : Logging changed for current version. Improved installation with looping if it fails, so it can try again. Improved GitHub handling.
# v. 9.2.2 : 2022-06-17 : Improved Dialog installation. Check 1.1.1.1 for internet connection.
# v. 9.2 : 2022-05-19 : Not using GitHub api for download of Dialog, show a dialog when finished to make message more important. Now universal script for all supported MDMs based on LOGO variable.
# v. 9.0 : 2022-05-16 : Based on acodegas work, I have added progress bar, changed logging and use another log-location, a bit more error handling for Dialog download, added some "|| true"-endings to some lines to not make them fail in Addigy, and some more.
######################################################################
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Check before running
case $LOGO in
addigy|microsoft)
conditionFile="/var/db/.Progress1stDone"
# Addigy and Microsoft Endpoint Manager (Intune) need a check for a touched file
if [ -e "$conditionFile" ]; then
echo "$LOGO setup detected"
echo "$conditionFile exists, so we exit."
exit 0
else
echo "$conditionFile not found, so we continue…"
fi
;;
esac
# Mark: Constants and logging
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
log_message="$instance: Progress 1st with Dialog, v$scriptVersion"
label="P1st-v$scriptVersion"
log_location="/private/var/log/Installomator.log"
function printlog(){
timestamp=$(date +%F\ %T)
if [[ "$(whoami)" == "root" ]]; then
echo "$timestamp :: $label : $1" | tee -a $log_location
else
echo "$timestamp :: $label : $1"
fi
}
printlog "[LOG-BEGIN] ${log_message}"
# Internet check
if [[ "$(nc -z -v -G 10 1.1.1.1 53 2>&1 | grep -io "succeeded")" != "succeeded" ]]; then
printlog "ERROR. No internet connection, we cannot continue."
exit 90
fi
# Location of dialog and dialog command file
dialogApp="/usr/local/bin/dialog"
dialog_command_file="/var/tmp/dialog.log"
counterFile="/var/tmp/Progress1st.plist"
# Counters
progress_index=0
step_progress=0
defaults write $counterFile step -int 0
progress_total=${#apps[@]}
printlog "Total watched installations: $progress_total"
# Using LOGO variable to specify MDM and shown logo
case $LOGO in
appstore)
# Apple App Store on Mac
if [[ $(sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
;;
jamf)
# Jamf Pro
LOGO_PATH="/Library/Application Support/JAMF/Jamf.app/Contents/Resources/AppIcon.icns"
;;
mosyleb)
# Mosyle Business
LOGO_PATH="/Applications/Self-Service.app/Contents/Resources/AppIcon.icns"
;;
mosylem)
# Mosyle Manager (education)
LOGO_PATH="/Applications/Manager.app/Contents/Resources/AppIcon.icns"
;;
addigy)
# Addigy
LOGO_PATH="/Library/Addigy/macmanage/MacManage.app/Contents/Resources/atom.icns"
;;
microsoft)
# Microsoft Endpoint Manager (Intune)
LOGO_PATH="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
;;
ws1)
# Workspace ONE (AirWatch)
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
;;
esac
if [[ ! -a "${LOGO_PATH}" ]]; then
printlog "ERROR in LOGO_PATH '${LOGO_PATH}', setting Mac App Store."
if [[ $(/usr/bin/sw_vers -buildVersion) > "19" ]]; then
LOGO_PATH="/System/Applications/App Store.app/Contents/Resources/AppIcon.icns"
else
LOGO_PATH="/Applications/App Store.app/Contents/Resources/AppIcon.icns"
fi
fi
printlog "LOGO: $LOGO LOGO_PATH: $LOGO_PATH"
# Mark: Functions
# execute a dialog command
echo "" > $dialog_command_file || true
function dialog_command(){
printlog "Dialog-command: $1"
echo "$1" >> $dialog_command_file || true
}
function appCheck(){
dialog_command "listitem: $(echo "$app" | cut -d ',' -f1): wait"
while [ ! -e "$(echo "$app" | cut -d ',' -f2)" ]; do
sleep 2
done
dialog_command "progresstext: Install of “$(echo "$app" | cut -d ',' -f1)” complete"
dialog_command "listitem: $(echo "$app" | cut -d ',' -f1): ✅"
progress_index=$(defaults read $counterFile step)
progress_index=$(( progress_index + 1 ))
defaults write $counterFile step -int $progress_index
dialog_command "progress: $progress_index"
printlog "at item number $progress_index"
}
# Notify the user using AppleScript
function displayDialog(){
if [[ "$currentUser" != "" ]]; then
launchctl asuser $currentUserID sudo -u $currentUser osascript -e "button returned of (display dialog \"$message\" buttons {\"OK\"} default button \"OK\" with icon POSIX file \"$LOGO_PATH\")" || true
fi
}
# Mark: Code
name="Dialog"
printlog "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg w. app version check
gitusername="bartreardon"
gitreponame="swiftDialog"
#printlog "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#printlog "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#printlog "$appNewVersion"
expectedTeamID="PWA5E9TQ59"
destFile="/Library/Application Support/Dialog/Dialog.app"
versionKey="CFBundleShortVersionString" #CFBundleVersion
currentInstalledVersion="$(defaults read "${destFile}/Contents/Info.plist" $versionKey || true)"
printlog "${name} version: $currentInstalledVersion"
destFile="/usr/local/bin/dialog"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
printlog "$name not found or version not latest."
printlog "${destFile}"
printlog "Installing version ${appNewVersion}"
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
printlog "Created working directory '$tmpDir'"
# Download the installer package
printlog "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
printlog "error downloading $downloadURL, with status $curlDownloadStatus"
printlog "${curlDownload}"
exitCode=1
else
printlog "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
printlog "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
printlog "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
printlog "ERROR. $name package installation failed."
printlog "${pkgInstall}"
exitCode=2
else
printlog "Installing $name package succes."
exitCode=0
fi
else
printlog "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
printlog "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
printlog "Sleep a bit before trying download and install again. $installationCount time(s)."
printlog "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
printlog "Download and install of $name succes."
fi
done
# Remove the temporary working directory
printlog "Deleting working directory '$tmpDir' and its contents."
printlog "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
printlog "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
printlog "$name version $appNewVersion installed!"
fi
else
printlog "$name version $appNewVersion already found. Perfect!"
fi
while [ "$(pgrep -l "Setup Assistant")" != "" ]; do
printlog "Setup Assistant Still Running. PID $setupAssistantProcess."
sleep 1
done
printlog "Out of Setup Assistant."
while [ "$(pgrep -l "Finder")" = "" ]; do
printlog "Finder process not found. Assuming device is at login screen. PID $finderProcess"
sleep 1
done
printlog "Finder is running…"
currentUser=$(stat -f "%Su" /dev/console)
currentUserID=$(id -u "$currentUser")
printlog "Logged in user is $currentUser with ID $currentUserID"
# set icon based on whether computer is a desktop or laptop
#hwType=$(system_profiler SPHardwareDataType | grep "Model Identifier" | grep "Book" || true)
#if [ "$hwType" != "" ]; then
# LOGO_PATH="SF=laptopcomputer.and.arrow.down,weight=thin,colour1=#51a3ef,colour2=#5154ef"
#else
# LOGO_PATH="SF=desktopcomputer.and.arrow.down,weight=thin,colour1=#51a3ef,colour2=#5154ef"
#fi
dialogCMD="$dialogApp -p --title \"$title\" \
--message \"$message\" \
--icon \"$LOGO_PATH\" \
--progress $progress_total \
--button1text \"Please Wait\" \
--button1disabled"
# create the list of apps
listitems=""
for app in "${apps[@]}"; do
listitems="$listitems --listitem '$(echo "$app" | cut -d ',' -f1)'"
done
# final command to execute
dialogCMD="$dialogCMD $listitems"
printlog "$dialogCMD"
# Launch dialog and run it in the background sleep for a second to let thing initialise
printlog "About to launch Dialog."
eval "$dialogCMD" &
sleep 2
(for app in "${apps[@]}"; do
#step_progress=$(( 1 + progress_index ))
#dialog_command "progress: $step_progress"
sleep 0.5
appCheck &
done
wait)
# Mark: Finishing
# Prevent re-run of script if conditionFile is set
if [[ ! -z "$conditionFile" ]]; then
printlog "Touching condition file so script will not run again"
touch "$conditionFile" || true
printlog "$(ls -al "$conditionFile" || true)"
fi
# all done. close off processing and enable the "Done" button
printlog "Finalizing."
dialog_command "progresstext: $endMessage"
dialog_command "progress: complete"
dialog_command "button1text: Done"
dialog_command "button1: enable"
if [[ $displayEndMessageDialog -eq 1 ]]; then
message="$endMessage"
displayDialog &
fi
sleep 1
printlog $(rm -fv $dialog_command_file || true)
printlog $(rm -fv $counterFile || true)
printlog "Ending"

83
MDM/README.md Normal file
View File

@@ -0,0 +1,83 @@
# Scripts for use with MDM
These example scripts are meant for use with MDM to run __Installomator__ and process installs. Examples are also included which use swiftDialog to provide user feedback and dockutil to add app icons to the dock.
There are basically two ways to use Installomator with MDM. The _“Jamf way”_ is where, through the MDM admin interface, your upload the Installomator script to a policy, and you provide additional parameters in the policy configuration like which app to install. The _“other way”_ to use Installomator is by having the MDM install Installomator locally on the computer, just once, and then on subsequent runs the MDM runs a script which calls Installomator and provides the parameters.
Examples of MDMs which use the “other way” are Mosyle Manager/Mosyle Business, Addigy, and Microsoft Endpoint Manager (Intune).
The scripts utilizing __swiftDialog__ require version 10 of __Installomator__. If Installomator version 9 is installed, it will set `NOTIFY=all` and use the traditional __Installomator__ notifications for showing progress, where as on version 10 it will be `NOTIFY=silent` as __swiftDialog__ is used instead.
## Abbreviations used in script names
- SS — Self Service — scripts designed for use through a Self Service catalog
- VFA — valuesfromarguments — a custom label call to Installomator. When using an MDM and the "other way", you can use these scripts to provide the label variables to Installomator for custom labels.
## Condition scripts
Scripts with the `condition` suffix are for use with MDMs like Addigy, where a script is run to determine if the rest of the policy should run.
## Prevention scripts
The `Installomator 1st` and `Progress 1st` scripts are meant to run automatically upon device enrollment. They check for the existance of a file, `/var/db/.Installomator1stDone`, to determine whether the computer has already been deployed. You can run the prevention scripts on existing Macs to ensure the 1st scripts won't inadvertently run on them.
## "Jamf" folder
This folder has Jamf specific examples using __swiftDialog__ as part of the Installomator installation. Perfect for use with Jamf Self Service. Separate [ReadMe-file](Jamf/ReadMe.md) in this folder.
# Scripts to install prerequisites
Use these scripts to handle installing Installomator itself. Additionally, you may want to install swiftDialog manually instead of having Installomator install it.
- `install Installomator direct.sh` — can be run at enrollment and as maintenance at any time to install __Installomator__.
- `install swiftDialog direct.sh` — can be used at enrollment and as maintenance at any time to install __swiftDialog__.
Once Installomator has been installed, __dockutil__ can be installed by Installomator, using this script:
- `App-install/App service Auto-install.sh` — This script uses pre-installed installomator to install __dockutil__.
# Enrollment scripts
For enrollment purposes, some 1st-scripts has been created. One runs silently, another is using __DEPNotify__ to show progress and feedback:
- `Installomator 1st Auto-install DEPNotify.sh` — will install __DEPNotify__ first, start that up, and change progress on the installation bar at each installed label. Very good for Addigy an Microsoft.
- `Installomator 1st Auto-install.sh` — runnning silently installing Installomator labels in the given order. Can be used in combination with the Progress-script.
- `Progress 1st swiftDialog.sh` — It will install __swiftDialog__ and start that up with a list of software it will look for. It will look for an installed file/folder in the file system for each item. This is great if some apps are being installed outside of Installomator, like by Apple Apps & Books, and then this script can show when it has been installed.
There are also Self Service versions of the above.
## “App-install”-folder
- App browser-security Auto-install.sh
- App browser-security SS.sh
- App normal Auto-install.sh
- App normal SS.sh
- App service Auto-install.sh
- App VFA.sh
Here you can use scripts for Self Service (SS) or for Auto-install. There will be a difference in how many notifications will be used and maybe handling of blocking processes.
`browser-security`: For an app like a web browser, youll want the install performed right away, so there isnt a deferral option.
`normal`: The user can defer/skip the update.
`service`: These are apps where we dont need to ask the user to allow the update. Menu bar apps and utilities would fall under this category.
## “App-install SS with swiftDialog and dockutil”-folder
- App browser-security SS.sh
- App normal SS multi-app.sh
- App normal SS.sh
- App service SS.sh
- App VFA SS github.sh
- App VFA SS.sh
These scripts are similar to the App-install folder but also utilize __swiftDialog__ to show user feedback and installation status, and they also have an option to use __dockutil__ to add the installed software to the Dock.
# App-update
A common requested behavior is to only update an app if it is already installed. These script verifies if the app is already installed before runnning Installomator.
- App browser-security Auto-install.sh
- App normal Auto-install.sh

View File

@@ -0,0 +1,17 @@
#!/bin/sh
# Mark: Addigy Condition
# Install on success
gitusername="Installomator"
gitreponame="Installomator"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
destFile="/usr/local/Installomator/Installomator.sh"
if [[ ! -e "${destFile}" || "$(${destFile} version)" != "$appNewVersion" ]]; then
#echo "Let's install…"
exit 0
else
#echo "No need!"
exit 1
fi

View File

@@ -0,0 +1,150 @@
#!/bin/sh
######################################################################
# Installation of Installomator
#
# No customization below…
######################################################################
# This script can be used to install Installomator directly from GitHub.
######################################################################
#
# This script made by Søren Theilgaard
# https://github.com/Theile
# Twitter and MacAdmins Slack: @theilgaard
#
# Some functions and code from Installomator:
# https://github.com/Installomator/Installomator
#
######################################################################
scriptVersion="9.6"
# v. 9.6 : 2022-11-15 : GitHub API call is first, only try alternative if that fails.
# v. 9.5 : 2022-09-21 : change of GitHub download
# v. 9.4 : 2022-09-14 : downloadURL can fall back on GitHub API
# v. 9.3 : 2022-08-29 : Logging changed for current version. Improved installation with looping if it fails, so it can try again. Improved GitHub handling.
# v. 9.2.2 : 2022-06-17 : Check 1.1.1.1 for internet connection.
# v. 9.2 : 2022-05-19 : Built in installer for Installlomator. Universal script.
######################################################################
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Mark: Constants, logging and caffeinate
log_message="Installomator install, v$scriptVersion"
label="Inst-v$scriptVersion"
log_location="/private/var/log/Installomator.log"
printlog(){
timestamp=$(date +%F\ %T)
if [[ "$(whoami)" == "root" ]]; then
echo "$timestamp :: $label : $1" | tee -a $log_location
else
echo "$timestamp :: $label : $1"
fi
}
printlog "[LOG-BEGIN] ${log_message}"
# Internet check
if [[ "$(nc -z -v -G 10 1.1.1.1 53 2>&1 | grep -io "succeeded")" != "succeeded" ]]; then
printlog "ERROR. No internet connection, we cannot continue."
exit 90
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid" || true
pkill caffeinate || true
printlog "[LOG-END] Status $1"
exit $1
}
name="Installomator"
printlog "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg with destFile
gitusername="Installomator"
gitreponame="Installomator"
#printlog "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#printlog "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#printlog "$appNewVersion"
expectedTeamID="JME5BW3F3R"
destFile="/usr/local/Installomator/Installomator.sh"
currentInstalledVersion="$(${destFile} version 2>/dev/null || true)"
printlog "${destFile} version: $currentInstalledVersion"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
printlog "$name not found or version not latest."
printlog "${destFile}"
printlog "Installing version ${appNewVersion} ..."
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
printlog "Created working directory '$tmpDir'"
# Download the installer package
printlog "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
printlog "error downloading $downloadURL, with status $curlDownloadStatus"
printlog "${curlDownload}"
exitCode=1
else
printlog "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
printlog "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
printlog "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
printlog "ERROR. $name package installation failed."
printlog "${pkgInstall}"
exitCode=2
else
printlog "Installing $name package succes."
exitCode=0
fi
else
printlog "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
printlog "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
printlog "Sleep a bit before trying download and install again. $installationCount time(s)."
printlog "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
printlog "Download and install of $name succes."
fi
done
# Remove the temporary working directory
printlog "Deleting working directory '$tmpDir' and its contents."
printlog "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
printlog "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
printlog "$name version $appNewVersion installed!"
fi
else
printlog "$name version $appNewVersion already found. Perfect!"
fi
caffexit 0

View File

@@ -0,0 +1,20 @@
#!/bin/sh
# Mark: Addigy Condition
# Install on success
gitusername="bartreardon"
gitreponame="swiftDialog"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
destFile="/Library/Application Support/Dialog/Dialog.app"
versionKey="CFBundleShortVersionString" #CFBundleVersion
currentInstalledVersion="$(defaults read "${destFile}/Contents/Info.plist" $versionKey || true)"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
#echo "Let's install…"
exit 0
else
#echo "No need!"
exit 1
fi

152
MDM/install swiftDialog direct.sh Executable file
View File

@@ -0,0 +1,152 @@
#!/bin/sh
######################################################################
# Installation of swiftDialog
#
# No customization below…
######################################################################
# This script can be used to install swiftDialog directly from GitHub.
######################################################################
#
# This script made by Søren Theilgaard
# https://github.com/Theile
# Twitter and MacAdmins Slack: @theilgaard
#
# Some functions and code from Installomator:
# https://github.com/Installomator/Installomator
#
######################################################################
scriptVersion="9.6"
# v. 9.6 : 2022-11-15 : GitHub API call is first, only try alternative if that fails.
# v. 9.5 : 2022-09-21 : change of GitHub download
# v. 9.4 : 2022-09-14 : downloadURL can fall back on GitHub API.
# v. 9.3 : 2022-08-29 : Logging changed for current version. Improved installation with looping if it fails, so it can try again. Improved GitHub handling.
# v. 9.2.2 : 2022-06-17 : Check 1.1.1.1 for internet connection.
# v. 9.2 : 2022-05-19 : Built in installer for Installlomator. Universal script.
######################################################################
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Mark: Constants, logging and caffeinate
log_message="Dialog install, v$scriptVersion"
label="Dialog-v$scriptVersion"
log_location="/private/var/log/Installomator.log"
printlog(){
timestamp=$(date +%F\ %T)
if [[ "$(whoami)" == "root" ]]; then
echo "$timestamp :: $label : $1" | tee -a $log_location
else
echo "$timestamp :: $label : $1"
fi
}
printlog "[LOG-BEGIN] ${log_message}"
# Internet check
if [[ "$(nc -z -v -G 10 1.1.1.1 53 2>&1 | grep -io "succeeded")" != "succeeded" ]]; then
printlog "ERROR. No internet connection, we cannot continue."
exit 90
fi
# No sleeping
/usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$!
caffexit () {
kill "$caffeinatepid" || true
pkill caffeinate || true
printlog "[LOG-END] Status $1"
exit $1
}
name="Dialog"
printlog "$name check for installation"
# download URL, version and Expected Team ID
# Method for GitHub pkg w. app version check
gitusername="bartreardon"
gitreponame="swiftDialog"
#printlog "$gitusername $gitreponame"
filetype="pkg"
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API failed, trying failover."
#downloadURL="https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
#printlog "$downloadURL"
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
#printlog "$appNewVersion"
expectedTeamID="PWA5E9TQ59"
destFile="/Library/Application Support/Dialog/Dialog.app"
versionKey="CFBundleShortVersionString" #CFBundleVersion
currentInstalledVersion="$(defaults read "${destFile}/Contents/Info.plist" $versionKey || true)"
printlog "${name} version: $currentInstalledVersion"
destFile="/usr/local/bin/dialog"
if [[ ! -e "${destFile}" || "$currentInstalledVersion" != "$appNewVersion" ]]; then
printlog "$name not found or version not latest."
printlog "${destFile}"
printlog "Installing version ${appNewVersion}"
# Create temporary working directory
tmpDir="$(mktemp -d || true)"
printlog "Created working directory '$tmpDir'"
# Download the installer package
printlog "Downloading $name package version $appNewVersion from: $downloadURL"
installationCount=0
exitCode=9
while [[ $installationCount -lt 3 && $exitCode -gt 0 ]]; do
curlDownload=$(curl -Ls "$downloadURL" -o "$tmpDir/$name.pkg" || true)
curlDownloadStatus=$(echo $?)
if [[ $curlDownloadStatus -ne 0 ]]; then
printlog "error downloading $downloadURL, with status $curlDownloadStatus"
printlog "${curlDownload}"
exitCode=1
else
printlog "Download $name succes."
# Verify the download
teamID=$(spctl -a -vv -t install "$tmpDir/$name.pkg" 2>&1 | awk '/origin=/ {print $NF }' | tr -d '()' || true)
printlog "Team ID for downloaded package: $teamID"
# Install the package if Team ID validates
if [ "$expectedTeamID" = "$teamID" ] || [ "$expectedTeamID" = "" ]; then
printlog "$name package verified. Installing package '$tmpDir/$name.pkg'."
pkgInstall=$(installer -verbose -dumplog -pkg "$tmpDir/$name.pkg" -target "/" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $pkgInstallStatus -ne 0 ]]; then
printlog "ERROR. $name package installation failed."
printlog "${pkgInstall}"
exitCode=2
else
printlog "Installing $name package succes."
exitCode=0
fi
else
printlog "ERROR. Package verification failed for $name before package installation could start. Download link may be invalid."
exitCode=3
fi
fi
((installationCount++))
printlog "$installationCount time(s), exitCode $exitCode"
if [[ $installationCount -lt 3 ]]; then
if [[ $exitCode -gt 0 ]]; then
printlog "Sleep a bit before trying download and install again. $installationCount time(s)."
printlog "Remove $(rm -fv "$tmpDir/$name.pkg" || true)"
sleep 2
fi
else
printlog "Download and install of $name succes."
fi
done
# Remove the temporary working directory
printlog "Deleting working directory '$tmpDir' and its contents."
printlog "Remove $(rm -Rfv "${tmpDir}" || true)"
# Handle installation errors
if [[ $exitCode != 0 ]]; then
printlog "ERROR. Installation of $name failed. Aborting."
caffexit $exitCode
else
printlog "$name version $appNewVersion installed!"
fi
else
printlog "$name version $appNewVersion already found. Perfect!"
fi
caffexit 0

151
MDM/swiftdialog_example.sh Executable file
View File

@@ -0,0 +1,151 @@
#!/bin/zsh
# runs through a list of Installomator items
# and displays status using Swift Dialog
#
# dependencies:
# - Swift Dialog: https://github.com/bartreardon/swiftDialog
# - Installomator: https://github.com/Installomator/Installomator
# this script will install both if they are not yet present
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# MARK: Variables
# set to 1 to not require root and not actually do any changes
# set to 0 for production
if [[ $1 == "NODEBUG" ]]; then
DEBUG=0
else
DEBUG=1
fi
# the label to install:
label="googlechromepkg"
# MARK: Constants
scriptDir=$(dirname ${0:A})
repoDir=$(dirname $scriptDir)
# if [[ $DEBUG -eq 1 ]]; then
installomator="$repoDir/utils/assemble.sh"
# else
# installomator="/usr/local/Installomator/Installomator.sh"
# fi
dialog="/usr/local/bin/dialog"
if [[ DEBUG -eq 0 ]]; then
dialog_command_file="/var/tmp/dialog.log"
else
dialog_command_file="$HOME/dialog.log"
fi
# MARK: Functions
dialogUpdate() {
# $1: dialog command
local dcommand=$1
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> $dialog_command_file
echo "Dialog: $dcommand"
fi
}
progressUpdate() {
# $1: progress text (optional)
local text=$1
itemCounter=$((itemCounter + 1))
dialogUpdate "progress: $itemCounter"
if [[ -n $text ]]; then
dialogUpdate "progresstext: $text"
fi
}
startItem() {
local description=$1
echo "Starting Item: $description"
dialogUpdate "listitem: $description: wait"
progressUpdate $description
}
cleanupAndExit() {
# kill caffeinate process
if [[ -n $caffeinatePID ]]; then
echo "killing caffeinate..."
kill $caffeinatePID
fi
# clean up tmp dir
if [[ -n $tmpDir && -d $tmpDir ]]; then
echo "removing tmpDir $tmpDir"
rm -rf $tmpDir
fi
}
# MARK: sanity checks
# check minimal macOS requirement
if [[ $(sw_vers -buildVersion ) < "20" ]]; then
echo "This script requires at least macOS 11 Big Sur."
exit 98
fi
# check we are running as root
if [[ $DEBUG -eq 0 && $(id -u) -ne 0 ]]; then
echo "This script should be run as root"
exit 97
fi
# check for installomator
if [[ ! -x $installomator ]]; then
echo "Cannot find Installomator at $installomator"
exit 96
fi
# check for Swift Dialog
if [[ ! -x $dialog ]]; then
echo "Cannot find dialog at $dialog"
exit 95
fi
# MARK: Setup
# No sleeping
caffeinate -dimsu & caffeinatePID=$!
# trap exit for cleanup
trap cleanupAndExit EXIT
# display first screen
$dialog --title "Installing $label" \
--message "" \
--hideicon \
--mini \
--progress 100 \
--position bottomright \
--ontop \
--movable \
--commandfile $dialog_command_file & dialogPID=$!
sleep 0.1
$installomator $label \
DIALOG_CMD_FILE="$dialog_command_file" \
DEBUG=$DEBUG
# clean up UI
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Done"
sleep 0.5
dialogUpdate "quit:"

185
MDM/swiftdialog_list.sh Executable file
View File

@@ -0,0 +1,185 @@
#!/bin/zsh
# runs through a list of Installomator items
# and displays status using Swift Dialog
#
# dependencies:
# - Swift Dialog: https://github.com/bartreardon/swiftDialog
# - Installomator: https://github.com/Installomator/Installomator
# this script will install both if they are not yet present
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# MARK: Variables
# set to 1 to not require root and not actually do any changes
# set to 0 for production
if [[ $1 == "NODEBUG" ]]; then
DEBUG=0
else
DEBUG=1
fi
# list of Installomator labels
items=(
"firefoxpkg|Firefox"
"error|Expected Error"
"googlechromepkg|Google Chrome"
)
# MARK: Constants
scriptDir=$(dirname ${0:A})
repoDir=$(dirname $scriptDir)
# if [[ $DEBUG -eq 1 ]]; then
installomator="$repoDir/utils/assemble.sh"
# else
# installomator="/usr/local/Installomator/Installomator.sh"
# fi
dialog="/usr/local/bin/dialog"
if [[ DEBUG -eq 0 ]]; then
dialog_command_file="/var/tmp/dialog.log"
else
dialog_command_file="$HOME/dialog.log"
fi
# MARK: Functions
dialogUpdate() {
# $1: dialog command
local dcommand=$1
if [[ -n $dialog_command_file ]]; then
echo "$dcommand" >> $dialog_command_file
echo "Dialog: $dcommand"
fi
}
progressUpdate() {
# $1: progress text (optional)
local text=$1
itemCounter=$((itemCounter + 1))
dialogUpdate "progress: $itemCounter"
if [[ -n $text ]]; then
dialogUpdate "progresstext: $text"
fi
}
startItem() {
local description=$1
echo "Starting Item: $description"
dialogUpdate "listitem: $description: wait"
progressUpdate $description
}
installomator() {
# $1: label
# $2: description
local label=$1
local description=$2
$installomator $label \
DIALOG_CMD_FILE=${(q)dialog_command_file} \
DIALOG_LIST_ITEM_NAME=${(q)description} \
DEBUG=$DEBUG \
LOGGING=DEBUG
}
cleanupAndExit() {
# kill caffeinate process
if [[ -n $caffeinatePID ]]; then
echo "killing caffeinate..."
kill $caffeinatePID
fi
# clean up tmp dir
if [[ -n $tmpDir && -d $tmpDir ]]; then
echo "removing tmpDir $tmpDir"
rm -rf $tmpDir
fi
}
# MARK: sanity checks
# check minimal macOS requirement
if [[ $(sw_vers -buildVersion ) < "20" ]]; then
echo "This script requires at least macOS 11 Big Sur."
exit 98
fi
# check we are running as root
if [[ $DEBUG -eq 0 && $(id -u) -ne 0 ]]; then
echo "This script should be run as root"
exit 97
fi
# check for installomator
if [[ ! -x $installomator ]]; then
echo "Cannot find Installomator at $installomator"
exit 96
fi
# check for Swift Dialog
if [[ ! -x $dialog ]]; then
echo "Cannot find dialog at $dialog"
exit 95
fi
# MARK: Setup
# No sleeping
caffeinate -dimsu & caffeinatePID=$!
# trap exit for cleanup
trap cleanupAndExit EXIT
# setup first list
itemCount=$((${#items} + 1))
listitems=( )
for item in $items; do
label=$(cut -d '|' -f 1 <<< $item)
description=$(cut -d '|' -f 2 <<< $item)
listitems+=( "--listitem" ${description} )
done
# display first screen
$dialog --title "More Software" \
--icon "SF=gear" \
--message "We are downloading and installing some extra Apps..." \
--progress $itemCount \
"${listitems[@]}" \
--button1disabled \
--big \
--ontop \
--liststyle compact \
--width 700 \
--commandfile $dialog_command_file & dialogPID=$!
sleep 0.1
itemCounter=0
for item in $items; do
label=$(cut -d '|' -f 1 <<< $item)
description=$(cut -d '|' -f 2 <<< $item)
startItem $description
installomator $label $description
done
# clean up UI
dialogUpdate "progress: complete"
dialogUpdate "progresstext: Finished"
dialogUpdate "button1: enable"
dialogUpdate "button1text: Done"

View File

@@ -1,3 +1,7 @@
# Note: The main repo is a beta version
Please locate “Releases” on the right, and download the latest 9.2 release (either pkg or zip) for a supported release.
# Installomator
_The one installer script to rule them all._
@@ -93,7 +97,7 @@ At some point, in 2018, Armin got frustrated at the number of scripts he was mai
So Armin made the version for Jamf Pro but universally for any MDM to adopt.
Søren looked at this, and wanted this approach to work in Mosyle and Addigy, and for these solutions we need Installomator to be locally installed on. the Mac, and then the MDM can call this script from their scripts features. For some time Søren had a version of Installomator that was supplied with a notarized pkg, so it could be deployed as part of DEP or however was needed.
Søren looked at this, and wanted this approach to work in Mosyle and Addigy, and for these solutions we need Installomator to be locally installed on the Mac, and then the MDM can call this script from their scripts features. For some time Søren had a version of Installomator that was supplied with a notarized pkg, so it could be deployed as part of DEP or however was needed.
This has now been merged into Installomator, and with contributions of Isaac and Adam, new features and labels have been added more frequently.

View File

@@ -7,6 +7,7 @@ if ! is-at-least 10.14 $installedOSversion; then
exit 98
fi
# MARK: argument parsing
if [[ $# -eq 0 ]]; then
if [[ -z $label ]]; then # check if label is set inside script
@@ -24,7 +25,7 @@ fi
while [[ -n $1 ]]; do
if [[ $1 =~ ".*\=.*" ]]; then
# if an argument contains an = character, send it to eval
printlog "setting variable from argument $1" WARN
printlog "setting variable from argument $1" INFO
eval $1
else
# assume it's a label
@@ -99,6 +100,16 @@ if [[ "$(whoami)" != "root" && "$DEBUG" -eq 0 ]]; then
cleanupAndExit 6 "not running as root, exiting" ERROR
fi
# check Swift Dialog presence and version
DIALOG_CMD="/usr/local/bin/dialog"
if [[ ! -x $DIALOG_CMD ]]; then
# Swift Dialog is not installed, clear cmd file variable to ignore
printlog "SwiftDialog is not installed, clear cmd file var"
DIALOG_CMD_FILE=""
fi
# MARK: labels in case statement
case $label in
longversion)

View File

@@ -1,6 +1,7 @@
wickrme)
# credit: Søren Theilgaard (@theilgaard)
# Label not working, haven't found a solution
name="WickrMe"
printlog "Label for $name broken in test" WARN
type="dmg"
downloadURL=$( curl -fs https://me-download.wickr.com/api/download/me/download/mac | tr '"' '\n' | grep -e '^https://' )
appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )

View File

@@ -1,6 +1,7 @@
wickrpro)
# credit: Søren Theilgaard (@theilgaard)
# Label not working, haven't found a solution
name="WickrPro"
printlog "Label for $name broken in test" WARN
type="dmg"
downloadURL=$( curl -fs https://me-download.wickr.com/api/download/pro/download/mac | tr '"' '\n' | grep -e '^https://' )
appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )

View File

@@ -14,15 +14,18 @@ cleanupAndExit() { # $1 = exit code, $2 message, $3 level
printlog "Debugging enabled, Deleting tmpDir output was:\n$deleteTmpOut" DEBUG
fi
# If we closed any processes, reopen the app again
reopenClosedProcess
if [[ -n $2 && $1 -ne 0 ]]; then
printlog "ERROR: $2" $3
updateDialog "fail" "Error ($1; $2)"
else
printlog "$2" $3
updateDialog "success" ""
fi
printlog "################## End Installomator, exit code $1 \n" REQ
# if label is wrong and we wanted name of the label, then return ##################
if [[ $RETURN_LABEL_NAME -eq 1 ]]; then
1=0 # If only label name should be returned we exit without any errors
@@ -61,9 +64,12 @@ displaynotification() { # $1: message $2: title
message=${1:-"Message"}
title=${2:-"Notification"}
manageaction="/Library/Application Support/JAMF/bin/Management Action.app/Contents/MacOS/Management Action"
hubcli="/usr/local/bin/hubcli"
if [[ -x "$manageaction" ]]; then
"$manageaction" -message "$message" -title "$title"
elif [[ -x "$hubcli" ]]; then
"$hubcli" notify -t "$title" -i "$message" -c "Dismiss"
else
runAsUser osascript -e "display notification \"$message\" with title \"$title\""
fi
@@ -156,14 +162,22 @@ downloadURLFromGit() { # $1 git user name, $2 git repo name
fi
if [ -n "$archiveName" ]; then
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
| awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*$archiveName")" == "" ]]; then
printlog "GitHub API not returning URL, trying https://github.com/$gitusername/$gitreponame/releases/latest."
#downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*$archiveName" | head -1)
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*$archiveName" | head -1)"
fi
else
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
| awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then
printlog "GitHub API not returning URL, trying https://github.com/$gitusername/$gitreponame/releases/latest."
#downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)
downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)"
fi
fi
if [ -z "$downloadURL" ]; then
cleanupAndExit 9 "could not retrieve download URL for $gitusername/$gitreponame" ERROR
cleanupAndExit 14 "could not retrieve download URL for $gitusername/$gitreponame" ERROR
else
echo "$downloadURL"
return 0
@@ -176,7 +190,8 @@ versionFromGit() {
gitusername=${1?:"no git user name"}
gitreponame=${2?:"no git repo name"}
appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
#appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
if [ -z "$appNewVersion" ]; then
printlog "could not retrieve version number for $gitusername/$gitreponame" WARN
appNewVersion=""
@@ -199,6 +214,16 @@ xpath() {
fi
}
# from @Pico: https://macadmins.slack.com/archives/CGXNNJXJ9/p1652222365989229?thread_ts=1651786411.413349&cid=CGXNNJXJ9
getJSONValue() {
# $1: JSON string OR file path to parse (tested to work with up to 1GB string and 2GB file).
# $2: JSON key path to look up (using dot or bracket notation).
printf '%s' "$1" | /usr/bin/osascript -l 'JavaScript' \
-e "let json = $.NSString.alloc.initWithDataEncoding($.NSFileHandle.fileHandleWithStandardInput.readDataToEndOfFile$(/usr/bin/uname -r | /usr/bin/awk -F '.' '($1 > 18) { print "AndReturnError(ObjC.wrap())" }'), $.NSUTF8StringEncoding)" \
-e 'if ($.NSFileManager.defaultManager.fileExistsAtPath(json)) json = $.NSString.stringWithContentsOfFileEncodingError(json, $.NSUTF8StringEncoding, ObjC.wrap())' \
-e "const value = JSON.parse(json.js)$([ -n "${2%%[.[]*}" ] && echo '.')$2" \
-e 'if (typeof value === "object") { JSON.stringify(value, null, 4) } else { value }'
}
getAppVersion() {
# modified by: Søren Theilgaard (@theilgaard) and Isaac Ordonez
@@ -268,7 +293,11 @@ getAppVersion() {
printlog "Replacing App Store apps, no matter the version" WARN
appversion=0
else
cleanupAndExit 1 "App previously installed from App Store, and we respect that" ERROR
if [[ $DIALOG_CMD_FILE != "" ]]; then
updateDialog "wait" "Already installed from App Store. Not replaced."
sleep 4
fi
cleanupAndExit 23 "App previously installed from App Store, and we respect that" ERROR
fi
fi
else
@@ -417,6 +446,7 @@ installAppWithPath() { # $1: path to app to install in $targetDir
# verify with spctl
printlog "Verifying: $appPath" INFO
updateDialog "wait" "Verifying..."
printlog "App size: $(du -sh "$appPath")" DEBUG
appVerify=$(spctl -a -vv "$appPath" 2>&1 )
appVerifyStatus=$(echo $?)
@@ -444,6 +474,10 @@ installAppWithPath() { # $1: path to app to install in $targetDir
printlog "notifying"
displaynotification "$message" "No update for $name!"
fi
if [[ $DIALOG_CMD_FILE != "" ]]; then
updateDialog "wait" "Latest version already installed..."
sleep 2
fi
cleanupAndExit 0 "No new version to install" REG
else
printlog "Using force to install anyway."
@@ -465,7 +499,7 @@ installAppWithPath() { # $1: path to app to install in $targetDir
printlog "notifying"
displaynotification "$message" "Error updating $name!"
fi
cleanupAndExit 6 "Installed macOS is too old for this app." ERROR
cleanupAndExit 15 "Installed macOS is too old for this app." ERROR
fi
fi
@@ -524,7 +558,7 @@ installAppWithPath() { # $1: path to app to install in $targetDir
deduplicatelogs "$CLIoutput"
if [ $CLIstatus -ne 0 ] ; then
cleanupAndExit 3 "Error installing $mountname/$CLIInstaller $CLIArguments error:\n$logoutput" ERROR
cleanupAndExit 16 "Error installing $mountname/$CLIInstaller $CLIArguments error:\n$logoutput" ERROR
else
printlog "Succesfully ran $mountname/$CLIInstaller $CLIArguments" INFO
fi
@@ -562,6 +596,7 @@ installFromDMG() {
installFromPKG() {
# verify with spctl
printlog "Verifying: $archiveName"
updateDialog "wait" "Verifying..."
printlog "File list: $(ls -lh "$archiveName")" DEBUG
printlog "File type: $(file "$archiveName")" DEBUG
spctlOut=$(spctl -a -vv -t install "$archiveName" 2>&1 )
@@ -609,6 +644,10 @@ installFromPKG() {
printlog "notifying"
displaynotification "$message" "No update for $name!"
fi
if [[ $DIALOG_CMD_FILE != "" ]]; then
updateDialog "wait" "Latest version already installed..."
sleep 2
fi
cleanupAndExit 0 "No new version to install" REQ
else
printlog "Using force to install anyway."
@@ -629,8 +668,29 @@ installFromPKG() {
# install pkg
printlog "Installing $archiveName to $targetDir"
pkgInstall=$(installer -verbose -dumplog -pkg "$archiveName" -tgt "$targetDir" 2>&1)
pkgInstallStatus=$(echo $?)
if [[ $DIALOG_CMD_FILE != "" ]]; then
# pipe
pipe="$tmpDir/installpipe"
# initialise named pipe for installer output
initNamedPipe create $pipe
# run the pipe read in the background
readPKGInstallPipe $pipe "$DIALOG_CMD_FILE" & installPipePID=$!
printlog "listening to output of installer with pipe $pipe and command file $DIALOG_CMD_FILE on PID $installPipePID" DEBUG
pkgInstall=$(installer -verboseR -pkg "$archiveName" -tgt "$targetDir" 2>&1 | tee $pipe)
pkgInstallStatus=$pipestatus[1]
# because we are tee-ing the output, we want the pipe status of the first command in the chain, not the most recent one
killProcess $installPipePID
else
pkgInstall=$(installer -verbose -dumplog -pkg "$archiveName" -tgt "$targetDir" 2>&1)
pkgInstallStatus=$(echo $?)
fi
sleep 1
pkgEndTime=$(date "+$LogDateFormat")
pkgInstall+=$(echo "\nOutput of /var/log/install.log below this line.\n")
@@ -722,7 +782,7 @@ installPkgInZip() {
printlog "Found pkg(s):\n$findfiles" DEBUG
filearray=( ${(f)findfiles} )
if [[ ${#filearray} -eq 0 ]]; then
cleanupAndExit 20 "couldn't find pkg in zip $archiveName" ERROR
cleanupAndExit 21 "couldn't find pkg in zip $archiveName" ERROR
fi
# it is now safe to overwrite archiveName for installFromPKG
archiveName="${filearray[1]}"
@@ -735,7 +795,7 @@ installPkgInZip() {
findfiles=$(find "$tmpDir" -iname "$pkgName")
filearray=( ${(f)findfiles} )
if [[ ${#filearray} -eq 0 ]]; then
cleanupAndExit 20 "couldn't find pkg “$pkgName” in zip $archiveName" ERROR
cleanupAndExit 21 "couldn't find pkg “$pkgName” in zip $archiveName" ERROR
fi
# it is now safe to overwrite archiveName for installFromPKG
archiveName="${filearray[1]}"
@@ -758,7 +818,7 @@ installAppInDmgInZip() {
findfiles=$(find "$tmpDir" -iname "*.dmg" -maxdepth 2 )
filearray=( ${(f)findfiles} )
if [[ ${#filearray} -eq 0 ]]; then
cleanupAndExit 20 "couldn't find dmg in zip $archiveName" ERROR
cleanupAndExit 22 "couldn't find dmg in zip $archiveName" ERROR
fi
archiveName="$(basename ${filearray[1]})"
# it is now safe to overwrite archiveName for installFromDMG
@@ -810,7 +870,8 @@ runUpdateTool() {
finishing() {
printlog "Finishing..."
sleep 10 # wait a moment to let spotlight catch up
sleep 3 # wait a moment to let spotlight catch up
getAppVersion
if [[ -z $appversion ]]; then
@@ -858,3 +919,113 @@ hasDisplaySleepAssertion() {
return 1
}
initNamedPipe() {
# create or delete a named pipe
# commands are "create" or "delete"
local cmd=$1
local pipe=$2
case $cmd in
"create")
if [[ -e $pipe ]]; then
rm $pipe
fi
# make named pipe
mkfifo -m 644 $pipe
;;
"delete")
# clean up
rm $pipe
;;
*)
;;
esac
}
readDownloadPipe() {
# reads from a previously created named pipe
# output from curl with --progress-bar. % downloaded is read in and then sent to the specified log file
local pipe=$1
local log=${2:-$DIALOG_CMD_FILE}
# set up read from pipe
while IFS= read -k 1 -u 0 char; do
if [[ $char =~ [0-9] ]]; then
keep=1
fi
if [[ $char == % ]]; then
updateDialog $progress "Downloading..."
progress=""
keep=0
fi
if [[ $keep == 1 ]]; then
progress="$progress$char"
fi
done < $pipe
}
readPKGInstallPipe() {
# reads from a previously created named pipe
# output from installer with -verboseR. % install status is read in and then sent to the specified log file
local pipe=$1
local log=${2:-$DIALOG_CMD_FILE}
local appname=${3:-$name}
while read -k 1 -u 0 char; do
if [[ $char == % ]]; then
keep=1
fi
if [[ $char =~ [0-9] && $keep == 1 ]]; then
progress="$progress$char"
fi
if [[ $char == . && $keep == 1 ]]; then
updateDialog $progress "Installing..."
progress=""
keep=0
fi
done < $pipe
}
killProcess() {
# will silently kill the specified PID
builtin kill $1 2>/dev/null
}
updateDialog() {
local state=$1
local message=$2
local listitem=${3:-$DIALOG_LIST_ITEM_NAME}
local cmd_file=${4:-$DIALOG_CMD_FILE}
local progress=""
if [[ $state =~ '^[0-9]' \
|| $state == "reset" \
|| $state == "increment" \
|| $state == "complete" \
|| $state == "indeterminate" ]]; then
progress=$state
fi
# when to cmdfile is set, do nothing
if [[ $cmd_file == "" ]]; then
return
fi
if [[ $listitem == "" ]]; then
# no listitem set, update main progress bar and progress text
if [[ $progress != "" ]]; then
echo "progress: $progress" >> $cmd_file
fi
if [[ $message != "" ]]; then
echo "progresstext: $message" >> $cmd_file
fi
else
# list item has a value, so we update the progress and text in the list
if [[ $progress != "" ]]; then
echo "listitem: title: $listitem, statustext: $message, progress: $progress" >> $cmd_file
else
echo "listitem: title: $listitem, statustext: $message, status: $state" >> $cmd_file
fi
fi
}

View File

@@ -7,7 +7,7 @@ label="" # if no label is sent to the script, this will be used
# 2020-2021 Installomator
#
# inspired by the download scripts from William Smith and Sander Schram
#
#
# Contributers:
# Armin Briegel - @scriptingosx
# Isaac Ordonez - @issacatmann
@@ -23,7 +23,7 @@ export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# set to 0 for production, 1 or 2 for debugging
# while debugging, items will be downloaded to the parent directory of this script
# also no actual installation will be performed
# debug mode 1 will download to the directory the script is run in, but will not check the version
# debug mode 1 will download to the directory the script is run in, but will not check the version
# debug mode 2 will download to the temp directory, check for blocking processes, check the version, but will not install anything or remove the current version
DEBUG=1
@@ -34,7 +34,6 @@ NOTIFY=success
# - silent no notifications
# - all all notifications (great for Self Service installation)
# behavior when blocking processes are found
BLOCKING_PROCESS_ACTION=tell_user
# options:
@@ -81,6 +80,7 @@ LOGO=appstore
# - mosylem Mosyle Manager (Education)
# - addigy Addigy
# - microsoft Microsoft Endpoint Manager (Intune)
# - ws1 Workspace ONE (AirWatch)
# path can also be set in the command call, and if file exists, it will be used.
# Like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"'
# (spaces have to be escaped).
@@ -139,6 +139,26 @@ IGNORE_DND_APPS=""
# IGNORE_DND_APPS="firefox,Google Chrome,Safari,Microsoft Edge,Opera,Amphetamine,caffeinate"
# Swift Dialog integration
# These variables will allow Installomator to communicate progress with Swift Dialog
# https://github.com/bartreardon/swiftDialog
# This requires Swift Dialog 2.11.2 or higher.
DIALOG_CMD_FILE=""
# When this variable is set, Installomator will write Swift Dialog commands to this path.
# Installomator will not launch Swift Dialog. The process calling Installomator will have
# launch and configure Swift Dialog to listen to this file.
# See `MDM/swiftdialog_example.sh` for an example.
DIALOG_LIST_ITEM_NAME=""
# When this variable is set, progress for downloads and installs will be sent to this
# listitem.
# When the variable is unset, progress will be sent to Swift Dialog's main progress bar.
# NOTE: How labels work
# Each workflow label needs to be listed in the case statement below.
@@ -184,7 +204,7 @@ IGNORE_DND_APPS=""
# How we get version number from app. Possible values:
# - CFBundleShortVersionString
# - CFBundleVersion
# Not all software titles uses fields the same.
# Not all software titles uses fields the same.
# See Opera label.
#
# - appCustomVersion(){}: (optional function)

View File

@@ -0,0 +1,7 @@
abetterfinderrename11)
name="A Better Finder Rename 11"
type="dmg"
downloadURL="https://www.publicspace.net/download/ABFRX11.dmg"
appNewVersion=$(curl -fs "https://www.publicspace.net/app/signed_abfr11.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:version)' 2>/dev/null | cut -d '"' -f 2)
expectedTeamID="7Y9KW4ND8W"
;;

View File

@@ -0,0 +1,9 @@
acroniscyberprotectconnect|\
remotix)
name="Acronis Cyber Protect Connect"
type="dmg"
downloadURL="https://go.acronis.com/AcronisCyberProtectConnect_ForMac"
versionKey="CFBundleVersion"
appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i "^location" | sed -E 's/.*\/[a-zA-Z]*-[0-9.]*-([0-9.]*)\.dmg/\1/g')
expectedTeamID="ZU2TV78AA6"
;;

View File

@@ -0,0 +1,11 @@
acroniscyberprotectconnectagent|\
remotixagent)
name="Acronis Cyber Protect Connect Agent"
type="pkg"
#packageID="com.nulana.rxagentmac"
downloadURL="https://go.acronis.com/AcronisCyberProtectConnect_AgentForMac"
versionKey="CFBundleVersion"
appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i "^location" | sed -E 's/.*\/[a-zA-Z]*-[0-9.]*-([0-9.]*)\.pkg/\1/g')
expectedTeamID="H629V387SY"
blockingProcesses=( NONE )
;;

View File

@@ -0,0 +1,8 @@
adobeacrobatprodc)
name="Adobe Acrobat Pro DC"
type="pkgInDmg"
downloadURL="https://trials.adobe.com/AdobeProducts/APRO/Acrobat_HelpX/osx10/Acrobat_DC_Web_WWMUI.dmg"
expectedTeamID="JQ525L2MZD"
blockingProcesses=( "Acrobat Pro DC" )
Company="Adobe"
;;

View File

@@ -1,17 +1,24 @@
adobecreativeclouddesktop)
name="Adobe Creative Cloud"
#appName="Install.app"
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)
if pgrep -q "Adobe Installer"; then
printlog "Adobe Installer is running, not a good time to update." WARN
printlog "################## End $APPLICATION \n\n" INFO
exit 75
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)
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' | head -1 | cut -d '"' -f1)
else
downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o 'https.*osx10.*dmg' | head -1 | cut -d '"' -f1)
fi
#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)
appNewVersion=$(echo $downloadURL | grep -o '[^x]*$' | cut -d '.' -f 1 | sed 's/_/\./g')
targetDir="/Applications/Utilities/Adobe Creative Cloud/ACC/"
installerTool="Install.app"
CLIInstaller="Install.app/Contents/MacOS/Install"
CLIArguments=(--mode=silent)
expectedTeamID="JQ525L2MZD"
blockingProcesses=( "Creative Cloud" )
Company="Adobe"
;;

View File

@@ -0,0 +1,27 @@
adobereaderdc-install)
name="Adobe Acrobat Reader DC"
type="pkgInDmg"
printlog "Changing IFS for Adobe Reader" INFO
SAVEIFS=$IFS
IFS=$'\n'
versions=( $( curl -s https://www.adobe.com/devnet-docs/acrobatetk/tools/ReleaseNotesDC/index.html | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+"| head -n 30) )
local version
for version in $versions; do
version="${version//.}"
printlog "trying version: $version" INFO
local httpstatus=$(curl -X HEAD -s "https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/${version}/AcroRdrDC_${version}_MUI.dmg" --write-out "%{http_code}")
printlog "HTTP status for Adobe Reader full installer URL https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/${version}/AcroRdrDC_${version}_MUI.dmg is $httpstatus" DEBUG
if [[ "${httpstatus}" == "200" ]]; then
downloadURL="https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/${version}/AcroRdrDC_${version}_MUI.dmg"
unset httpstatus
break
fi
done
unset version
IFS=$SAVEIFS
appNewVersion=$i
expectedTeamID="JQ525L2MZD"
blockingProcesses=( "AdobeReader" )
Company="Adobe"
PatchName="AcrobatReader"
;;

View File

@@ -1,9 +1,44 @@
adobereaderdc-update)
name="Adobe Acrobat Reader DC"
type="pkgInDmg"
downloadURL=$(adobecurrent=`curl --fail --silent https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.'` && echo https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDC_"$adobecurrent"_MUI.dmg)
if [[ -d "/Applications/Adobe Acrobat Reader DC.app" ]]; then
printlog "Found /Applications/Adobe Acrobat Reader DC.app"
mkdir -p "/Library/Application Support/Adobe/Acrobat/11.0"
defaults write "/Library/Application Support/Adobe/Acrobat/11.0/com.adobe.Acrobat.InstallerOverrides.plist" ReaderAppPath "/Applications/Adobe Acrobat Reader DC.app"
if ! defaults read "/Applications/Adobe Acrobat Reader DC.app/Contents/Resources/AcroLocale.plist" ; then
printlog "Missing locale data, this will cause the updater to fail. Deleting Adobe Acrobat Reader DC.app and installing fresh." WARN
rm -Rf "/Applications/Adobe Acrobat Reader DC.app"
if [[ $1 == "/" ]]; then
printlog "Running through Jamf: $0." INFO
$0 $1 $2 $3 adobereaderdc-install ${5} ${6} ${7} ${8} ${9} ${10} ${11}
else
printlog "Installomator running locally: $0." INFO
$0 adobereaderdc-install ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9} ${10} ${11}
fi
fi
fi
adobecurrent=$(curl -sL https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.')
if [[ "${adobecurrent}" != <-> ]]; then
printlog "Got an invalid response for the Adobe Reader Current Version: ${adobecurrent}" ERROR
printlog "################## End $APPLICATION \n\n" INFO
exit 50
fi
downloadURL=$(echo https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDCUpd"$adobecurrent"_MUI.dmg)
reader_preinstall() {
if pgrep -a "AdobeReader" >/dev/null 2>&1; then
printlog "AdobeReader is still running, forcefully killing." WARN
killall AdobeReader
fi
}
preinstall="reader_preinstall"
updateTool="/usr/local/bin/RemoteUpdateManager"
updateToolArguments=( --productVersions=RDR )
appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt)
#appNewVersion=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" https://get.adobe.com/reader/ | grep ">Version" | sed -E 's/.*Version 20([0-9.]*)<.*/\1/g') # credit: Søren Theilgaard (@theilgaard)
updateToolLog="/Users/$currentUser/Library/Logs/RemoteUpdateManager.log"
updateToolLogDateFormat="%m/%d/%y %H:%M:%S"
expectedTeamID="JQ525L2MZD"
blockingProcesses=( "AdobeReader" )
Company=Adobe
PatchName=AcrobatReader
PatchSkip="YES"
;;

View File

@@ -0,0 +1,10 @@
archiwareb2go)
name="P5 Workstation"
type="pkgInDmg"
packageID="com.archiware.presstore"
appNewVersion=$(curl -sf https://www.archiware.com/download-p5 | grep -m 1 "ARCHIWARE P5 Version" | sed "s|.*Version \(.*\) -.*|\\1|")
downloadURL=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo https://p5-downloads.s3.amazonaws.com/awpst"$appNrVersion"-darwin.dmg)
pkgName=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo P5-Workstation-"$appNrVersion"-Install.pkg)
expectedTeamID="5H5EU6F965"
# blockingProcesses=( nsd )
;;

View File

@@ -0,0 +1,10 @@
archiwarepst)
name="P5"
type="pkgInDmg"
packageID="com.archiware.presstore"
appNewVersion=$(curl -sf https://www.archiware.com/download-p5 | grep -m 1 "ARCHIWARE P5 Version" | sed "s|.*Version \(.*\) -.*|\\1|")
downloadURL=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo https://p5-downloads.s3.amazonaws.com/awpst"$appNrVersion"-darwin.dmg)
pkgName=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo P5-"$appNrVersion"-Install.pkg)
expectedTeamID="5H5EU6F965"
# blockingProcesses=( nsd )
;;

View File

@@ -1,7 +1,13 @@
audacity)
name="Audacity"
type="dmg"
downloadURL=$(downloadURLFromGit audacity audacity)
if [[ $(arch) == "arm64" ]]; then
archiveName="audacity-macOS-[0-9.]*-arm64.dmg"
downloadURL=$(downloadURLFromGit audacity audacity)
elif [[ $(arch) == "i386" ]]; then
archiveName="audacity-macOS-[0-9.]*-x86_64.dmg"
downloadURL=$(downloadURLFromGit audacity audacity)
fi
appNewVersion=$(versionFromGit audacity audacity)
expectedTeamID="AWEYX923UX"
;;

View File

@@ -3,5 +3,5 @@ awsvpnclient)
type="pkg"
downloadURL="https://d20adtppz83p9s.cloudfront.net/OSX/latest/AWS_VPN_Client.pkg"
expectedTeamID="94KV3E626L"
appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/AWSVPNClient" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4)
#appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/AWSVPNClient" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4)
;;

View File

@@ -0,0 +1,8 @@
bitrix24)
name="Bitrix24"
type="dmg"
archiveName="bitrix24_desktop.dmg"
downloadURL="https://dl.bitrix24.com/b24/bitrix24_desktop.dmg"
expectedTeamID="5B3T3A994N"
blockingProcesses=( "Bitrix24" )
;;

View File

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

View File

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

View File

@@ -2,5 +2,6 @@ boxtools)
name="Box Tools"
type="pkg"
downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg"
packageID="com.box.boxtools.installer.boxedit"
expectedTeamID="M683GB7CPW"
;;

View File

@@ -0,0 +1,7 @@
carboncopycloner)
name="Carbon Copy Cloner"
type="zip"
downloadURL=$(curl -fsIL "https://bombich.com/software/download_ccc.php?v=latest" | grep -i ^location | sed -E 's/.*(https.*\.zip).*/\1/g')
appNewVersion=$(sed -E 's/.*-([0-9.]*)\.zip/\1/g' <<< $downloadURL | sed 's/\.[^.]*$//')
expectedTeamID="L4F2DED5Q7"
;;

View File

@@ -0,0 +1,7 @@
charles)
name="Charles"
type="dmg"
appNewVersion=$(curl -fs https://www.charlesproxy.com/download/latest-release/ | sed -nE 's/.*version.*value="([^"]*).*/\1/p')
downloadURL="https://www.charlesproxy.com/assets/release/$appNewVersion/charles-proxy-$appNewVersion.dmg"
expectedTeamID="9A5PCU4FSD"
;;

View File

@@ -0,0 +1,11 @@
chronoagent)
name="ChronoAgent"
type="pkgInDmg"
# packageID="com.econtechnologies.preference.chronoagent"
# versionKey="CFBundleVersion"
# None of the above can read out the installed version
releaseURL="https://www.econtechnologies.com/UC/updatecheck.php?prod=ChronoAgent&lang=en&plat=mac&os=10.14.1&hw=i64&req=1&vers=#"
appNewVersion=$(curl -sf $releaseURL | sed -r 's/.*VERSION=([^<]+).*/\1/')
downloadURL="https://downloads.econtechnologies.com/CA_Mac_Download.dmg"
expectedTeamID="9U697UM7YX"
;;

View File

@@ -0,0 +1,8 @@
chronosync)
name="ChronoSync"
type="pkgInDmg"
releaseURL="https://www.econtechnologies.com/UC/updatecheck.php?prod=ChronoSync&lang=en&plat=mac&os=10.14.1&hw=i64&req=1&vers=#"
appNewVersion=$(curl -sf $releaseURL | sed -r 's/.*VERSION=([^<]+).*/\1/')
downloadURL="https://downloads.econtechnologies.com/CS4_Download.dmg"
expectedTeamID="9U697UM7YX"
;;

View File

@@ -1,7 +1,8 @@
clevershare2)
name="Clevershare"
type="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' )
printlog "Label for $name broken in test" ERROR
downloadURL=$(curl -fs https://www.clevertouch.com/eu/clevershare2g | grep -i -o -E "https.*notarized.*\.dmg")
appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/([0-9.]*)\/[0-9]*\/.*\.dmg$/\1/')
expectedTeamID="P76M9BE8DQ"
;;

View File

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

View File

@@ -0,0 +1,7 @@
cocoapods)
name="CocoaPods"
type="bz2"
downloadURL="$(downloadURLFromGit CocoaPods CocoaPods-app)"
appNewVersion="$(versionFromGit CocoaPods CocoaPods-app)"
expectedTeamID="AX2Q2BH2XR"
;;

View File

@@ -0,0 +1,7 @@
coconutbattery)
name="coconutBattery"
type="zip"
downloadURL="https://coconut-flavour.com/downloads/coconutBattery_latest.zip"
appNewVersion=$(curl -fs https://www.coconut-flavour.com/coconutbattery/ | grep "<title>" | sed -e 's/.*coconutBattery \(.*\) - by coconut-flavour.co.*/\1/')
expectedTeamID="R5SC3K86L5"
;;

View File

@@ -1,7 +1,7 @@
coderunner)
# credit: Erik Stam (@erikstam)
name="CodeRunner"
type="zip"
downloadURL="https://coderunnerapp.com/download"
appNewVersion=$(curl -fsIL ${downloadURL} | grep -i "^location" | cut -d " " -f2 | sed -E 's/.*CodeRunner-([0-9.]*).zip/\1/')
expectedTeamID="R4GD98AJF9"
;;

View File

@@ -1,5 +1,5 @@
colourcontrastanalyser)
name="Colour Contrast Analyser (CCA)"
name="Colour Contrast Analyser"
type="dmg"
downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe)
appNewVersion=$(versionFromGit ThePacielloGroup CCAe)

View File

@@ -0,0 +1,7 @@
cricutdesignspace)
name="Cricut Design Space"
type="dmg"
appNewVersion=$(getJSONValue "$(curl -fsL https://s3-us-west-2.amazonaws.com/staticcontent.cricut.com/a/software/osx-native/latest.json)" "rolloutVersion")
downloadURL=$(getJSONValue $(curl -fsL "https://apis.cricut.com/desktopdownload/InstallerFile?shard=a&operatingSystem=osxnative&fileName=CricutDesignSpace-Install-v${appNewVersion}.dmg") "result")
expectedTeamID="25627ZFVT7"
;;

View File

@@ -1,6 +1,12 @@
cryptomator)
name="Cryptomator"
type="dmg"
if [[ $(arch) == "arm64" ]]; then
archiveName="Cryptomator-[0-9.]*-arm64.dmg"
elif [[ $(arch) == "i386" ]]; then
archiveName="Cryptomator-[0-9.]*.dmg"
fi
downloadURL=$(downloadURLFromGit cryptomator cryptomator)
appNewVersion=$(versionFromGit cryptomator cryptomator)
expectedTeamID="YZQJQUHA3L"

View File

@@ -0,0 +1,11 @@
cytoscape)
name="Cytoscape"
#appName="Cytoscape Installer.app"
type="dmg"
downloadURL="$(downloadURLFromGit cytoscape cytoscape)"
appNewVersion="$(versionFromGit cytoscape cytoscape)"
installerTool="Cytoscape Installer.app"
CLIInstaller="Cytoscape Installer.app/Contents/MacOS/JavaApplicationStub"
CLIArguments=(-q)
expectedTeamID="35LDCJ33QT"
;;

View File

@@ -1,7 +1,7 @@
dangerzone)
name="Dangerzone"
type="dmg"
downloadURL="$(downloadURLFromGit firstlookmedia dangerzone)"
appNewVersion="$(versionFromGit firstlookmedia dangerzone)"
downloadURL="$(downloadURLFromGit freedomofpress dangerzone)"
appNewVersion="$(versionFromGit freedomofpress dangerzone)"
expectedTeamID="N9B95FDWH4"
;;

View File

@@ -1,7 +1,7 @@
drawio)
name="draw.io"
type="dmg"
archiveName="draw.io-universal-[0-9.]*.dmg"
archiveName="draw.io-universal-[0-9.]*.dmg$"
downloadURL="$(downloadURLFromGit jgraph drawio-desktop)"
appNewVersion="$(versionFromGit jgraph drawio-desktop)"
expectedTeamID="UZEUFB4N53"

View File

@@ -2,9 +2,9 @@ duckduckgo)
name="DuckDuckGo"
type="dmg"
#downloadURL="https://staticcdn.duckduckgo.com/macos-desktop-browser/duckduckgo.dmg"
#downloadURL=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[last()]' 2>/dev/null | cut -d '"' -f2)
downloadURL=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2)
#appNewVersion=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:version)[last()]' 2>/dev/null | cut -d '"' -f2)
appNewVersion=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/sparkle:shortVersionString)[1]' 2>/dev/null | cut -d ">" -f2 | cut -d "<" -f1)
downloadURL=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[last()]' 2>/dev/null | cut -d '"' -f2)
#downloadURL=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2)
appNewVersion=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:version)[last()]' 2>/dev/null | cut -d '"' -f2)
#appNewVersion=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/sparkle:shortVersionString)[1]' 2>/dev/null | cut -d ">" -f2 | cut -d "<" -f1)
expectedTeamID="HKE973VLUW"
;;

View File

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

View File

@@ -0,0 +1,7 @@
dynalist)
name="Dynalist"
type="dmg"
downloadURL="https://dynalist.io/standalone/download?file=Dynalist.dmg"
appNewVersion=""
expectedTeamID="6JSW4SJWN9"
;;

View File

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

View File

@@ -0,0 +1,9 @@
egnytecore)
name="Egnyte Core"
appName="Egnyte.app"
type="dmg"
downloadURL=$(curl -fs "https://egnyte-cdn.egnyte.com/desktopapp/mac/en-us/versions/default.xml" | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f 2)
appNewVersion=$(curl -fs "https://egnyte-cdn.egnyte.com/desktopapp/mac/en-us/versions/default.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f 2)
expectedTeamID="FELUD555VC"
blockingProcesses=( NONE )
;;

View File

@@ -0,0 +1,7 @@
fellow)
name="Fellow"
type="dmg"
downloadURL="https://cdn.fellow.app/desktop/1.3.11/darwin/stable/universal/Fellow-1.3.11-universal.dmg"
appNewVersion=""
expectedTeamID="2NF46HY8D8"
;;

View File

@@ -0,0 +1,8 @@
filemakerpro)
name="FileMaker Pro"
type="dmg"
versionKey="BuildVersion"
downloadURL=$(curl -fs https://www.filemaker.com/redirects/ss.txt | grep '\"PRO..MAC\"' | tail -1 | sed "s|.*url\":\"\(.*\)\".*|\\1|")
appNewVersion=$(curl -fs https://www.filemaker.com/redirects/ss.txt | grep '\"PRO..MAC\"' | tail -1 | sed "s|.*fmp_\(.*\).dmg.*|\\1|")
expectedTeamID="J6K4T76U7W"
;;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,7 @@
flexoptixapp)
name="FLEXOPTIX App"
type="dmg"
downloadURL="https://flexbox.reconfigure.me/download/electron/mac/x64/current"
appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i ^location | sed -E 's/.*-([0-9.]*)\.dmg/\1/g')
expectedTeamID="C5JETSFPHL"
;;

View File

@@ -0,0 +1,7 @@
fujifilmwebcam)
name="FUJIFILM X Webcam 2"
type="pkg"
downloadURL=$(curl -fs "https://fujifilm-x.com/en-us/support/download/software/x-webcam/" | grep "https.*pkg" | sed -E 's/.*(https:\/\/dl.fujifilm-x\.com\/support\/software\/.*\.pkg[^\<]).*/\1/g' | sed -e 's/^"//' -e 's/"$//')
appNewVersion=$( echo${downloadURL}| sed -E 's/.*XWebcamIns([0-9]*).*/\1/g' | sed -E 's/([0-9])([0-9]).*/\1\.\2/g')
expectedTeamID="34LRP8AV2M"
;;

View File

@@ -0,0 +1,7 @@
gfxcardstatus)
name="gfxCardStatus"
type="zip"
downloadURL="$(downloadURLFromGit codykrieger gfxCardStatus)"
appNewVersion="$(versionFromGit codykrieger gfxCardStatus)"
expectedTeamID="LF22FTQC25"
;;

View File

@@ -2,7 +2,11 @@ golang)
name="GoLang"
type="pkg"
packageID="org.golang.go"
downloadURL="https://go.dev$(curl -fs "https://go.dev/dl/" | grep -i "downloadBox" | grep "pkg" | tr '"' '\n' | grep "pkg")"
if [[ $(arch) == "arm64" ]]; then
downloadURL="https://go.dev$(curl -fs "https://go.dev/dl/" | grep -i "downloadBox" | grep "darwin-arm" | tr '"' '\n' | grep "pkg")"
elif [[ $(arch) == "i386" ]]; then
downloadURL="https://go.dev$(curl -fs "https://go.dev/dl/" | grep -i "downloadBox" | grep "darwin-amd" | tr '"' '\n' | grep "pkg")"
fi
appNewVersion="$( echo "${downloadURL}" | sed -E 's/.*\/(go[0-9.]*)\..*/\1/g' )" # Version includes letters "go" in the beginning
expectedTeamID="EQHXZ8M8AV"
blockingProcesses=( NONE )

Some files were not shown because too many files have changed in this diff Show More