#!/bin/sh set -x APP=/Applications/NetBird.app AGENT=/usr/local/bin/netbird LOG_FILE=/var/log/netbird/client_post_install.log FRESH_INSTALL_MARKER_DIR="/Library/Application Support/NetBird" FRESH_INSTALL_MARKER="$FRESH_INSTALL_MARKER_DIR/.fresh-install" mkdir -p /var/log/netbird/ mkdir -p /usr/local/bin/ { echo "Installing NetBird..." # Fresh-vs-upgrade detection: the pkg receipt of a previous install is # still present while this script runs, so a receipt means upgrade. Only # a true fresh install gets the breadcrumb the GUI uses to enable # launch-on-login by default; the installer itself never writes login # items. On upgrade any stale breadcrumb is removed (covers a fresh # install where the GUI never launched before the first update). IS_UPGRADE="false" if [ -n "${INSTALL_PKG_SESSION_ID:-}" ] && pkgutil --pkg-info "${INSTALL_PKG_SESSION_ID}" > /dev/null 2>&1; then IS_UPGRADE="true" fi if [ "$IS_UPGRADE" = "true" ]; then echo "Upgrade detected (receipt for ${INSTALL_PKG_SESSION_ID} present), removing stale fresh-install marker." rm -f "$FRESH_INSTALL_MARKER" else echo "Fresh install detected, writing fresh-install marker." mkdir -p "$FRESH_INSTALL_MARKER_DIR" touch "$FRESH_INSTALL_MARKER" fi if test -d $APP; then echo "NetBird app copied successfully." else echo "NetBird app could not be copied to the Applications folder." exit 1 fi ln -fs $APP/Contents/MacOS/netbird $AGENT if test -f $AGENT; then echo "NetBird binary linked successfully." else echo "NetBird could not create symlink to /usr/local/bin" exit 1 fi $AGENT service install || true $AGENT service start || true # On upgrade the GUI relaunch carries --post-update so its first-run # autostart default cannot fire (belt-and-suspenders on top of the # absent breadcrumb). if [ "$IS_UPGRADE" = "true" ]; then open $APP --args --post-update else open $APP fi echo "Finished Netbird installation successfully" exit 0 # all good } &> $LOG_FILE