From: SourceForge.net <no...@so...> - 2005-08-23 23:40:44
|
Bugs item #1075997, was opened at 2004-11-30 13:38 Message generated for change (Comment added) made by hahjortland You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=373085&aid=1075997&group_id=22049 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: 2.0 Series Status: Open Resolution: None Priority: 5 Submitted By: Mikey Cooper (mikeycooper) Assigned to: Amir Szekely (kichik) Summary: Uninstaller doesn't update open Add/Remove programs list Initial Comment: When kicking off any NSIS-based uninstaller (for example, uninstalling NSIS 2.02) from Add/Remove Programs in Win98, the entry is still visible in the Add/Remove Programs dialog after uninstallation is successful. It remains there until you attempt to remove the program a second time or close/reopen the dialog. http://forums.winamp.com/showthread.php?s=&threadid=84309 There is a very ugly workaround described here: http://forums.winamp.com/showthread.php?s=&threadid=66388 This seems like something NSIS should eventually handle on its own though. ---------------------------------------------------------------------- Comment By: Haakon Andre Hjortland (hahjortland) Date: 2005-08-23 23:40 Message: Logged In: YES user_id=64649 I'm not really into windows programming, so I was just guessing with the "exec". Too bad it won't work. I have another idea though: 1) Uninstaller gets launched from "Add/Remove programs". 2) Uninstaller copies itself to tempdir and starts the copy, but doesn't quit. 3) Uninstaller copy uninstalls as usual. After removing registry keys for "add/remove programs", before removing the uninstaller, the script writer can insert a "KillParentUninstaller" command or something like that. This would then cause the first uninstaller to quit. 4) "Add/Remove programs" detects this and refreshes. Registry entries are now gone, so the entry in the list disappears. 5) First uninstaller not running anymore, so it can be deleted. Too complex? Needs some inter-process communication and must be made safe. We can't have failed uninstallers lingering in memory indefinitely. ---------------------------------------------------------------------- Comment By: Amir Szekely (kichik) Date: 2005-08-23 21:34 Message: Logged In: YES user_id=584402 According to a quick look I took at the CRT source code that comes with the Platform SDK, exec is internally implemented with CreateProcess. This means it won't help. However, this was just a quick look, so I'd be happy, if you could prove me wrong with a small example. ---------------------------------------------------------------------- Comment By: Haakon Andre Hjortland (hahjortland) Date: 2005-08-23 21:00 Message: Logged In: YES user_id=64649 How about using the "exec" call? Would that work? See "Replacing a Process Image (exec)" in: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/UCMGch09.asp --------------------------- A UNIX application replaces the executing image with that of another application by using one of the exec functions. As mentioned previously, a fork followed by an exec is similar to CreateProcess. Windows supports the six POSIX variants of the exec function plus two additional ones (execlpe and execvpe). The function signatures are identical, and come as part of the standard C runtime. --------------------------- ---------------------------------------------------------------------- Comment By: Amir Szekely (kichik) Date: 2004-12-10 17:51 Message: Logged In: YES user_id=584402 Well, it is possible to get around this by having the main uninstaller wait for its clone. The only question is, how to get this done while still allowing the uninstaller to delete the original executable. ---------------------------------------------------------------------- Comment By: Joost Verburg (joostverburg) Date: 2004-12-10 15:11 Message: Logged In: YES user_id=604457 Unfortunately this is a Windows 95/98 issue that cannot be fixed. The uninstaller copies itself to a temporary folder to be able to remove the whole application folder. Win 95/98 only updates the list after the original process has closed, so it won't detect the completion of the uninstallation process. This has been fixed in more recent versions of Windows. You can disable this NSIS system for self-deletion: http://nsis.sourceforge.net/index.php?id=19&backPID=15&tx_faq_faq=14 But you will only be able to remove the whole application folder on reboot. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=373085&aid=1075997&group_id=22049 |