ClickThrough - simple MSI creation plus auto-update over RSS.
I have wanted to talk about ClickThrough for many months. Finally, enough of the prototype came together this weekend at Seattle Mind Camp to be released (over a very slow internet connection) to SourceForge. I showed it to a few people at the event and received a lot of positive feedback and interest in the tool's future.
Disclaimer: ClickThrough is in what I would call just-post-prototype phase. Enough of the project works such that you can see what is supposed to happen but the code doesn't always make it there. There are lots of bugs and quirks to fix plus plenty of features yet to implement. ClickThrough IS NOT yet ready for use in production software, but we're working on it. Want to help out? Join the wix-devs mailing list.
So what is ClickThrough?
ClickThrough (download here) is the latest addition to the WiX toolset designed to ease the creation of installation packages for distribution over the Internet. ClickThrough consists of three parts. First, there is a simple graphical user interface to ease the creation of MSI packages for isolated applications using the WiX toolset. Second, there is a setup bootstrap executable to be a single entry point for the installation experience. Third, there is an update executable that uses RSS to keep an application up to date.
Did you say ClickThrough is a GUI for WiX?
ClickThrough is not an all purpose GUI for WiX the way that WixEdit and WixTool are designed to be. Instead, ClickThrough focuses on the installation needs for a single type of application. This initial release focuses on "isolated applications" or applications that don't interact with other applications on the operating system much (i.e. they are trivial to install <smile/>). By focusing on a particular type of applications the GUI can be far simpler than your typical "kitchen-sink" installation packaging user interface.
For example, to create a new package using ClickThrough you:
1. Copy all of your application's files into your directory structure of choice.
2. Launch ClickThrough (Start -> Programs -> Windows Installer XML Toolset -> ClickThrough)
3. Click "Browse..."
4. Navigate to the directory containing your application and click OK.
5. Click the "Package" tab.
6. Provide a URL for your application's "Update Feed". We'll discuss the RSS features of ClickThrough later.
7. Click "Build..." and provide a path to the bootstrap executable you want to create.
That process generates the bootstrap executable and RSS XML file that you can host on your web server (or whatever URL was provided). In the near future, you will also be able to provide ClickThrough a certificate so that the bootstrap executable can be signed.
I did not provide screenshots here because I expect the UI for ClickThrough will change rapidly as we get user input. Reid, Derek and I want to reduce the UI to a single page (right now there are two tabs) and I have a couple ideas to try in the future. Again, remember the disclaimer above about this being "just-post-prototype" code.
Who cares about the UI, did you say RSS?
Yeah, RSS was the part that really interested the few people I showed ClickThrough to at Mind Camp. ClickThrough uses RSS to describe the update history of the application. Think of the RSS feed as your application's own blog tracking all the exciting changes in its life. <smile/>
More importantly, the RSS feed is queried by the auto-update executable that ClickThrough adds to your installation package. The way the auto-update works is that when ClickThrough created the shortcut to your application's executable it pointed the shortcut at the auto-update executable and passed the path to your application as a command-line parameter. When the user clicks on the shortcut the auto-update boots, immediately launches your program (so there is nominal delay in the user experience), then goes and checks the RSS feed for updates in the feed. If there is a new item in the feed, the auto-update executable downloads the item's enclosure. The next time the user clicks on the shortcut, the auto-update executable launches the downloaded enclosure to upgrade the application.
Now, I'm sure you are thinking that there are about fifty different things in there that need to be developer and user configurable. I agree and we'll be doing so in the future. See the disclaimer near the top. <smile/>
What's next for ClickThrough and the WiX toolset?
Well, there are plenty of bugs in ClickThrough that we'll work on while waiting to see what kind of reaction people have to the whole packaging and auto-update via RSS features that ClickThrough provides. Bugs and Feature Requests for ClickThrough should be filed at SourceForge with the rest of the WiX toolset. Discussion should happen on the usual mailing lists.
After that, our priority is to drive WiX v2 toward "production quality". I also want to take some time out and just work on the WiX documentation for a while to fill in some of the blanks and maybe fill out the web site some more.
Finally, I'd like "ClickThrough" to grow into a "brand of targeted packaging tools". This blog entry has primarily discussed the "ClickThrough for Isolated Applications" but I'd like to see more tools such as "ClickThrough for Media Center Applications" or "ClickThrough for Office Plug-ins" or "ClickThrough for Web Applications" or "ClickThrough for Firefox Extensions", etc. I haven't sent the mail yet, but I'm hoping to team up with the developers working on WixEdit and WixTool to see if they are interested in collaborating on the GUIs. I'll talk more in the future about the layers beneath the ClickThrough GUI to show how different user interfaces can be layered on top.
I may write the blog entries and upload the binaries to SourceForge but the majority of the work done on ClickThrough was completed by Reid Gustin and Derek Cicerone. They should get credit for all of the good stuff that works and I'll take blame for everything that doesn't work. Also, many thanks go out to Daniel Robbins who joined us at a couple of the WiX Tuesday nights at the beginning of this year and mentioned RSS for application updates. That idea floated back to the top in the last couple months when working on the update functionality for ClickThrough and everything came together very nicely.
Anyway, this is just an introduction for a project that I think is going to be a very exciting addition to the WiX toolset. If you check ClickThrough out, please do send feedback. I know there is a lot of work that needs to be done before the tool is completely useable but getting Bugs and Feature Requests open on all the issues will help us figure out just how far away the goal really is.