# Reducing TBB from 32MB to 23MB # PRE-REQ # Download TBB OSX cd /tmp/ wget https://www.torproject.org/dist/torbrowser/osx/TorBrowser-2.2.34-3-dev-osx-x86_64-en-US.zip # Size is 32MB # du -sh /tmp/TorBrowser-2.2.34-3-dev-osx-x86_64-en-US.zip 32M /tmp/TorBrowser-2.2.34-3-dev-osx-x86_64-en-US.zip # Install p7zip binary on system # we use brew https://github.com/mxcl/homebrew brew install p7zip # Unzip TBB unzip TorBrowser-2.2.34-3-dev-osx-x86_64-en-US.zip cd TorBrowser_en-US.app/Contents/MacOS cp -pr /usr/local/Cellar/p7zip/9.20.1/ p7zip # Strip strippable files (-1MB of uncompressed size) find . -type f -exec strip -S -x -X {} \; 2> /dev/null # Compress Firefox.app, Vidalia.app and tor # Using those parameters we can save 1.5MB of additional size p7zip/lib/p7zip/7z a -mx=9 -md=64m -mfb=256 Firefox.app.7z Firefox.app p7zip/lib/p7zip/7z a -mx=9 -md=64m -mfb=256 Vidalia.app.7z Vidalia.app p7zip/lib/p7zip/7z a -mx=9 -md=64m -mfb=256 tor.7z tor # Delete the uncompressed version rm -rf tor Vidalia.app Firefox.app # Modify the Shell Script wrapper of TorBrowserBundle # To add automatic 1st launch 7zip decompression vim TorBrowserBundle # Decompress at first run # Move to TorBrowser_en-US.app/Contents/MacOS/ directory WORKDIR=`dirname $0` cd $WORKDIR echo "Verifying if TBB still need to uncompress itself..." if [[ -f tor.7z && -f Vidalia.app.7z && -f Firefox.app.7z && -f p7zip/lib/p7zip/7z ]]; then echo "Files tor.7z - Vidalia.app.7z - Firefox.app.7z available" echo "Decompressing files..." echo -n "...tor.7z..." p7zip/lib/p7zip/7z x tor.7z echo -n "...Vidalia.app.7z..." p7zip/lib/p7zip/7z x Vidalia.app.7z echo -n "...Firefox.app.7z..." p7zip/lib/p7zip/7z x Firefox.app.7z echo "Deleting archives..." rm -f tor.7z echo -n "...tor.7z..." rm -f Vidalia.app.7z echo -n "...Vidalia.app.7z..." rm -f Firefox.app.7z echo -n "...Firefox.app.7z..." else echo "Compressed files not found: TBB already uncompressed" fi # Make a new ZIP image (better to use DMG) cd ../../../ # Current size with built-in 7zip compressed app du -sh TorBrowser_en-US.app 35M TorBrowser_en-US.app # Create compresed archive zip -r -9 TorBrowser-7z-wrap2.2.34-3-dev-osx-x86_64-en-US.zip TorBrowser_en-US.app # New size of Compressed file du -sh TorBrowser-7z-wrap2.2.34-3-dev-osx-x86_64-en-US.zip 23M TorBrowser-7z-wrap2.2.34-3-dev-osx-x86_64-en-US.zip # Now move the file in some other place and just download and run it as usual # The first run will compress and delete the internal .7z file transparently I tried sending via GMAIL and it works fine. I am confident that playing another little bit, using this method and going further, it would be possible to make additional reduction in size. -naif naif@globaleaks.org