From 67a178443a63c0cb85687b51073ec1f009339ca0 Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Thu, 11 Jun 2009 01:57:35 +0000 Subject: [PATCH] New script to convert BOINC installer to Progress Thru Processors installer svn path=/trunk/boinc/; revision=18363 --- checkin_notes | 4 +- mac_installer/PostInstall.cpp | 10 +- mac_installer/make_ProgThruProc.sh | 348 +++++++++++++++++++++++++++++ mac_installer/uninstall.cpp | 6 +- 4 files changed, 360 insertions(+), 8 deletions(-) create mode 100644 mac_installer/make_ProgThruProc.sh diff --git a/checkin_notes b/checkin_notes index f3d955d136..b9add7f9c2 100644 --- a/checkin_notes +++ b/checkin_notes @@ -5302,10 +5302,12 @@ Charlie 10 June 2009 Charlie 10 June 2009 - Mac screensaver: Change "ProgressThruProcessors" to "Progress Thru Processors". - Mac PTP Installer: Change "ProgressThruProcessors" to - "Progress Thru Processors". + "Progress Thru Processors" + New script to convert BOINC installer to Progress Thru Processors installer. clientscr/ mac_saver_module.cpp mac_installer/ + make_ProgThruProc.sh (added) PostInstall.cpp uninstall.cpp diff --git a/mac_installer/PostInstall.cpp b/mac_installer/PostInstall.cpp index 7f58586950..b2e07f10bd 100755 --- a/mac_installer/PostInstall.cpp +++ b/mac_installer/PostInstall.cpp @@ -65,8 +65,7 @@ static Boolean gQuitFlag = false; /* global */ static char *brandName[NUMBRANDS]; static char *appName[NUMBRANDS]; static char *appNameEscaped[NUMBRANDS]; - - +static char *receiptNameEscaped[NUMBRANDS]; enum { launchWhenDone, logoutRequired, @@ -107,14 +106,17 @@ int main(int argc, char *argv[]) appName[0] = "/Applications/BOINCManager.app"; appNameEscaped[0] = "/Applications/BOINCManager.app"; brandName[0] = "BOINC"; + receiptNameEscaped[0] = "/Library/Receipts/BOINC.pkg"; appName[1] = "/Applications/GridRepublic Desktop.app"; appNameEscaped[1] = "/Applications/GridRepublic\\ Desktop.app"; brandName[1] = "GridRepublic"; + receiptNameEscaped[1] = "/Library/Receipts/GridRepublic\\ Desktop.pkg"; appName[2] = "/Applications/Progress Thru Processors Desktop.app"; appNameEscaped[2] = "/Applications/Progress\\ Thru\\ Processors\\ Desktop.app"; brandName[2] = "Progress Thru Processors"; + receiptNameEscaped[2] = "/Library/Receipts/Progress\\ Thru\\ Processors.pkg"; for (i=0; i. + +## +# Script to convert Macintosh BOINC installer to Progress Thru Processors Desktop installer +# updated 6/10/09 by Charlie Fenton +## + +## Usage: +## First put the following files into a working directory: +## the BOINC installer to be converted +## the Uninstall BOINC application to be converted +## PTP_ReadMe.rtf +## ProgThruProc.icns +## PTP_install.icns +## PTP_uninstall.icns +## COPYING +## COPYING.LESSER (for version 6.3.x and later only) +## COPYRIGHT +## skins directory containing Progress Thru Processors skin (optional) +## acct_mgr_url.xml (to have BOINC automatically connect to Account Manager) +## PostInstall.app (needed only for version 6.2.x or earlier) +## ProgThruProc.tiff (for screensaver coordinator) +## ProgThruProc_ss_logo (for screensaver coordinator) +## PTP_saver directory containing Progress Thru Processors default screensaver and associated files, including: +## boincscr (default screensaver) +## +## NOTE: This script uses PackageMaker, which is installed as part of the +## XCode developer tools. So you must have installed XCode Developer +## Tools on the Mac before running this script. +## +## cd to the working directory: +## +## Invoke this script with the three parts of version number as arguments. +## For example, if the version is 3.2.1: +## sh [path_to_this_script] 3 2 1 +## +## This will create a directory "BOINC_Installer" in the parent directory of +## the current directory +## +## For different branding, modify the following 9 variables: +PR_PATH="PTP_Pkg_Root" +IR_PATH="PTP_Installer_Resources" +SCRIPTS_PATH="PTP_Installer_Scripts" +NEW_DIR_PATH="New_Release_PTP_$1_$2_$3" +README_FILE="PTP-ReadMe.rtf" +## BRANDING_FILE="PTP-Branding" +BRANDING_INFO="BrandId=2" +ICNS_FILE="ProgThruProc.icns" +INSTALLER_ICNS_FILE="PTP_install.icns" +UNINSTALLER_ICNS_FILE="PTP_uninstall.icns" +SAVER_DIR="PTP_saver" +SAVER_SYSPREF_ICON="ProgThruProc.tiff" +SAVER_LOGO="ProgThruProc_ss_logo.png" +BRAND_NAME="Progress Thru Processors" +MANAGER_NAME="Progress Thru Processors Desktop" +LC_BRAND_NAME="Progress Thru Processors" +SOURCE_PKG_PATH="BOINC Installer.app/Contents/Resources/BOINC.pkg/Contents" + +if [ $# -lt 3 ]; then +echo "Usage:" +echo " cd working_directory" +echo " sh [path_to_this_script] major_version minor_version revision_number" +echo "" +echo "See comments at start of script for more info." +echo "" +exit 1 +fi + +pushd ./ + +## Make sure sed uses UTF-8 text encoding +unset LC_CTYPE +unset LC_MESSAGES +unset __CF_USER_TEXT_ENCODING +export LANG=en_US.UTF-8 + +if [ -f /Developer/usr/bin/packagemaker ]; then + PACKAGEMAKER_VERSION=3 +else + PACKAGEMAKER_VERSION=2 +fi + +sudo rm -dfR "${IR_PATH}" +sudo rm -dfR "${PR_PATH}" +sudo rm -dfR "${SCRIPTS_PATH}" + +mkdir -p "${IR_PATH}" +mkdir -p "${PR_PATH}" + +sudo rm -dfR "${NEW_DIR_PATH}/" + +mkdir -p "${NEW_DIR_PATH}/" +mkdir -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal" +mkdir -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras" + +cp -fp "${SOURCE_PKG_PATH}/Archive.pax.gz" "${PR_PATH}/" +cd "${PR_PATH}" +sudo gunzip ./Archive.pax.gz +sudo pax -r -pe -f Archive.pax +rm -df "Archive.pax" +cd .. + +cp -fp "${SOURCE_PKG_PATH}/Resources/License.rtf" "${IR_PATH}/" +cp -fp "${README_FILE}" "${IR_PATH}/ReadMe.rtf" +# Update version number +sed -i "" s/""/"$1.$2.$3"/g "${IR_PATH}/ReadMe.rtf" + +if [ "$PACKAGEMAKER_VERSION" = "3" ]; then + mkdir -p "${SCRIPTS_PATH}" +else + SCRIPTS_PATH=${IR_PATH} +fi + +# Create the installer's preinstall and preupgrade scripts from the standard preinstall script +# Older versions of BOINC installer did not use preinstall and preupgrade scripts, so check first +if [ -f "${SOURCE_PKG_PATH}/Resources/preinstall" ]; then + cp -fp "${SOURCE_PKG_PATH}/Resources/preinstall" "${SCRIPTS_PATH}/" + + sed -i "" s/BOINCManager/"${MANAGER_NAME}"/g "${SCRIPTS_PATH}/preinstall" + sed -i "" s/BOINCSaver/"${BRAND_NAME}"/g "${SCRIPTS_PATH}/preinstall" + + cp -fp "${SCRIPTS_PATH}/preinstall" "${SCRIPTS_PATH}/preupgrade" +fi + +cp -fp "${SOURCE_PKG_PATH}/Resources/postinstall" "${SCRIPTS_PATH}/" +cp -fp "${SOURCE_PKG_PATH}/Resources/postupgrade" "${SCRIPTS_PATH}/" +if [ "$1" = "6" ] && [ "$2" = "2" ]; then + cp -fpR "PostInstall.app" "${IR_PATH}/" +else + cp -fpR "${SOURCE_PKG_PATH}/Resources/PostInstall.app" "${IR_PATH}/" +fi +cp -fp "${SOURCE_PKG_PATH}/Resources/all_projects_list.xml" "${IR_PATH}/" + +##### We've decided not to customize BOINC Data directory name for branding +#### mkdir -p "${PR_PATH}/Library/Application Support/${BRAND_NAME} Data" +#### mkdir -p "${PR_PATH}/Library/Application Support/${BRAND_NAME} Data/locale" + +## Put Branding file into BOINC Data folder to make it available to screensaver coordinator +sudo echo ${BRANDING_INFO} > "${PR_PATH}/Library/Application Support/BOINC Data/Branding" + +## If skins folder is present. copy it into BOINC Data folder +if [ -d "skins" ]; then + sudo cp -fR "skins" "${PR_PATH}/Library/Application Support/BOINC Data/" +fi + +## If account manager URL file is present, copy it into BOINC Data folder +if [ -f "acct_mgr_url.xml" ]; then + sudo cp -fR "acct_mgr_url.xml" "${PR_PATH}/Library/Application Support/BOINC Data/acct_mgr_url.xml" +fi + +## Modify for Progress Thru Processors +# Rename the Manager's bundle and its executable inside the bundle +sudo mv -f "${PR_PATH}/Applications/BOINCManager.app/" "${PR_PATH}/Applications/${MANAGER_NAME}.app/" +sudo mv -f "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/MacOS/BOINCManager" "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/MacOS/${MANAGER_NAME}" + +# Update the Manager's info.plist, InfoPlist.strings files +sudo sed -i "" s/BOINCManager/"${MANAGER_NAME}"/g "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Info.plist" +sudo sed -i "" s/BOINCMgr.icns/"${ICNS_FILE}"/g "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Info.plist" +sudo sed -i "" s/BOINC/"${MANAGER_NAME}"/g "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" + +# Replace the Manager's BOINCMgr.icns file +sudo cp -fp "${ICNS_FILE}" "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Resources/${ICNS_FILE}" +sudo rm -f "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Resources/BOINCMgr.icns" + +# Put Branding file in both Installer Package and Application Bundle +sudo echo ${BRANDING_INFO} > "${IR_PATH}/Branding" +sudo cp -fp "${IR_PATH}/Branding" "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Resources/Branding" + +# Rename the screensaver coordinator bundle and its executable inside the bundle +sudo mv -f "${PR_PATH}/Library/Screen Savers/BOINCSaver.saver" "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver" +sudo mv -f "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/MacOS/BOINCSaver" "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/MacOS/${BRAND_NAME}" + +# Update screensaver coordinator's info.plist, InfoPlist.strings files +sudo sed -i "" s/BOINCSaver/"${BRAND_NAME}"/g "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Info.plist" +sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Resources/English.lproj/InfoPlist.strings" + +# Replace screensaver coordinator's boinc.tiff or boinc.jpg file +sudo rm -f "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Resources/boinc.jpg" +sudo cp -fp "${SAVER_SYSPREF_ICON}" "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Resources/boinc.tiff" + +# Replace screensaver coordinator's boinc_ss_logo.png file +sudo rm -f "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Resources/boinc_ss_logo.png" +sudo cp -fp "${SAVER_LOGO}" "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Resources/boinc_ss_logo.png" + +# Delete the BOINC default screensaver and its associated files +sudo rm -f "${PR_PATH}/Library/Application Support/BOINC Data/boinc_logo_black.jpg" +sudo rm -f "${PR_PATH}/Library/Application Support/BOINC Data/Helvetica.tx" +sudo rm -f "${PR_PATH}/Library/Application Support/BOINC Data/ss_config.xm" +sudo rm -f "${PR_PATH}/Library/Application Support/BOINC Data/boincsc" + +# Copy the Progress Thru Processors default screensaver files into BOINC Data folder +sudo cp -fR "${SAVER_DIR}/" "${PR_PATH}/Library/Application Support/BOINC Data/" + +# Copy and rename the Uninstall application's bundle and rename its executable inside the bundle +sudo cp -fpR "Uninstall BOINC.app" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app" +sudo mv -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/MacOS/Uninstall BOINC" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/MacOS/Uninstall ${BRAND_NAME}" + +# Update Uninstall application's info.plist, InfoPlist.strings files +sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Info.plist" +sudo sed -i "" s/MacUninstaller.icns/"${UNINSTALLER_ICNS_FILE}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Info.plist" +sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" + +# Replace the Uninstall application's MacUninstaller.icns file +sudo cp -fp "${UNINSTALLER_ICNS_FILE}" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/${UNINSTALLER_ICNS_FILE}" +sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/MacUninstaller.icns" +# Remove the Uninstall application's resource file so it will show generic "Are you sure?" dialog +sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/Uninstall BOINC.rsrc" + +sudo chown -R root:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app" +sudo chmod -R 555 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app" + +## Fix up ownership and permissions +sudo chown -R root:admin "${PR_PATH}"/* +sudo chmod -R u+rw,g+rw,o+r-w "${PR_PATH}"/* +sudo chmod 1775 "${PR_PATH}/Library" + +sudo chown -R 501:admin "${PR_PATH}/Library/Application Support"/* +sudo chmod -R u+rw,g+r-w,o+r-w "${PR_PATH}/Library/Application Support"/* + +sudo chown -R root:admin "${IR_PATH}"/* +sudo chmod -R u+rw,g+r-w,o+r-w "${IR_PATH}"/* +sudo chown -R root:admin "${SCRIPTS_PATH}"/* +sudo chmod -R u+rw,g+r-w,o+r-w "${SCRIPTS_PATH}"/* + +sudo cp -fp "${IR_PATH}/ReadMe.rtf" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/ReadMe.rtf" +sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/ReadMe.rtf" +sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/ReadMe.rtf" +sudo cp -fp "COPYING" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras" +sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING" +sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING" +sudo cp -fp "COPYRIGHT" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/" +sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYRIGHT" +sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYRIGHT" + +# COPYING.LESSER is part of GNU License v3, included only with BOINC 6.3.x and later +if [ -f "COPYING.LESSER" ]; then + sudo cp -fp "COPYING.LESSER" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras" + sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER" + sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER" +fi + +# Make temporary copies of Pkg-Info.plist and Description.plist for PackageMaker and update for this branding +sudo cp -fp "${SOURCE_PKG_PATH}/Info.plist" "${NEW_DIR_PATH}/Pkg-Info.plist" +sudo chown -R 501:admin "${NEW_DIR_PATH}/Pkg-Info.plist" +sudo chmod -R 666 "${NEW_DIR_PATH}/Pkg-Info.plist" +if [ -f "${SOURCE_PKG_PATH}/Resources/English.lproj/Description.plist" ]; then + sudo cp -fp "${SOURCE_PKG_PATH}/Resources/English.lproj/Description.plist" "${NEW_DIR_PATH}" +else + sudo cp -fp "${SOURCE_PKG_PATH}/Resources/en.lproj/Description.plist" "${NEW_DIR_PATH}" +fi +sudo chown -R 501:admin "${NEW_DIR_PATH}/Description.plist" +sudo chmod -R 666 "${NEW_DIR_PATH}/Description.plist" + +# Update Pkg-Info.plist name and ensure it is in XML format +defaults write "`pwd`/${NEW_DIR_PATH}/Pkg-Info" "CFBundleGetInfoString" "$BRAND_NAME $1.$2.$3" +plutil -convert xml1 "`pwd`/${NEW_DIR_PATH}/Pkg-Info.plist" + +# Update Description.plist name and ensure it is in XML format +defaults write "`pwd`/${NEW_DIR_PATH}/Description" "IFPkgDescriptionTitle" "$MANAGER_NAME" +plutil -convert xml1 "`pwd`/${NEW_DIR_PATH}/Description.plist" + +# Copy the installer wrapper application "${BRAND_NAME} Installer.app" +sudo cp -fpR "BOINC Installer.app" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app" +sudo rm -dfR "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/BOINC.pkg" + +# Update the installer wrapper application's info.plist, InfoPlist.strings files +sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Info.plist" +sudo sed -i "" s/MacInstaller.icns/"${INSTALLER_ICNS_FILE}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Info.plist" +sudo sed -i "" s/BOINC/"${MANAGER_NAME}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/English.lproj/InfoPlist.strings" + +# Replace the installer wrapper application's MacInstaller.icns file +sudo cp -fp "${INSTALLER_ICNS_FILE}" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${INSTALLER_ICNS_FILE}" +sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/MacInstaller.icns" + +# Rename the installer wrapper application's executable inside the bundle +sudo mv -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/MacOS/BOINC Installer" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/MacOS/${BRAND_NAME} Installer" + +# Build the installer package inside the wrapper application's bundle +if [ "$PACKAGEMAKER_VERSION" = "3" ]; then + # Packagemaker Version 3 +## /Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg + /Developer/usr/bin/packagemaker -r "${PR_PATH}" -e "${IR_PATH}" -s "${SCRIPTS_PATH}" -f "${NEW_DIR_PATH}/Pkg-Info.plist" -t "${MANAGER_NAME}" -n "$1.$2.$3" -b -o "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg" + # Remove TokenDefinitions.plist and IFPkgPathMappings in Info.plist, which would cause installer to find a previous copy of ${MANAGER_NAME} and install there + sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Resources/TokenDefinitions.plist" + defaults delete "`pwd`/${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Info" IFPkgPathMappings +else + # Packagemaker Version 2 +## /Developer/Tools/packagemaker -build -p ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg -f ../BOINC_Installer/Pkg_Root -r ../BOINC_Installer/Installer\ Resources/ -i mac_build/Pkg-Info.plist -d mac_Installer/Description.plist -ds + /Developer/Tools/packagemaker -build -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg" -f "${PR_PATH}" -r "${IR_PATH}" -i "${NEW_DIR_PATH}/Pkg-Info.plist" -d "${NEW_DIR_PATH}/Description.plist" -ds +fi + +## for debugging +## if [ $? -ne 0 ]; then +## echo "" +## echo "********** /Pkg-Info.plist File contents: *************" +## echo "" +## cp "${NEW_DIR_PATH}/Pkg-Info.plist" /dev/stdout +## echo "" +## echo "********** End /Pkg-Info.plist File contents *************" +## echo "" +## fi + +# Allow the installer wrapper application to modify the package's Info.plist file +sudo chmod u+w,g+w,o+w "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Info.plist" + +# Update the installer wrapper application's creation date +sudo touch "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app" + +# Remove temporary copies of Pkg-Info.plist and Description.plist +sudo rm ${NEW_DIR_PATH}/Pkg-Info.plist +sudo rm ${NEW_DIR_PATH}/Description.plist + +# Remove temporary directories +sudo rm -dfR "${IR_PATH}" +sudo rm -dfR "${PR_PATH}" +sudo rm -dfR "${SCRIPTS_PATH}" + +# Compress the products +cd ${NEW_DIR_PATH} +zip -rqy "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal" +##### We've decided not to create branded command-line executables; they are identical to standard ones +#### zip -rqy "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin.zip" "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin" +##### We've decided not to create branded symbol table file; it is identical to standard one +#### zip -rqy "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables.zip" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables" + +# Force Finder to recognize changed icons by deleting the uncompressed products and expanding the zip file +sudo rm -dfR "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal" +open "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip" + +popd +exit 0 diff --git a/mac_installer/uninstall.cpp b/mac_installer/uninstall.cpp index f69b219eb7..f651686e68 100644 --- a/mac_installer/uninstall.cpp +++ b/mac_installer/uninstall.cpp @@ -201,12 +201,12 @@ static OSStatus DoUninstall(void) { system ("rm -rf \"/Applications/GridRepublic Desktop.app\""); system ("rm -rf \"/Library/Screen Savers/GridRepublic.saver\""); - system ("rm -rf \"/Applications/Progress Thru Processors Desktop.app\""); - system ("rm -rf \"/Library/Screen Savers/Progress Thru Processors.saver\""); + system ("rm -rf \"/Applications/Progress\\ Thru\\ Processors\\ Desktop.app\""); + system ("rm -rf \"/Library/Screen Savers/Progress\\ Thru\\ Processors.saver\""); system ("rm -rf /Library/Receipts/GridRepublic.pkg"); - system ("rm -rf /Library/Receipts/Progress Thru Processors.pkg"); + system ("rm -rf /Library/Receipts/Progress\\ Thru\\ Processors.pkg"); system ("rm -rf /Library/Receipts/BOINC.pkg"); // We don't customize BOINC Data directory name for branding