Skip to content

Make a Cross-Platform Portable Browser Bundle

Tor Browser all ready supports being run as a portable browser from a USB drive, however, this creates a directory that's only compatible with one operating system.

I was recently thinking I could make a cross-platform portable instance (for Windows and Linux with shared data) by just copying the Linux folder on top of the extracted windows directory, however, I found there were several file conflicts,

Browser/dependentlibs.list List of depencices

Browser/omni.ja which is a binary file

Browser/precomplete which appears to be performing some platform-specific cleanup

Browser/tbb_version.json

  • Windows -> {"version":"9.5.3","architecture":"win64","channel":"release","locale":"en-US"}
  • Linux -> {"version":"9.5.3","architecture":"linux64","channel":"release","locale":"en-US"}

Browser/updapter.ini windows has an extra section containing

; IMPORTANT: This file should always start with a newline in case a locale
; provided updater.ini does not end with a newline.
; Application to launch after an update has been successfully applied. This
; must be in the same directory or a sub-directory of the directory of the
; application executable that initiated the software update.
[PostUpdateWin]
; ExeRelPath is the path to the PostUpdateWin executable relative to the
; application executable.
ExeRelPath=uninstall\helper.exe
; ExeArg is the argument to pass to the PostUpdateWin exe
ExeArg=/PostUpdate

Browser/browser/omni.ja binary file again but not the same size as the root version

Browser/TorBrowser/Data/Tor/torrc-defaults identical except for two lines on Windows and Linux

Windows

ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit exec TorBrowser\Tor\PluggableTransports\obfs4proxy.exe

## snowflake configuration
ClientTransportPlugin snowflake exec TorBrowser\Tor\PluggableTransports\snowflake-client.exe -url https://snowflake-broker.azureedge.net/ -front ajax.aspnetcdn.com -ice stun:stun.l.google.com:19302

Linux

ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit exec ./TorBrowser/Tor/PluggableTransports/obfs4proxy

## snowflake configuration
ClientTransportPlugin snowflake exec ./TorBrowser/Tor/PluggableTransports/snowflake-client -url https://snowflake-broker.azureedge.net/ -front ajax.aspnetcdn.com -ice stun:stun.l.google.com:19302

The only difference is the exec path syntax, this could likely be unified, in some way.

It would be nice if a fully cross-platform Portable Tor Browser Directory could be created, such that the user data is shared, an launcher links provide for each platform. Also to be considered is all version of the browser should be updated together, this implies creating a special multiple platform version which contains binaries for Windows, Linux and Mac, such that updating on any platform, would update all the binaries.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information