SetupAssistant Update

Since I’m dog fooding SetupAssistant it has been sort of slowly growing on me. It also is half broken half the time. This is mostly due to the fact I’m still supporting tons of Windows XP machines, and this is where it gets the most use and that’s where everything just works. But since Vista and Win7 are different animals from XP, a lot of the features (or should I say “launchers”) I add don’t work on these systems just because this or that command has changed. At least not until I sit down, and test these things on my Vista machine. I did exactly that prior to uploading it to the website. So the current version (0.5) ought to work on just about anything.

Well, with one exception. The Quick Info tool, which uses WMI to collect hardware information bugs out on certain machines. I would have fixed it a long time ago, but I just can’t seem to replicate the issue on any computer that I own. I only saw it die on 2 or 3 random machines I was working on. So I don’t have reliable environment to debug it. Does that feature work on your machine?

Anyways, here is how the new version looks:

Setup Assistant 5.0 with tabbed interface

As you can see the width of the window shrunk by about half and the damn thing grew tabs. This is a slight departure from my original idea of a single window with useful buttons all in one place but it had to be done. One day I was working on an older machine and I realized that the Setup Assistant window did not fit on my screen. The resolution was simply too low. I could have said “screw it” but seeing how I’m the primary user of the tool, having it work semi-reliably on older machines with shitty resolution was important. Also, I wanted to keep adding buttons to it, but that would mean making the window even bigger, or resizing all the existing buttons. So I made a tabbed interface. I briefly considered scroll bars, but I decided that I would hate it. So now we have tabs, and plenty of space at the cost of convenience and simplicity.

The problem with this setup is that as I keep adding new buttons and commands, I need to find place for them. It means adding new tabs, breaking the features into groups and organizing them according to function. The more I do this, the more more complex it is to navigate, and particular features harder and harder. This basically brings me back to the same problem that I was trying to solve in the first place.

This is actually a fairly interesting UI design problem: if your app needs to do 100 things, how do you expose these things to the user without having a crazy-cluttered interface. The simplistic answer of course is not to make an app that does 100 things. Make 100 apps that do one thing and let the user pick and choose one he likes. This is Unix philosophy, and most of the time this is solid advice. It does help to create robust systems but giving the user a directory full of exacutables is not necessarily a user friendly thing to do. Instead of having one app with million buttons, the user now has a truck full of smaller apps, which are only marginally easier to search through. Eventually you will still need a way of categorizing and organizing these tools in some logical way, and then you get back to the initial problem of having a complex user interface.

I guess the only logical way of dealing with this endless loop is making your application context sensitive. Display only the features that make sense in a given context. Or if your application is a catch all tool like SetupAssistant, instead of listing all the features, use search. Do something like this:

Search based SetupAssistant mockup

Naturally, this is just a basic mock-up. The idea is to allow the user to type queries, and then populate the application box with tools and links as he types. Of course the problem with search based tools like this one is that the user needs to know what he is looking for. You can use the Start Menu search box in the same way – if you want to run device manager, you just start typing “devmgmt.msc” and before you finish, a shortcut for it will pop up. So our tool would have to be smarter than that.

That said, I’m not planning to implement it yet. Maybe at some point in the future I will toy with this idea, but for now SetupAssistant is still not at the point where it would need search based interface.

Isn’t your search-based tool mostly just re-inventing the unix command line :). And isn’t it opposite to one of your original design goals? That you could hand this to someone and just say “click on the ping tool” instead of having him misspell ‘ping’ 30 times in the command line?

Since you ask for how to minimize complexity; you could consider a tree-based multi-page dialog. Like the preference dialog in eclipse ( http://www.google.com/images?q=eclipse+preference+dialog ). It is an ok way to hide the complexity of providing 100 functions, since you can organize them in categories and sub-categories, etc., keeping the visual complexity in any one state low. However, be aware that you are essentially just re-inventing the ‘explorer’ mode in the Windows file browser, with 100 or so programs that does 1 thing.

Quick System Info does not work on my 64-bit Windows 7 Ultimate, it just fails with the message “Object reference not set to an instance of an object” (is that a fancy way of saying “Null pointer exception”? :P)

Also, as a point of curiosity, all the “links” open in Internet Explorer, which is certainly not my default browser. Is this by design?

Also, as a point of curiosity, all the “links” open in Internet Explorer, which is certainly not my default browser. Is this by design?

Yes, at least initially it was. IE is the only browser which will allow you to “Run” the downloaded app from a temp directory, which is exactly what I wanted for stuff like Sysinternals tools. Download to a temp directory and ask user if they want to run it.

I should probably do it the right way and make SA download the executable by itself, but using IE was a quick and easy hack. I think that the links on the Misc tab should open in the default browser though.

It might be useful to have a bunch of different VMs running on your dev box (e.g., XP, Vista, Win7) so you can easily test on different OSes without leaving your chair or rebooting.

Also — this might be preposterous, but would it be possible to implement something like this as a web app? Probably not (probably a bad idea to let browser access OS functions) but as it stands, you still need to get your target users to *download* the thing…

I presume it would be doable with ActiveX but it is no longer possible to just run them. You have to get the user to install the control by clicking on that tiny yellow bar, that no one computer illiterate can ever see. No seriously, if I had a penny for every “user unable to download files or run ActiveX after upgrading to IE8 from IE6″ ticket I would have like… A bag of pennies or something.

Also, I don’t even know if ActiveX can escalate to elevated mode on Vista/Win7 which would be required for bunch of these things.

Honestly I think that running it as a native (well, managed but whatever) app is just easier and less error prone. I mean, trying to mess with the client machine from the web just becomes all kinds of crazy since every browser has security features to prevent just that from happening. :)

I’m wondering whether it’d be better presented for the less competent if it were a series of nested choices – first broad categories, then more specific as needed, with around a half dozen buttons to click on at any one time. Y’know… like that irritating simplified Control Panel you get in XP by default, until you switch it back to ‘classic view’.

One thing it has going for it, although this is an ass-pulled speculation of my own, is that people can probably reliably identify one from a small collection of pictures more reliably than they can click on the right (text labelled) button, or type the right thing.

Relies on coming up with simple to describe, and distinct, icons for each tool, and each category, and each sub-sub-category though.

Currently you have JavaScript disabled. In order to post comments, please make sure JavaScript and Cookies are enabled, and reload the page.Click here for instructions on how to enable JavaScript in your browser.