diff --git a/BUILD.md b/BUILD.md index e5dd2b42..2b949340 100644 --- a/BUILD.md +++ b/BUILD.md @@ -51,7 +51,7 @@ Each time you start work: . env/bin/activate ``` -Build the .app: +To build the .app: ```sh pyinstaller -w -y setup/onionshare-osx.spec @@ -59,6 +59,12 @@ pyinstaller -w -y setup/onionshare-osx.spec Now you should have `dist/OnionShare.app`. +To build a .dmg (this script builds the .app for you): + +```sh +setup/build_dmg.sh +``` + ## Windows The first time you're setting up your dev environment: diff --git a/build_dmg.sh b/build_dmg.sh new file mode 100755 index 00000000..9b451bb5 --- /dev/null +++ b/build_dmg.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DMG_DIR=$ROOT/dist/dmg +DMG_TMP_NAME=$ROOT/dist/tmp.dmg +DMG_NAME=$ROOT/dist/OnionShare.dmg +TITLE=OnionShare +VOLUME=/Volumes/$TITLE + +cd $ROOT + +# deleting dist +echo Deleting dist folder +rm -rf $ROOT/dist &>/dev/null 2>&1 + +# build the .app +echo Building OnionShare.app +pyinstaller -w -y $ROOT/setup/onionshare-osx.spec + +# create the .dmg +echo Creating DMG +mkdir -p $DMG_DIR +hdiutil create -srcfolder $DMG_DIR -volname $TITLE -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size 100mb $DMG_TMP_NAME +DEVICE=$(hdiutil attach -readwrite -noverify -noautoopen $DMG_TMP_NAME | egrep '^/dev/' | sed 1q | awk '{print $1}') +sleep 10 + +# set up the dmg +echo Setting up DMG +cp -r $ROOT/dist/OnionShare.app $VOLUME +ln -s /Applications $VOLUME/Applications +mkdir $VOLUME/.background +cp $ROOT/setup/dmg_background.png $VOLUME/.background/background.png +echo ' + tell application "Finder" + tell disk "'${TITLE}'" + open + set current view of container window to icon view + set toolbar visible of container window to false + set statusbar visible of container window to false + set the bounds of container window to {100, 100, 400, 480} + set theViewOptions to the icon view options of container window + set arrangement of theViewOptions to not arranged + set icon size of theViewOptions to 72 + set background picture of theViewOptions to file ".background:background.png" + set position of item "'${TITLE}.app'" of container window to {60, 288} + set position of item "Applications" of container window to {268, 288} + update without registering applications + delay 10 + eject + end tell + end tell +' | osascript + +# finalize the DMG +echo Finalizing DMG +hdiutil convert $DMG_TMP_NAME -format UDZO -imagekey zlib-level=9 -o $DMG_NAME +rm -r $DMG_DIR +rm -f $DMG_TMP_NAME + +# all done +echo DMG created: $DMG_NAME diff --git a/setup/dmg_background.png b/setup/dmg_background.png new file mode 100644 index 00000000..c3a02fcb Binary files /dev/null and b/setup/dmg_background.png differ