Switch to an installer package for OS X instead of a draggable app

bundle. There are still a few rough edges but it's an improvement over
what we currently have. Fixes bug 5756.

svn path=/trunk/; revision=37093
This commit is contained in:
Gerald Combs 2011-05-12 18:02:00 +00:00
parent f9fad8cd75
commit 835d5e4ec7
13 changed files with 121 additions and 72 deletions

View File

@ -21,7 +21,7 @@ StartService ()
# only the super-user can send raw packets but anybody in the
# admin group can capture packets.
#
chgrp admin /dev/bpf*
chgrp access_bpf /dev/bpf*
chmod g+rw /dev/bpf*
}

View File

@ -1,10 +1,10 @@
{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf440
{\fonttbl\f0\froman\fcharset77 TimesNewRomanPS-BoldMT;\f1\fswiss\fcharset77 Helvetica;\f2\froman\fcharset77 TimesNewRomanPSMT;
\f3\fswiss\fcharset77 Helvetica-Oblique;\f4\fswiss\fcharset77 Helvetica-Bold;}
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\froman\fcharset0 TimesNewRomanPSMT;\f1\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid2}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid1\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid201\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid3}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}}
\margl1440\margr1440\vieww13060\viewh12960\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
@ -18,55 +18,57 @@
Quick Setup\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f2\b0\fs24 \cf0 \
\b0\fs24 \cf0 \
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural
\ls1\ilvl0
\f1 \cf0 {\listtext 1. }Drag the Wireshark icon onto to the
\f3\i Applications
\f1\i0 alias.\
{\listtext 2. }Open the
\f3\i Utilities
\f1\i0 folder.\
{\listtext 3. }Drag the contents of the
\f3\i Command Line
\f1\i0 folder to
\f3\i $HOME/bin
\f1\i0 ,
\f3\i /usr/local/bin
\f1\i0 ,
\f3\i /opt/wireshark/bin
\f1\i0 or any other location that makes sense (preferably one that's in your PATH).\
{\listtext 4. }You will probably need to adjust the permissions of /dev/bpf
\f4\b *
\f1\b0 in order to capture. You can do this by hand or by dragging the
\f3\i ChmodBPF
\f1\i0 folder onto the
\f3\i StartupItems
\f1\i0 alias.\
\f1 \cf0 Simply double-click the Wireshark package. For details about the installation read below.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f0\b\fs28 \cf0 Details\
\f0\b\fs28 \cf0 What changes does the installer make?\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f2\b0\fs24 \cf0 \
\b0\fs24 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f1 \cf0 This disk image contains the following:\
\f1 \cf0 The installer writes to the following locations:\
\
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural
\ls2\ilvl0\cf0 {\listtext \'a5 }The Wireshark application, which can be placed anywhere on your system. It requires X11.\
{\listtext \'a5 }The
\f3\i Utilities/Command Line
\f1\i0 folder, which contains links to Wireshark's command line utilities. These can be placed anywhere on your system, but they must all be in the same directory. If you placed Wireshark in a folder other than
\f3\i /Applications
\f1\i0 , you'll have to set WIRESHARK_APP_DIR in order for these to work. \
{\listtext \'a5 }The
\f3\i Utilties/ChmodBPF
\f1\i0 folder, which contains the ChmodBPF startup item from the libpcap distribution. This can be used to set the permissions of /dev/bpf
\f4\b *
\f1\b0 when your system starts up. See
\f3\i Utilties/ChmodBPF/README.macosx
\f1\i0 for more details.\
{\listtext \'a5 }This file.}
\ls2\ilvl0\cf0 {\listtext \'95 }
\i /Applications/Wireshark
\i0 . The main Wireshark application.\
{\listtext \'95 }
\i /Library/StartupItems/ChmodBPF
\i0 . A script which adjusts permissions on the system's packet capture devices (
\i /dev/bpf
\i0 *) when the system starts up.\
{\listtext \'95 }
\i /Library/Wireshark
\i0 . A wrapper script and symbolic links which will let you run Wireshark and its associated utilities from the command line. You can access them directly or by adding /Library/Wireshark to your PATH.\
\pard\tx560\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\cf0 \
Additionally a group named
\i access_bpf
\i0 is created. The user who opened the package is added to the group.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f0\b\fs28 \cf0 How do I uninstall?\
\b0\fs24 \
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural
\ls3\ilvl0
\f1 \cf0 {\listtext 1. }Remove
\i /Applications/Wireshark
\i0 \
{\listtext 2. }Remove
\i /Library/Wireshark
\i0 \
{\listtext 3. }Remove
\i /Library/StartupItems/ChmodBPF
\i0 \
{\listtext 4. }Remove the
\i access_bpf
\i0 group.\
}

View File

@ -0,0 +1,11 @@
#!/bin/sh
CHMOD_BPF="/Library/StartupItems/ChmodBPF/ChmodBPF"
BPF_GROUP="access_bpf"
BPF_GROUP_NAME="BPF device access ACL"
dseditgroup -q -o read "$BPF_GROUP" > /dev/null 2>&1 || \
dseditgroup -q -o create "$BPF_GROUP"
dseditgroup -q -o edit -a "$USER" -t user "$BPF_GROUP"
sh "$CHMOD_BPF" start

View File

@ -0,0 +1,26 @@
#!/bin/sh
CLI_PATH="$2"
BINARIES="
capinfos
dftest
dumpcap
editcap
idl2wrs
mergecap
randpkt
rawshark
text2pcap
tshark
"
cd "$CLI_PATH"
rm -f ./wireshark
mv utility-launcher wireshark
chmod 755 wireshark
for BIN in $BINARIES ; do
rm -rf ./"$BIN"
ln -sn ./wireshark "$BIN"
done

View File

@ -0,0 +1,3 @@
#!/bin/sh
# This space intentionally left blank

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"/>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="0B0ABFF7-3A3D-4F37-B998-DC99734E0EFC"><config><identifier>org.wireshark.Wireshark.pkg</identifier><version>0.0.0.0</version><description></description><post-install type="none"/><installFrom relative="true" includeRoot="true">Wireshark.app</installFrom><installTo relocatable="true">/Applications</installTo><flags><followSymbolicLinks/><allowRevert/><mod>allowRevert</mod></flags><packageStore type="internal"></packageStore><mod>scripts.scriptsDirectoryPath.isAbsoluteType</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>installTo</mod><mod>scripts.postinstall.path</mod><mod>scripts.postinstall.isRelativeType</mod><mod>installFrom.isRelativeType</mod><mod>version</mod><mod>parent</mod><mod>scripts.scriptsDirectoryPath.path</mod><mod>identifier</mod><mod>relocatable</mod><mod>requireAuthorization</mod><mod>extraFiles</mod><mod>postInstall</mod></config><scripts><postinstall relative="true" mod="true">Scripts/wireshark-postinstall.sh</postinstall><scripts-dir relative="true" mod="true">Scripts</scripts-dir><scripts-element/></scripts><contents><component id="org.wireshark.Wireshark" path="/Users/gcombs/Development/wireshark/packaging/macosx/Wireshark.app" version="1.5.2" isDowngradeable="true"/><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"/>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="67B4E446-7EE6-4D65-9616-CECAA7FB2094"><config><identifier>org.wireshark.wireshark.ChmodBPF.pkg</identifier><version>1.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true" includeRoot="true">ChmodBPF</installFrom><installTo mod="true">/Library/StartupItems</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.postinstall.path</mod><mod>includeRoot</mod><mod>installFrom.isRelativeType</mod><mod>version</mod><mod>parent</mod><mod>scripts.scriptsDirectoryPath.path</mod><mod>requireAuthorization</mod><mod>identifier</mod><mod>extraFiles</mod><mod>installTo.path</mod><mod>postInstall</mod></config><scripts><postinstall relative="true" mod="true">Scripts/chmodbpf-postinstall.sh</postinstall><scripts-dir relative="true" mod="true">Scripts</scripts-dir><scripts-element/></scripts><extra-files/><additionalPkgInfoXML><pkg-info><scripts><postinstall file="./postinstall"/></scripts></pkg-info></additionalPkgInfoXML></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"/>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="F7F04C41-A94E-4CCA-A8F5-8B774B8D9151"><config><identifier>org.wireshark.wireshark.utility-launcher.pkg</identifier><version>1.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true">utility-launcher</installFrom><installTo mod="true" relocatable="true">/Library/Wireshark</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>relocatable</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod><mod>installTo.path</mod><mod>installFrom.isRelativeType</mod><mod>scripts.postinstall.isRelativeType</mod></config><scripts><postinstall relative="true" mod="true">Scripts/cli-postinstall.sh</postinstall><scripts-dir relative="true" mod="true">Scripts</scripts-dir></scripts></pkgref>

View File

@ -0,0 +1 @@
<pkmkdoc spec="1.12"><properties><title>Wireshark</title><build>/Users/gcombs/Development/wireshark/packaging/macosx/Wireshark.pkg</build><organization>org.wireshark</organization><userSees ui="both"/><min-target os="3"/><domain anywhere="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>Wireshark (requires X11) and associated command line utilities.</description><contents><choice title="Wireshark" id="wireshark" tooltip="The Wireshark network protocol analyzer" description="The main Wireshark application" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.wireshark.Wireshark.pkg"/></choice><choice title="Set capture permissions at startup" id="chmodbpf" tooltip="Install the ChmodBPF startup item and add an access_bpf group" description="This installs a startup item (ChmodBPF) that changes the group permissions of each BPF device to allow access for the &quot;access_bpf&quot; group. It creates the &quot;access_bpf&quot; group if it doesn't exist and adds the current user to the group." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.wireshark.wireshark.ChmodBPF.pkg"/></choice><choice title="Command line utilities" id="cli" tooltip="Command line utilities associated with Wireshark" description="Various utilities associated with Wireshark including TShark, dumpcap, mergecap, capinfos, and editcap." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.wireshark.wireshark.utility-launcher.pkg"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource type="license">/Users/gcombs/Development/wireshark/packaging/macosx/COPYING.txt</resource></locale></resources><requirements><requirement id="tosv" operator="ge" value="'10.5.5'"><message-title>Failure</message-title><message>This package requires Mac OS X 10.5.5 or later. If you cannot upgrade you might try installing using MacPorts or Fink.</message></requirement></requirements><flags/><extra-files/><item type="file">01wireshark.xml</item><item type="file">02chmodbpf.xml</item><item type="file">03utility.xml</item><mod>description</mod><mod>properties.title</mod><mod>postinstallActions.actions</mod><mod>properties.userDomain</mod><mod>properties.customizeOption</mod><mod>extraFiles</mod><mod>properties.systemDomain</mod><mod>properties.anywhereDomain</mod></pkmkdoc>

View File

@ -39,14 +39,13 @@
# Defaults
set_ds_store=false
ds_store_root="root.ds_store"
ds_store_util="util.ds_store"
package="Wireshark.app"
app_bundle="Wireshark.app"
rw_name="RWwireshark.dmg"
volume_name="Wireshark"
tmp_dir="/tmp/dmg-$$"
auto_open_opt=
utilities="Utilities"
ws_bin="$package/Contents/Resources/bin/wireshark-bin"
ws_bin="$app_bundle/Contents/Resources/bin/wireshark-bin"
PATH=$PATH:/Developer/Tools
@ -64,8 +63,8 @@ OPTIONS
-h,--help
display this help message
-s
set a new apperance (do not actually creates a bundle)
-p,--package
set a new apperance (do not actually create a bundle)
-b,--app-bundle
set the path to the Wireshark.app that should be copied
in the dmg
"
@ -80,8 +79,8 @@ do
exit 0 ;;
-s)
set_ds_store=true ;;
-p|--package)
package="$2"
-b|--app-bundle)
app_bundle="$2"
shift 1 ;;
*)
echo "Invalid command line option"
@ -91,8 +90,8 @@ do
done
# Safety checks
if [ ! -e "$package" ]; then
echo "Cannot find package: $package"
if [ ! -e "$app_bundle" ]; then
echo "Cannot find application bundle: $app_bundle"
exit 1
fi
@ -101,7 +100,6 @@ if [ ! -e "$utilities" ]; then
echo "Cannot find utilities: $utilities"
exit 1
fi
echo -e "\nCREATE WIRESHARK DISK IMAGE\n"
# Get the architecture
case `file $ws_bin` in
@ -129,7 +127,18 @@ if [ -z "$version" ] ; then
echo "Cannot find VERSION in ../../configure.in"
exit 1
fi
img_name="$volume_name $version $architecture.dmg"
echo -e "\nCREATE WIRESHARK PACKAGE\n"
pkg_title="$volume_name $version $architecture"
pkg_file="$pkg_title.pkg"
rm -rf "$pkg_file"
/Developer/usr/bin/packagemaker --doc "Wireshark package.pmdoc" \
--version "$version" \
--title "$pkg_title" \
--verbose || exit 1
echo -e "\nCREATE WIRESHARK DISK IMAGE\n"
img_name="$pkg_title.dmg"
# Create temp directory with desired contents of the release volume.
rm -rf "$tmp_dir"
@ -138,21 +147,15 @@ mkdir "$tmp_dir"
echo -e "Copying files to temp directory"
# Wireshark itself
# Copy Wireshark.app
cp -rf "$package" "$tmp_dir"/
cp -rf "$pkg_file" "$tmp_dir"/
# Link to Applications in order to drag and drop wireshark onto it
ln -sf /Applications "$tmp_dir"/
#ln -sf /Applications "$tmp_dir"/
# Copy the utilites
cp -rf "$utilities" "$tmp_dir"/
ln -sf /Library/StartupItems "$tmp_dir/$utilities"/
#cp -rf "$utilities" "$tmp_dir"/
#ln -sf /Library/StartupItems "$tmp_dir/$utilities"/
# Copy the readme
cp -rf Read_me_first.rtf "$tmp_dir"/"Read me first.rtf"
# Copy a background images inside hidden directories so the image file itself won't be shown.
mkdir "$tmp_dir/.background"
cp dmg_background.png "$tmp_dir/.background/background.png"
mkdir "$tmp_dir/$utilities/.background"
cp util_background.png "$tmp_dir/$utilities/.background/background.png"
# If the appearance settings are not to be modified we just copy them
if [ ${set_ds_store} = "false" ]; then
# Copy the .DS_Store file which contains information about
@ -160,7 +163,6 @@ if [ ${set_ds_store} = "false" ]; then
# with Apple script but involves user intervention so we
# just keep a copy of the correct settings and use that instead.
cp $ds_store_root "$tmp_dir/.DS_Store"
cp $ds_store_util "$tmp_dir/$utilities/.DS_Store"
auto_open_opt=-noautoopen
fi
@ -202,9 +204,7 @@ if [ ${set_ds_store} = "true" ]; then
echo
cp /Volumes/$volume_name/.DS_Store ./$ds_store_root
SetFile -a v ./$ds_store_root
cp /Volumes/$volume_name/$utilities/.DS_Store ./$ds_store_util
SetFile -a v ./$ds_store_util
echo "New $ds_store_root and $ds_store_util written. Re-run $0 without the -s option to use them"
echo "New $ds_store_root written. Re-run $0 without the -s option to use them"
# Unmount the disk image.
hdiutil detach "$DEV_NAME"