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.

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.

Credits

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.

Bjorn, neither. <smile/> These "isolated applications" are designed to install per-user. I’m still waiting for details about how to make it all work but the goal is that these apps install without prompt because they don’t require administrative rights to install.

However, if administrative rights are required (for say a pre-req) then since we’re just using the Windows Installer we should get the standard LUA prompt. Of course, like you, I’m still waiting for more details about Vista before knowing for sure how this works.

I’ve been reading some of your other posts around the design and use of MSI packages (roll on part 6) and I’ve got a quick question. You discuss file installation locations and, using ORCA, I can see where everything is being pushed (good job BTW). One thing though, what about the registry keys that need to be changed or added on install/uninstall ? Where are they stored generally?

I’ve been messing around for ages trying to find the stuff but to no avail 🙁

It’s really raw. The installation progress a bit queer. I started msi for a couple of times before I realized that it had been already installed. And after that I coludn’t build just a simple package under WindowsApplication1.exe. A lot of WiX warnings and a couple of errors and no setup.exe in the end.

The saddest thing is that I don’t see any progress 🙁 Are there any changes since November, 2005? Any dates of further stable releases?

Andrew, it is still very raw. I got pulled off into other projects. Derek also broke a lot of the ClickThrough build process with all his modifications to WiX v3. I have recently (like last two nights) been back to working on it. You will definitely see progress in the next month.