From f5e7a5d2cab5fc3cfca8c5f75e57090cda27c4e1 Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 2 Dec 2020 21:46:06 +0100 Subject: [pkg] add uninstaller to pre-install in osx --- Makefile | 12 ++++++------ branding/templates/qtinstaller/osx-data/uninstall.py | 12 ++++++++---- .../qtinstaller/packages/bitmaskvpn/meta/install.js | 12 ++++++++++++ 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 2759704..54fdf33 100644 --- a/Makefile +++ b/Makefile @@ -98,7 +98,7 @@ lib/%.a: $(PKGFILES) @XBUILD=no ./gui/build.sh --just-golib relink_vendor: - @echo "==========RELINK VENDOR==========" + @echo "============RELINK VENDOR=============" @echo "PLATFORM: ${PLATFORM}" @echo "VENDOR_PATH: ${VENDOR_PATH}" @echo "PROVIDER: ${PROVIDER}" @@ -114,28 +114,28 @@ ifeq ($(VENDOR_PATH), providers) @ln -s ${PROVIDER}/assets providers/assets endif endif - @echo "==========RELINK VENDOR==========" + @echo "============RELINK VENDOR=============" build_golib: lib/libgoshim.a build_gui: relink_vendor - @echo "==========BUILD GUI==========" + @echo "==============BUILD GUI===============" @echo "TARGET: ${TARGET}" @echo "VENDOR_PATH: ${VENDOR_PATH}" @XBUILD=no TARGET=${TARGET} VENDOR_PATH=${VENDOR_PATH} gui/build.sh --skip-golib - @echo "==========BUILD GUI==========" + @echo "============BUILD GUI=================" build: build_golib build_helper build_gui build_helper: - @echo "==========BUILDER HELPER==========" + @echo "=============BUILDER HELPER===========" @echo "PLATFORM: ${PLATFORM}" @echo "APPNAME: ${APPNAME}" @echo "VERSION: ${VERSION}" @echo "EXTRA_GO_LDFLAGS: ${EXTRA_GO_LDFLAGS}" @mkdir -p build/bin/${PLATFORM} @go build -o build/bin/${PLATFORM}/bitmask-helper -ldflags "-X main.AppName=${APPNAME} -X main.Version=${VERSION} ${EXTRA_GO_LDFLAGS}" ./cmd/bitmask-helper/ - @echo "==========BUILDER HELPER==========" + @echo "===========BUILDER HELPER=============" build_openvpn: @[ -f $(OPENVPN_BIN) ] && echo "OpenVPN already built at" $(OPENVPN_BIN) || ./branding/thirdparty/openvpn/build_openvpn.sh diff --git a/branding/templates/qtinstaller/osx-data/uninstall.py b/branding/templates/qtinstaller/osx-data/uninstall.py index 7aa8a56..7520321 100755 --- a/branding/templates/qtinstaller/osx-data/uninstall.py +++ b/branding/templates/qtinstaller/osx-data/uninstall.py @@ -12,8 +12,9 @@ HELPER_PLIST = "/Library/LaunchDaemons/se.leap.bitmask-helper.plist" _dir = os.path.dirname(os.path.realpath(__file__)) -def main(): - log = open(os.path.join('/tmp', 'bitmask-uninstall.log'), 'w') +def main(stage="uninstall"): + logfile = "bitmask-{stage}.log".format(stage=stage) + log = open(os.path.join('/tmp', logfile), 'w') log.write('Checking for admin privileges...\n') _id = os.getuid() @@ -37,7 +38,7 @@ def main(): log.write("result: %s \n" % str(out)) # all done - log.write('uninstall script: done\n') + log.write(stage + ' script: done\n') sys.exit(0) @@ -67,4 +68,7 @@ def _getProcessList(): return _out if __name__ == "__main__": - main() + stage="uninstall" + if len(sys.argv) > 2 and sys.argv[2] == "pre": + stage="pre-install" + main(stage) diff --git a/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js b/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js index 0b065d6..407ea39 100644 --- a/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js +++ b/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js @@ -70,6 +70,7 @@ Component.prototype.createOperations = function () if (systemInfo.productType === "windows") { postInstallWindows(); } else if (systemInfo.productType === "osx") { + preInstallOSX(); postInstallOSX(); } else { postInstallLinux(); @@ -91,6 +92,7 @@ Component.prototype.installationFinished = function() } function postInstallWindows() { + // TODO - check if we're on Windows10 or older, and use the needed tap-windows installer accordingly. console.log("Installing OpenVPN tap driver"); component.addElevatedOperation("Execute", "@TargetDir@/tap-windows.exe", "/S", "/SELECT_UTILITIES=1"); /* TODO uninstall? */ console.log("Now trying to install our helper"); @@ -108,6 +110,16 @@ function postInstallWindows() { ); } +function preInstallOSX() { + console.log("Pre-installation for OSX"); + // TODO use installer filepath?? + component.addElevatedOperation( + "Execute", "{0}", + "@TargetDir@/uninstall.py", "pre", + "errormessage=There was an error during the pre-installation script, things might be broken. Please report this error and attach the pre-install.log file." + ); +} + function postInstallOSX() { console.log("Post-installation for OSX"); component.addElevatedOperation( -- cgit v1.2.3