BattleTorrent plug-ins

From NSIS Wiki

Author: eries (talk, contrib)

This page is out of date - the links do not lead to the correct software


Source + binaries:

Zip.gif (4.03 MB)


Version: 0.0.

Combine NSISdl and the NSIS Python Plugin, and you get an NSIS installer that is capable of downloading content via BitTorrent. This was initially developed by IMVU, and released as part of the BattleTorrent project.

If you'd like to see an example in action, you can download it here.

Because BitTorrent only downloads only the chunks of files that have changed, it makes a great client updater too. And because it's peer-to-peer, it uses a lot less bandwidth than just a regular HTTP downloader.

This contribution is the combination of use of 2 plug-ins:

  • NSISdl plug-in (by eries) - Supports running Python scripts (using code from NsPython plug-in) and showing the download dialog at the same time. Supports interactivety with the Python plug-in to show the dialog as this Python script tells it so.
  • BitDownloadNSIS plug-in - Supports downloading a torrent file using a Python script header called "BitTorrent". This plug-in uses its download function to interactively send information to the NSISdl plug-in (by eries) and download the torrent at the same time.

How to use NSISdl plug-in (by eries)

Some functions are the same as found on the original NSISdl plug-in. The most important function is the "NSISdl::execFile".


Runs a Python plug-in to use the NSISdl's own dialog.


NSISdl::execFile "PythonPlug-in"
Pop "ResultVar"


Variable where the result of the operation is returned. If it succeeded, "success" is returned, otherwise "error" is returned. "error" is returned when the python plug-in cannot be opened.

How to use BitDownloadNSIS plug-in

Syntax for usage with NSISdl plug-in (by eries)

StrCpy $R0 "$CMDLINE UrlTorrentToDownload" ;Note: "$CMDLINE" is not required, but the space after it is - not used by the plug-in.
StrCpy $R1 "DownloadDir"
NSISdl::execFile "$PLUGINSDIR\" ;This file needs to be extracted to $PLUGINSDIR before this call
Pop "ResultVar"


Link to an online torrent file in which more information about the files to be downloaded can be found.
Directory where the files indicated by the torrent file will be located after the download is done.
Same as on the normal call to NSISdl::execFile.

Example Usage

  ; $R0 contains the CMDLINE plus the torrent URL
  StrCpy $R0 "$CMDLINE"
  ; $R1 contains the target folder
  StrCpy $R1 "$INSTDIR"
  NSISdl::execFile "$INSTDIR\bt\"
  IfErrors errortag 
  Pop $R2
  StrCmp $R2 "error" errortag noerrortag
Personal tools