>>Well, I've already gotten this working and it's working fine, so I'm not going to switch now, but I may have to look at InnoSetup ...
>
>How did you solve the restart problem?
>Although they worked, I did not much like either approach we used.
My programs start via a program called LAUNCHER.EXE. It's sole purpose in life is to look for PROGRAMNAMEnnn.exe and run the highest numbered version. So if the program name is HELLOWORLD001.EXE and I update it, then I drop HELLOWORLD002.EXE into the folder and the next time someone starts the program, Launcher runs the 002 version. So I just check my FTP site for a version higher than the one presently installed. If I find it, it's downloaded and unzipped. I then set a Restart property in my application object and right before I get down to the nitty gritty and really let the app fire up (are these technical descriptions too much for you? <g>), I make sure Restart is false. If it is - keep going. If not, exit the app via the normal channels, but after all the clean up and right before it truly exits, I use ShellExecute to run Launcher again, which, of course, runs the latest version that was just downloaded.