url URL date not supplied feedback from my posting NUMBER about fogbugz NUMBER setup fell into four categories why make setup reversable instead you should collect all the information from the user and make all the changes in one batch at the end there are a couple of things to understand here first of all even if you do everything in one batch at the end there s always a possibility that some step in the middle of the batch will fail and in that case a well behaved setup program will back out the steps that were already done there are well over NUMBER error messages in the string table for fogbugz setup so the number of things that can fail is not insignificant second it s not nice to tell people about an error in their input three pages after they made the mistake for example early in the fogbugz setup process we prompt you to create an account for fogbugz to use img URL fogbugz setup screenshot the account creation could fail for a myriad of reasons none of which can be predicted before trying to create the account for example the password might not conform to the system password policy and different national versions of windows nt have different rules about accented letters in passwords betcha didn t know that it s better to tell the user about this problem right away so they can correct their input rather than having a message come up during the long install process later forcing the user to back up and fix it and even if you force the user to back up and fix it you still have to undo the first part of the work that you did before creating the account otherwise you ve left their system in an indeterminate state in any case i need to write code to create the account and delete the account in case something later fails i might as well call that code on this page of the wizard where i can display a useful error message and what are the kinds of things that need to be reversable well in order to upgrade fogbugz without requiring a reboot and we _never ever _require a reboot we have to shut down a couple of processes that might have been keeping fogbugz files pinned down such as iis microsoft s web server so part one of the batch is stop iis now if part NUMBER fails for some reason it would be _extremely_ rude to leave iis not running and anyway it s not like i don t need to write the code for start iis for the end of the batch so the code to rollback stop iis is already written no big deal i just need to call it at the right place i think one reason that people think you should gather all the info and then do all the work is because with very large installation programs that are very slow this is a polite way to waste less of the user s time indeed even fogbugz setup does NUMBER of its work at the very end but the create account operation is so fast that principle simply doesn t apply here even our NUMBER of the work phase takes well under a minute most of which is spent waiting for iis to stop and start why did you use vc mfc surely an advanced intelligence such as yourself has admitted by now that delphi NUMBER is more productive first of all leave your language religious fanaticism at the usenet door somehow i managed to figure out_ in high school_ that language advocacy and religious arguments are unbelievably boring secondly even if delphi were more productive the only pertinent question since i am writing the code is _what is more productive for joel spolsky_ and i don t know delphi at all but i know winNUMBER mfc and vc _really really well_ so while i might not outcode a good delphi programmer i would definitely outcode a completely inexperienced delphi programmer which is me certainly over a short NUMBER week project third many of the things i needed to do in this setup program are things like grant the logon as service privilege to an account this is rare enough that the only way to find out how to do this is to search the microsoft knowlege base and the web in general when you search the web in general for how to do fancy things with windows nt what you find is about NUMBER c code maybe NUMBER vb code and NUMBER everything else yes i know i could translate the c code into delphi assuming i was a sophisticated delphi programmer not a completely inexperienced delphi programmer but that costs as much productivity as i would supposedly gain from your supposedly more productive programming language and fourth i already had about NUMBER of the code i needed for setup in mfc format from fogbugz NUMBER NUMBER setup and a library i ve been using for years to make wizards why make setup at all you already have your customers money good setup programs don t increase sales this was actually the smartest question and made me think the hardest i came up with three reasons decreased tech support cost this setup program will pay for itself over the life of the code delight my customers when i m trying to get them to upgrade to NUMBER NUMBER i want them to remember how painless the NUMBER NUMBER installation was so they won t hesitate because they are afraid to upgrade i m still using an old version of spamassassin that is becoming increasingly ineffective even though i know the new version is much better because i just can t bear the thought of another morning wasted the very memory of the first spamassassin installation all the little ssh windows some su ed trying to scroll through man pages and google groups accidentally hitting ctrl z in emacs to undo and having it suspend trying to guess why we can t get the mta to run procmail sorry it s too much if spamassassin was making money off of upgraders they would have lost my business because they don t have a setup program win reviews software reviewers always cast about for some kind of standardized way to rate software even when they are comparing apples and oranges and planets and NUMBERth century philosophers they always have a meaningless list of things to review which can be applied to pc games mainframe databases web site auction software and dna sequencing software and setup is always on their list a single flaw in setup is guaranteed to be mentioned in every review because every reviewer will see it and say aha how can we make wise NUMBER better kudos to the product manager of wise installation system for calling me up and listening to my litany of all the reasons his product wasn t adequate for typical iis asp sql applications NUMBER URL NUMBER URL NUMBER URL NUMBER URL 