Skip to content

Releases: macadmins/installapplications

InstallApplications 2.0.3

05 Mar 22:52
fa9ebdb
Compare
Choose a tag to compare

Important Notes

Due to various bugs in building Universal Python3 relocatable frameworks, it is recommended to use the provided Python.framework file rather than build one.

This version is identical to 2.0.3a1 except for two minor fixes, noted below.

New features:

  • Adds support for M1 macs - #81

Changes:

  • Update to Python 3.9.1 and PyObjC 7.0.1 for Big Sur/M1 compatibility

Resolves

#87
#91

InstallApplications 2.0.3 Alpha 1

08 Dec 22:14
Compare
Choose a tag to compare
Pre-release

New features:

  • Adds support for M1 macs - #81

Changes:

  • Update to Python 3.9.1 and PyObjC 7.0.1 for Big Sur/M1 compatibility

InstallApplications 2.0.2

08 Dec 22:07
a783791
Compare
Choose a tag to compare

This release is identical to RC2.

New features:

  • Introduces --follow-redirects argument option. If this flag is passed, InstallApplications will follow redirects from the web server to the remote URL.
  • stdout and stderr now properly log to disk to help an administrator debug user and root scripts.

Changes:

  • Update to Python 3.8.3 and PyObjC 6.2.2 for Big Sur compatibility
  • Update preinstall and postinstall to handle potential path changes in Big Sur Beta 3
    • 05f7dda
    • 1f6f395
    • Note that this was likely a bug Apple fixed in Big Sur Beta 4 and higher, but this makes the installation less likely to fail in future versions of macOS.
  • Remove a user script if it fails to allow InstallApplications to move on
  • Removes DEPNotify built in support due to Big Sur issues
  • Now version 2.0.2

Fixes:

  • Fix bad path in generatejson.py
  • Fix issue when certain strings are rejected by NSLog; opt to print the text
  • Fix logic when an administrator attempts to use a userscript within the setupassistant stage

InstallApplications 2.0.2 RC2

04 Dec 15:03
a783791
Compare
Choose a tag to compare
Pre-release

Changes since RC1:

  • Removes DEPNotify built in support due to Big Sur issues

New features:

  • Introduces --follow-redirects argument option. If this flag is passed, InstallApplications will follow redirects from the web server to the remote URL.
  • stdout and stderr now properly log to disk to help an administrator debug user and root scripts.

Changes:

  • Update to Python 3.8.3 and PyObjC 6.2.2 for Big Sur compatibility
  • Update preinstall and postinstall to handle potential path changes in Big Sur Beta 3
    • 05f7dda
    • 1f6f395
    • Note that this was likely a bug Apple fixed in Big Sur Beta 4 and higher, but this makes the installation less likely to fail in future versions of macOS.
  • Remove a user script if it fails to allow InstallApplications to move on
  • Now version 2.0.2

Fixes:

  • Fix bad path in generatejson.py
  • Fix issue when certain strings are rejected by NSLog; opt to print the text
  • Fix logic when an administrator attempts to use a userscript within the setupassistant stage

InstallApplications 2.0.2 RC1

15 Oct 19:10
Compare
Choose a tag to compare
Pre-release

New features:

  • Introduces --follow-redirects argument option. If this flag is passed, InstallApplications will follow redirects from the web server to the remote URL.
  • stdout and stderr now properly log to disk to help an administrator debug user and root scripts.

Changes:

  • Update to Python 3.8.3 and PyObjC 6.2.2 for Big Sur compatibility
  • Update preinstall and postinstall to handle potential path changes in Big Sur Beta 3
    • 05f7dda
    • 1f6f395
    • Note that this was likely a bug Apple fixed in Big Sur Beta 4 and higher, but this makes the installation less likely to fail in future versions of macOS.
  • Remove a user script if it fails to allow InstallApplications to move on
  • Now version 2.0.2

Fixes:

  • Fix bad path in generatejson.py
  • Fix issue when certain strings are rejected by NSLog; opt to print the text
  • Fix logic when an administrator attempts to use a userscript within the setupassistant stage

InstallApplications 2.0

01 Apr 20:52
e65e5a0
Compare
Choose a tag to compare

Changes since RC4:

  • Fix generatejson bug daf7a75
  • Ignore built python frameworks #63

Changes:

  • Refactored to use embedded python 3.8 via Relocatable Python - #55
  • generatejson.py now uses env to figure out which python3 to run
  • Update gurl to use Munki 4.0, python 3.7 version
  • InstallApplications has moved from /Library/Application Support/installapplications to /Library/installapplications
  • Logging is now in /var/log/installapplications for both the user and root log files. Previously user logs were kept in /tmp/installapplications and lost after a reboot and root logs were in /var/log/installapplications.log

Fixes:

  • General fixes through flake8 - #56

Notes

2to3

installapplications.py and postinstall have been ran through 2to3 to automatically convert for Python3 compatibility.

Building embedded python framework

To reduce the size of the git repository, you must create your own Python. To do this, simply run the ./build_python_framework.sh script within the repository.

This process was tested on Catalina only.

./build_python_framework.sh

Cloning relocatable-python tool from github...
Cloning into '/tmp/relocatable-python-git'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 70 (delta 7), reused 16 (delta 6), pack-reused 50
Unpacking objects: 100% (70/70), done.
Downloading https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg...

...

Done!
Customized, relocatable framework is at ./Python.framework
Moving Python.framework to InstallApplications payload folder

Package size increases

Unfortunately due to the embedded python, InstallApplications has significantly grown in size, from approximately 35Kb to 27.5 MB. The low size of InstallApplications has traditionally been one of it's greatest strengths, given how fragile mdmclient can be, but there is nothing that can be done here.

Pinning python user/root scripts to embedded Python

Python user/root scripts should be pinned to the embedded Python framework. Moving forward, scripts not pinned will be unsupported.

It is recommended that you run 2to3 against your scripts to make them python3 compliant.

/usr/local/bin/2to3 -w /path/to/script

Then simply update the shebang on your python scripts to pin against the InstallApplications python framework.

#!/Library/installapplications/Python.framework/Versions/3.8/bin/python3

You can find an example on how this was done by looking at InstallApplications' own postinstall

InstallApplications 2.0 RC4

02 Jan 15:29
f18e864
Compare
Choose a tag to compare
Pre-release

Changes since RC3:

  • Fix DEPNotify launcher code to use Python 3.8
  • Fix race condition on reboot logic, by sending a delayed reboot command into another parent process, then cleaning up the python framework, installapplications folder, launch agents and launch daemons
  • Fix stuck launch daemon in postinstall logic to allow multiple InstallApplications runs without requiring a reboot

Changes:

  • Refactored to use embedded python 3.8 via Relocatable Python - #55
  • generatejson.py now uses env to figure out which python3 to run
  • Update gurl to use Munki 4.0, python 3.7 version
  • InstallApplications has moved from /Library/Application Support/installapplications to /Library/installapplications
  • Logging is now in /var/log/installapplications for both the user and root log files. Previously user logs were kept in /tmp/installapplications and lost after a reboot and root logs were in /var/log/installapplications.log

Fixes:

  • General fixes through flake8 - #56

Warnings:

The built in DEPNotify logic continues to work in version 2.0, but may be removed prior to the official release of InstallApplications 2.0

Notes

2to3

installapplications.py and postinstall have been ran through 2to3 to automatically convert for Python3 compatibility.

Building embedded python framework

To reduce the size of the git repository, you must create your own Python. To do this, simply run the ./build_python_framework.sh script within the repository.

This process was tested on Catalina only.

./build_python_framework.sh

Cloning relocatable-python tool from github...
Cloning into '/tmp/relocatable-python-git'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 70 (delta 7), reused 16 (delta 6), pack-reused 50
Unpacking objects: 100% (70/70), done.
Downloading https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg...

...

Done!
Customized, relocatable framework is at ./Python.framework
Moving Python.framework to InstallApplications payload folder

Package size increases

Unfortunately due to the embedded python, InstallApplications has significantly grown in size, from approximately 35Kb to 27.5 MB. The low size of InstallApplications has traditionally been one of it's greatest strengths, given how fragile mdmclient can be, but there is nothing that can be done here.

Pinning python user/root scripts to embedded Python

Python user/root scripts should be pinned to the embedded Python framework. Moving forward, scripts not pinned will be unsupported.

It is recommended that you run 2to3 against your scripts to make them python3 compliant.

/usr/local/bin/2to3 -w /path/to/script

Then simply update the shebang on your python scripts to pin against the InstallApplications python framework.

#!/Library/installapplications/Python.framework/Versions/3.8/bin/python3

You can find an example on how this was done by looking at InstallApplications' own postinstall

InstallApplications 2.0 RC3

10 Dec 18:49
Compare
Choose a tag to compare
Pre-release

Changes since RC2:

  • Move to Python 3.8 to stay consistent with other tools maintained by author
  • Rewrite of the postinstall to zsh to reduce chances of race conditions and remove dependency from python
  • Rewrite of the build_python_framework tool to ensure shebangs are correct with embedded python modules
  • Fix cleanup logic #57

Changes:

  • Refactored to use embedded python 3.8 via Relocatable Python - #55
  • generatejson.py now uses env to figure out which python3 to run
  • Update gurl to use Munki 4.0, python 3.7 version
  • InstallApplications has moved from /Library/Application Support/installapplications to /Library/installapplications
  • Logging is now in /var/log/installapplications for both the user and root log files. Previously user logs were kept in /tmp/installapplications and lost after a reboot and root logs were in /var/log/installapplications.log

Fixes:

  • General fixes through flake8 - #56

Warnings:

The built in DEPNotify logic continues to work in version 2.0, but may be removed prior to the official release of InstallApplications 2.0

Notes

2to3

installapplications.py and postinstall have been ran through 2to3 to automatically convert for Python3 compatibility.

Building embedded python framework

To reduce the size of the git repository, you must create your own Python. To do this, simply run the ./build_python_framework.sh script within the repository.

This process was tested on Catalina only.

./build_python_framework.sh

Cloning relocatable-python tool from github...
Cloning into '/tmp/relocatable-python-git'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 70 (delta 7), reused 16 (delta 6), pack-reused 50
Unpacking objects: 100% (70/70), done.
Downloading https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg...

...

Done!
Customized, relocatable framework is at ./Python.framework
Moving Python.framework to InstallApplications payload folder

Package size increases

Unfortunately due to the embedded python, InstallApplications has significantly grown in size, from approximately 35Kb to 27.5 MB. The low size of InstallApplications has traditionally been one of it's greatest strengths, given how fragile mdmclient can be, but there is nothing that can be done here.

Pinning python user/root scripts to embedded Python

Python user/root scripts should be pinned to the embedded Python framework. Moving forward, scripts not pinned will be unsupported.

It is recommended that you run 2to3 against your scripts to make them python3 compliant.

/usr/local/bin/2to3 -w /path/to/script

Then simply update the shebang on your python scripts to pin against the InstallApplications python framework.

#!/Library/installapplications/Python.framework/Versions/3.8/bin/python3

You can find an example on how this was done by looking at InstallApplications' own postinstall

InstallApplications 2.0 RC2

06 Dec 23:23
eb31d0c
Compare
Choose a tag to compare
Pre-release

Changes since RC1:

  • Fixes typo in newpreinstall script

Changes:

  • Refactored to use embedded python 3.7 via Relocatable Python - #55
  • generatejson.py now uses env to figure out which python3 to run
  • Update gurl to use Munki 4.0, python 3.7 version
  • InstallApplications has moved from /Library/Application Support/installapplications to /Library/installapplications
  • Logging is now in /var/log/installapplications for both the user and root log files. Previously user logs were kept in /tmp/installapplications and lost after a reboot and root logs were in /var/log/installapplications.log

Fixes:

  • General fixes through flake8 - #56

Warnings:

The built in DEPNotify logic continues to work in version 2.0, but may be removed prior to the official release of InstallApplications 2.0

Notes

2to3

installapplications.py and postinstall have been ran through 2to3 to automatically convert for Python3 compatibility.

Building embedded python framework

To reduce the size of the git repository, you must create your own Python. To do this, simply run the ./build_python_framework.sh script within the repository.

This process was tested on Catalina only.

./build_python_framework.sh

Cloning relocatable-python tool from github...
Cloning into '/tmp/relocatable-python-git'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 70 (delta 7), reused 16 (delta 6), pack-reused 50
Unpacking objects: 100% (70/70), done.
Downloading https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.9.pkg...

...

Done!
Customized, relocatable framework is at ./Python.framework
Moving Python.framework to InstallApplications payload folder

Package size increases

Unfortunately due to the embedded python, InstallApplications has significantly grown in size, from approximately 35Kb to 27.5 MB. The low size of InstallApplications has traditionally been one of it's greatest strengths, given how fragile mdmclient can be, but there is nothing that can be done here.

Pinning python user/root scripts to embedded Python

Python user/root scripts should be pinned to the embedded Python framework. Moving forward, scripts not pinned will be unsupported.

It is recommended that you run 2to3 against your scripts to make them python3 compliant.

/usr/local/bin/2to3 -w /path/to/script

Then simply update the shebang on your python scripts to pin against the InstallApplications python framework.

#!/Library/installapplications/Python.framework/Versions/3.7/bin/python3

You can find an example on how this was done by looking at InstallApplications' own postinstall

InstallApplications 2.0 RC1

06 Dec 23:23
78cda3d
Compare
Choose a tag to compare
Pre-release

Changes:

  • Refactored to use embedded python 3.7 via Relocatable Python - #55
  • generatejson.py now uses env to figure out which python3 to run
  • Update gurl to use Munki 4.0, python 3.7 version
  • InstallApplications has moved from /Library/Application Support/installapplications to /Library/installapplications
  • Logging is now in /var/log/installapplications for both the user and root log files. Previously user logs were kept in /tmp/installapplications and lost after a reboot and root logs were in /var/log/installapplications.log

Fixes:

  • General fixes through flake8 - #56

Warnings:

The built in DEPNotify logic continues to work in version 2.0, but may be removed prior to the official release of InstallApplications 2.0

Notes

2to3

installapplications.py and postinstall have been ran through 2to3 to automatically convert for Python3 compatibility.

Building embedded python framework

To reduce the size of the git repository, you must create your own Python. To do this, simply run the ./build_python_framework.sh script within the repository.

This process was tested on Catalina only.

./build_python_framework.sh

Cloning relocatable-python tool from github...
Cloning into '/tmp/relocatable-python-git'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 70 (delta 7), reused 16 (delta 6), pack-reused 50
Unpacking objects: 100% (70/70), done.
Downloading https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.9.pkg...

...

Done!
Customized, relocatable framework is at ./Python.framework
Moving Python.framework to InstallApplications payload folder

Package size increases

Unfortunately due to the embedded python, InstallApplications has significantly grown in size, from approximately 35Kb to 27.5 MB. The low size of InstallApplications has traditionally been one of it's greatest strengths, given how fragile mdmclient can be, but there is nothing that can be done here.

Pinning python user/root scripts to embedded Python

Python user/root scripts should be pinned to the embedded Python framework. Moving forward, scripts not pinned will be unsupported.

It is recommended that you run 2to3 against your scripts to make them python3 compliant.

/usr/local/bin/2to3 -w /path/to/script

Then simply update the shebang on your python scripts to pin against the InstallApplications python framework.

#!/Library/installapplications/Python.framework/Versions/3.7/bin/python3

You can find an example on how this was done by looking at InstallApplications' own postinstall