Metadl (NSIS plugin)

Metadl is a downloading plugin for NSIS, with support for metalinks (including mirrors, hashes and chunk checksums). The progress display is based on code from NSISdl and it looks pretty much the same. The big difference is that it supports both http and ftp, resuming and metalinks. More features are listed below.

The readme describes how you use the plugin. It works almost the same as NSISdl, so it's easy to switch if you have used that plugin before. The downloading is handled by libcurl, xml parsing (for the metalinks) is handled by Expat and hashing is done by some code from XySSL. Metadl is open source and licensed under GNU LGPL.

Unless you are interested in the code itself, you will only need the binary. I cross compile the plugin in Ubuntu and there's a Makefile for doing that. If you want to compile it in another way you will probably need to make some adjustments...

Download Metadl version 1.1.0

metadl-1.1.0.zip 173.8 kB (binary)

metadl-1.1.0-src.tar.bz2 30.3 kB (source code)

Please report bugs you find to hw@vox.nu! All feedback is appreciated.

Features

  • Protocols: HTTP, FTP.
  • Resuming downloads.
  • Metalinks: local or remote, multi-file metalinks, mirrors, hashes (MD5, SHA-1), chunk checksums (SHA-1).
  • Automatic mirror selection.
  • Needs no user interaction at all.
  • Everything is possible to cancel.
  • Progress is always displayed (it never just freezes).

The readme describes the plugin in more detail.

Metadl 2.0

I am currently working on metadl 2.0. It will include these changes and additions:

  • The source code will be rewritten (more or less) in C++ and cleaned up.
  • There will be support for segmented downloads.
  • Perhaps I will change from Expat to TinyXML. This would probably make the plugin a bit smaller (and the source code a lot cleaner).
  • The interface will be changed. The goal is to make it easier and more flexible. It won't be compatible with the current interface and will no longer work like NSISdl.
  • The documentation will be improved.

Changelog

Version 1.1.0 (2007-10-25)

  • Fixed a few bugs. Don't use earlier versions of the plugin, because they might crash! It seems to be very stable now, on the other hand.

Version 1.0.2 (2007-08-31)

  • Changed the makefile, so that metadl and all its dependencies can be cross compiled in Ubuntu. Right now this is the only way to compile the plugin, without making any adjustments to the buildscripts.
  • Now using a larger buffer for file writing.

Version 1.0.1 (2007-05-30)

  • Made some minor adjustments to the makefile and test script.

Version 1.0.0 (2007-05-24)

  • Added support for chunk checksum verification, both when resuming a download and while downloading.
  • Now all the planned features are implemented and seems to work fine!

Version 1.0.0 (2007-05-24)

  • Added support for chunk checksum verification, both when resuming a download and while downloading.
  • Now all the planned features are implemented and seems to work fine!

Version 0.3.0 (2007-05-24)

  • Added better error checking (now it checks everything that can go wrong).
  • Added chunk checksum parsing to the metalink code.
  • Added support for local files and a file check mode (/CHECK, see readme).

About the author

My name is Hampus Wessman and I live in Sweden. I'm a 20 year old student. If you want to contact me, please send an email to hw@vox.nu.

Last update: 2007-10-25.