Contribute

Accessing the source

The source code is publicly available under the InstallPad license. You can browse the code at github.

git clone git://github.com/philc/InstallPad.git

Report bugs

The easiest way to get involved is to report any bugs you've found in the software.

Contributing Code

InstallPad is written in C# 2.0. There are Visual Studio 2005 project files, so you can easily open the source up in Visual Studio and start hacking away.

Please consult "contribute.txt" in the main source directory before writing any code. While coding, try and stick to the standard .NET coding conventions. If you contribute significantly to any file, please add yourself as an author at the top.

Tips/guidelines

  • When you're testing InstallPad, use the /f switch to load an applist.xml file on startup so you don't have to manually open it through the UI. E.g:

    installpad.exe /f ../../data/applists/applist.xml
    (assuming you're running installpad from bin/Debug/)

    In Visual Studio, you can use those switches to launch InstallPad every time you hit F5 through Project -> InstallPad Properties -> Debug -> command line arguments.

Features

Low hanging fruit (easy to get started on):

  • Option to delete downloaded files after successful installation
  • "Reset" button on the preferences dialog that resets the options to their installation defaults.
  • Show which version of the application we've found in the UI if the user has the "find latest version" option enabled for an application
  • Open an applist.xml from an online (HTTP) source
  • Command line option to run Installpad and install everything in an applist.xml silently
  • Preference for setting a web proxy's credentials (this is completely implemented, it just needs a UI & testing)
  • Preference for logging events to a log file, e.g. which downloads/installs succeeded or failed
  • Option for pre-installation scripts
  • Installation files on file:// and file://// locations are already local. Add an option to applist.xml, where we can just run the installers from those locations instead of downloading them. In fact that should probably be the default behavior for these types of file URLs
  • Handle downloading from relative URLs

Somewhat more involved features

  • A more friendly message when .NET 2.0 is missing
  • Support HTTP authentication, either with a dialog or in the applist.xml file
  • Support "Run as" -- if a user doesn't have permissions to install programs, ask for "Run as" administrator credentials once, store them, and use "Run as" to install everything that gets downloaded.
  • Option to unzip/decompress downloads that are zip files. If there's an installer in there, allow the user to specific which file InstallPad should run after the archive has been zipped (and let the user specifiy "if there's only one .exe file in that zip, run it"). Currently we support extracting a zip file to some folder, but if the user says it's just an installer wrapper in a zip, we'd like to be able to run that installer.
  • Option to install the applications in the order they appear in the file. We would then need a graphical way to change the order, like drag and drop reordering.
  • Explorer extension to open up applist.xml files in InstallPad
  • Dependencies - make one app depend on another, so they're always installed in order
  • Download logic should be more sophisticated. It should be able to handle a page such as http://prdownloads.sourceforge.net/audacity/audacity-win-1.2.5.exe?download and first click one of the download links. It should then recognize there is an autodownload that is started, and use that. This should work for any page that has an autodownload function ( www.download.com). Many open source projects use these kind of pages to spread the load of downloading. (if nothing else, handling autodownloads form download.com is really important)
  • Detect whether a program is already installed and confirm with the user if they try and install it again. Most programs put an entry in the control panel's add/remove list, so if we could check that, we could fairly accurately determine whether a program is installed.

Got some more feature requests? Submit them and I'll add them here.

InstallPad is a blast to code. Have fun, go nuts.