• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Tell why it failed
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tell why it failed


  • Subject: Re: Tell why it failed
  • From: Conor Schutzman <email@hidden>
  • Date: Thu, 06 Jun 2013 10:01:58 -0700

You have pretty limited control over that UI.  In fact, I don't even know if any of the GUI tools (Packages, PackageMaker, Casper Composer, etc.) even let you customize the failure message, let alone offer different screens for different failures.

Therefore, your script has to do all of the heavy lifting.  There are two main ways to log what your script is doing, you can either redirect std out and std err messages into a text file somewhere, or you can use logger to write directly to the syslog (and thus viewable in Console.app).  You can even go one step further, and write a function to use echo to write log messages to a file, this is what I do.

Here is a a little quick and dirty uninstall script for VMware that demonstrates both building a function for echo, and redirecting std out to a log file.


#!/usr/bin/env bash

## HEADER
SoftwareTitle=VMware
LogFolder="$3/Library/Logs/Packages"
LogFile="$LogFolder/Uninstall.log"
TimeStamp=`date "+%a %b%e %Y %T"`
writeLog(){
  LogMessage=$1
  echo "[$TimeStamp] [$SoftwareTitle]: $LogMessage" >> "$LogFile"
}

## LOGGING
if [[ ! -d $LogFolder ]]; then
	mkdir -p $LogFolder
	chown root:wheel $LogFolder
	chmod 775 $LogFolder
fi
if [[ ! -w $LogFile ]]; then
	touch -f $LogFile
	chown root:wheel $LogFile
	chmod 775 $LogFile
fi
echo "====================" >> "$LogFile"

## QUITTING APP
writeLog "Quitting application."
osascript -e 'tell application "VMware Fusion" to quit'

## APPLICATION
AppName="VMware Fusion"
if [[ -e "$3/Applications/$AppName.app" ]]; then
	rm -Rdv "$3/Applications/$AppName.app" >> $LogFile
fi
if [[ -e "$3/Users/$USER/Applications/$AppName.app" ]]; then
	rm -Rdv "$3/Users/$USER/Applications/$AppName.app" >> $LogFile
fi
if [[ -e "$3/Library/Preferences/$AppName" ]]; then
	rm -Rdv "$3/Library/Preferences/$AppName" >> $LogFile
fi

## RECEIPT
ReceiptList=$(pkgutil --packages | grep vmware)
for EachReceipt in ${ReceiptList[@]}; do
	pkgutil --forget $EachReceipt >> $LogFile
done

## FOOTER
echo "====================" >> "$LogFile"
exit 0


On Jun 6, 2013, at 9:27 AM, Scott Grosch <email@hidden> wrote:

> My installer depends heavily on a postinstall script to do most of the work.  The "install" part of the package just copies some data in, but then in postinstall I turn on Postgres, create the user/db, configure a bunch of files, etc….
>
> There are many ways it can fail though, and right now I just do an "exit 1" and then the installer says the installation failed.
>
> How do I provide the user with a message as to exactly *why* it failed?  For example, I'd like to be able to say, "Unable to connect to Postgres" so that they know to go check their configuration, for example.
>
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Installer-dev mailing list      (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Installer-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: Tell why it failed
      • From: Bill Coderre <email@hidden>
References: 
 >Tell why it failed (From: Scott Grosch <email@hidden>)

  • Prev by Date: Tell why it failed
  • Next by Date: Re: Tell why it failed
  • Previous by thread: Tell why it failed
  • Next by thread: Re: Tell why it failed
  • Index(es):
    • Date
    • Thread