From 4514b0f9188ec928a1183594e623133ff08a8b74 Mon Sep 17 00:00:00 2001 From: Matthew John Cheetham Date: Wed, 28 Oct 2020 16:06:18 +0000 Subject: [PATCH] osx: update the Mac installer to make product archives Update the macOS installer build to also create a distribution/product archive package, that contains the flat component package we were already building. The product archive allows us to do things like set welcome and conclusion messages, titles, and display a license (like the Windows installers do). In the new welcome and conclusion screens we include helpful links and instructions on how to uninstall GCM Core, and how to configure it for other users on the system. The macOS installer continues to install in a global location, but only configure the user's global Git configuration. --- src/osx/Installer.Mac/build.sh | 10 ++- src/osx/Installer.Mac/dist.sh | 73 ++++++++++++++++++ src/osx/Installer.Mac/distribution.xml | 21 +++++ src/osx/Installer.Mac/pack.sh | 14 ++-- .../Installer.Mac/resources/background.png | Bin 0 -> 16922 bytes .../Installer.Mac/resources/en.lproj/LICENSE | 1 + .../resources/en.lproj/conclusion.html | 41 ++++++++++ .../resources/en.lproj/welcome.html | 34 ++++++++ src/osx/Installer.Mac/scripts/postinstall | 7 +- src/osx/Installer.Mac/uninstall.sh | 12 ++- 10 files changed, 197 insertions(+), 16 deletions(-) create mode 100755 src/osx/Installer.Mac/dist.sh create mode 100644 src/osx/Installer.Mac/distribution.xml create mode 100644 src/osx/Installer.Mac/resources/background.png create mode 120000 src/osx/Installer.Mac/resources/en.lproj/LICENSE create mode 100644 src/osx/Installer.Mac/resources/en.lproj/conclusion.html create mode 100644 src/osx/Installer.Mac/resources/en.lproj/welcome.html diff --git a/src/osx/Installer.Mac/build.sh b/src/osx/Installer.Mac/build.sh index 466eb5f6e..ba5308da1 100755 --- a/src/osx/Installer.Mac/build.sh +++ b/src/osx/Installer.Mac/build.sh @@ -38,11 +38,15 @@ if [ -z "$VERSION" ]; then die "--version was not set" fi -PAYLOAD="$INSTALLER_OUT/pkg/$CONFIGURATION/payload" -PKGOUT="$INSTALLER_OUT/pkg/$CONFIGURATION/gcmcore-osx-$VERSION.pkg" +OUTDIR="$INSTALLER_OUT/pkg/$CONFIGURATION" +PAYLOAD="$OUTDIR/payload" +COMPONENTDIR="$OUTDIR/components" +COMPONENTOUT="$COMPONENTDIR/com.microsoft.gitcredentialmanager.component.pkg" +DISTOUT="$OUTDIR/gcmcore-osx-$VERSION.pkg" # Layout and pack "$INSTALLER_SRC/layout.sh" --configuration="$CONFIGURATION" --output="$PAYLOAD" || exit 1 -"$INSTALLER_SRC/pack.sh" --payload="$PAYLOAD" --version="$VERSION" --output="$PKGOUT" || exit 1 +"$INSTALLER_SRC/pack.sh" --payload="$PAYLOAD" --version="$VERSION" --output="$COMPONENTOUT" || exit 1 +"$INSTALLER_SRC/dist.sh" --package-path="$COMPONENTDIR" --version="$VERSION" --output="$DISTOUT" || exit 1 echo "Build of Installer.Mac complete." diff --git a/src/osx/Installer.Mac/dist.sh b/src/osx/Installer.Mac/dist.sh new file mode 100755 index 000000000..749231583 --- /dev/null +++ b/src/osx/Installer.Mac/dist.sh @@ -0,0 +1,73 @@ +#!/bin/bash +die () { + echo "$*" >&2 + exit 1 +} + +# Directories +THISDIR="$( cd "$(dirname "$0")" ; pwd -P )" +ROOT="$( cd "$THISDIR"/../../.. ; pwd -P )" +SRC="$ROOT/src" +OUT="$ROOT/out" +INSTALLER_SRC="$SRC/osx/Installer.Mac" +RESXPATH="$INSTALLER_SRC/resources" +DISTPATH="$INSTALLER_SRC/distribution.xml" + +# Product information +IDENTIFIER="com.microsoft.gitcredentialmanager.dist" + +# Parse script arguments +for i in "$@" +do +case "$i" in + --version=*) + VERSION="${i#*=}" + shift # past argument=value + ;; + --package-path=*) + PACKAGEPATH="${i#*=}" + shift # past argument=value + ;; + --output=*) + DISTOUT="${i#*=}" + shift # past argument=value + ;; + *) + # unknown option + ;; +esac +done + +# Perform pre-execution checks +if [ -z "$VERSION" ]; then + die "--version was not set" +fi +if [ -z "$PACKAGEPATH" ]; then + die "--package-path was not set" +elif [ ! -d "$PACKAGEPATH" ]; then + die "Could not find '$PACKAGEPATH'. Did you run pack.sh first?" +fi +if [ -z "$DISTOUT" ]; then + die "--output was not set" +fi + +# Cleanup any old package +if [ -e "$DISTOUT" ]; then + echo "Deleteing old product package '$DISTOUT'..." + rm "$DISTOUT" +fi + +# Ensure the parent directory for the package exists +mkdir -p "$(dirname "$DISTOUT")" + +# Build product installer +echo "Building product package..." +/usr/bin/productbuild \ + --package-path "$PACKAGEPATH" \ + --resources "$RESXPATH" \ + --distribution "$DISTPATH" \ + --identifier "$IDENTIFIER" \ + --version "$VERSION" \ + "$DISTOUT" || exit 1 + +echo "Product build complete." diff --git a/src/osx/Installer.Mac/distribution.xml b/src/osx/Installer.Mac/distribution.xml new file mode 100644 index 000000000..4bf9b9fb6 --- /dev/null +++ b/src/osx/Installer.Mac/distribution.xml @@ -0,0 +1,21 @@ + + + Git Credential Manager Core + + + + + + + + + + + + + + + + com.microsoft.gitcredentialmanager.component.pkg + + diff --git a/src/osx/Installer.Mac/pack.sh b/src/osx/Installer.Mac/pack.sh index e795ae313..b58f4ce5a 100755 --- a/src/osx/Installer.Mac/pack.sh +++ b/src/osx/Installer.Mac/pack.sh @@ -12,7 +12,7 @@ OUT="$ROOT/out" INSTALLER_SRC="$SRC/osx/Installer.Mac" # Product information -IDENTIFIER="com.microsoft.GitCredentialManager" +IDENTIFIER="com.microsoft.gitcredentialmanager" INSTALL_LOCATION="/usr/local/share/gcm-core" # Parse script arguments @@ -50,13 +50,13 @@ if [ -z "$PKGOUT" ]; then die "--output was not set" fi -# Cleanup any old package file +# Cleanup any old component if [ -e "$PKGOUT" ]; then - echo "Deleteing old package '$PKGOUT'..." + echo "Deleteing old component '$PKGOUT'..." rm "$PKGOUT" fi -# Ensure the parent directory for the package exists +# Ensure the parent directory for the component exists mkdir -p "$(dirname "$PKGOUT")" # Set full read, write, execute permissions for owner and just read and execute permissions for group and other @@ -67,8 +67,8 @@ echo "Setting file permissions..." echo "Removing extended attributes..." /usr/bin/xattr -rc "$PAYLOAD" || exit 1 -# Build installer package -echo "Building installer package..." +# Build component packages +echo "Building core component package..." /usr/bin/pkgbuild \ --root "$PAYLOAD/" \ --install-location "$INSTALL_LOCATION" \ @@ -77,4 +77,4 @@ echo "Building installer package..." --version "$VERSION" \ "$PKGOUT" || exit 1 -echo "Pack complete." +echo "Component pack complete." diff --git a/src/osx/Installer.Mac/resources/background.png b/src/osx/Installer.Mac/resources/background.png new file mode 100644 index 0000000000000000000000000000000000000000..fb9c1b154fae4748fce7a5f7d0b084afc6811344 GIT binary patch literal 16922 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 literal 0 HcmV?d00001 diff --git a/src/osx/Installer.Mac/resources/en.lproj/LICENSE b/src/osx/Installer.Mac/resources/en.lproj/LICENSE new file mode 120000 index 000000000..2a64f9d0f --- /dev/null +++ b/src/osx/Installer.Mac/resources/en.lproj/LICENSE @@ -0,0 +1 @@ +../../../../../LICENSE \ No newline at end of file diff --git a/src/osx/Installer.Mac/resources/en.lproj/conclusion.html b/src/osx/Installer.Mac/resources/en.lproj/conclusion.html new file mode 100644 index 000000000..53e817c7d --- /dev/null +++ b/src/osx/Installer.Mac/resources/en.lproj/conclusion.html @@ -0,0 +1,41 @@ + + + + + + + +
+

Git Credential Manager Core was installed in /usr/local/share/gcm-core and configured for the current user.

+
+
+

Other users

+

+ GCM Core has already been automatically configured for use by the current user with Git. + If other users wish to use GCM Core, have them run the following command to update their global Git configuration (~/.gitconfig): +

+

$ git-credential-manager-core configure

+

+ To configure GCM Core for all users, run the following command to update the system Git configuration: +

+

$ git-credential-manager-core configure --system

+
+
+

Uninstall

+

If you wish to uninstall GCM Core, run the following script:

+

$ /usr/local/share/gcm-core/uninstall.sh

+
+
+

Resources

+ +
+ + diff --git a/src/osx/Installer.Mac/resources/en.lproj/welcome.html b/src/osx/Installer.Mac/resources/en.lproj/welcome.html new file mode 100644 index 000000000..97c0454af --- /dev/null +++ b/src/osx/Installer.Mac/resources/en.lproj/welcome.html @@ -0,0 +1,34 @@ + + + + + + + +
+

Git Credential Manager Core

+

+ Git Credential Manager Core is a secure, cross-platform Git credential helper with authentication support for GitHub, Azure Repos, and other popular Git hosting services. +

+
+
+

Installation notes

+

+ If you have the old Java-based Git Credential Manager for Mac & Linux installed through Homebrew, it will be unlinked after installation. +

+

+ Git Credential Manager Core will be configured as the Git credential helper for the system or user, depending on if it is installed for all users, or just the current user. +

+
+
+

Learn more

+ +
+ + diff --git a/src/osx/Installer.Mac/scripts/postinstall b/src/osx/Installer.Mac/scripts/postinstall index cfb337622..9fdc006f1 100755 --- a/src/osx/Installer.Mac/scripts/postinstall +++ b/src/osx/Installer.Mac/scripts/postinstall @@ -1,6 +1,9 @@ #!/bin/bash set -e +PACKAGE=$1 +INSTALL_DESTINATION=$2 + function IsBrewPkgInstalled { # Check if Homebrew is installed @@ -24,9 +27,9 @@ then fi # Create symlink to GCM in /usr/local/bin -/bin/ln -Fs /usr/local/share/gcm-core/git-credential-manager-core /usr/local/bin/git-credential-manager-core +/bin/ln -Fs "$INSTALL_DESTINATION/git-credential-manager-core" /usr/local/bin/git-credential-manager-core # Configure GCM for the current user -/usr/local/share/gcm-core/git-credential-manager-core configure +"$INSTALL_DESTINATION/git-credential-manager-core" configure exit 0 diff --git a/src/osx/Installer.Mac/uninstall.sh b/src/osx/Installer.Mac/uninstall.sh index 47624086c..2657046d0 100755 --- a/src/osx/Installer.Mac/uninstall.sh +++ b/src/osx/Installer.Mac/uninstall.sh @@ -1,5 +1,8 @@ #!/bin/bash +THISDIR="$( cd "$(dirname "$0")" ; pwd -P )" +GCMBIN="$THISDIR/git-credential-manager-core" + # Ensure we're running as root if [ $(id -u) != "0" ] then @@ -9,7 +12,7 @@ fi # Unconfigure echo "Unconfiguring credential helper..." -/usr/local/share/gcm-core/git-credential-manager-core unconfigure +"$GCMBIN" unconfigure # Remove symlink if [ -L /usr/local/bin/git-credential-manager-core ] @@ -21,13 +24,14 @@ else fi # Forget package installation/delete receipt -sudo pkgutil --forget com.microsoft.GitCredentialManager +echo "Removing installation receipt..." +pkgutil --forget com.microsoft.gitcredentialmanager # Remove application files -if [ -d /usr/local/share/gcm-core/ ] +if [ -d "$THISDIR" ] then echo "Deleting application files..." - sudo rm -rf /usr/local/share/gcm-core/ + rm -rf "$THISDIR" else echo "No application files found." fi