From: Brandon C. <br...@sa...> - 2007-11-15 16:14:06
|
Mark Miesfeld wrote: > On Nov 15, 2007 7:34 AM, Lee Peedin <le...@sa...> wrote: >> Mark Miesfeld wrote: >>> 2.) You can set things up so that the un-installer only un-installs >>> the files that were installed by the installer. The NSIS home has >>> examples of how to do this. > >> My thoughts on this is that what you propose would have been great in the beginning, but with the >> current installer there is no record of what it installed, thus the next version would not know what >> to leave intact. > > Lee, you're right, about the current un-installer, but there is no > reason this can't be fixed going forward. > > Let's call the new installer 3.3. The way NSIS works is the 3.3. > installer has built into it a 3.3 un-installer. When the 3.3 > installer runs, it uses the 3.2 un-installer to un-install the 3.2.0 > ooRexx. This will simply delete the whole directory, that's the way > it is. > > Then the 3.3 installer installs the 3.3. ooRexx and the built-in 3.3 > un-installer. This built in 3.3 un-installer *does* know how to > un-install only the files that 3.3 installed. When the user goes to > install 3.4, the 3.4 installer calls the 3.3 un-installer - which only > deletes what was installed. > > -- > Mark Miesfeld I have seen the examples on NSIS's web site. The process I came up with is to log the files/directories as they are created to a file. During the uninstall, you would check the existence of the log file. If the file can be located (was not somehow removed) then you would do the smart uninstall by reading in the lines in reverse order (deleting installed files and empty directories). If the log file does not exist (for whatever reason), it would prompt the user with "Hey, buddy, I am about to blow away [insert install dir here] and everything in it. If you have something in there you would like to keep, now would be a good time to back it up."[OK/Cancel Uninstall] or something like that. You might be able to tie in keeping previous associations into this. Definitely, the pay off will not be the release the change makes it into, but release++. -- Brandon Cherry |