MSG
22nd November 2012 11:34 UTC
NSIS Error in uninstaller
When I was playing around with the problem in this thread, I ran into something rather strange.
Code:
outfile "d:\test.exe"
page instfiles
UninstPage instfiles
section
writeuninstaller "d:\untest.exe"
sectionend
Section "Uninstall"
MessageBox MB_OK "Working"
SectionEnd
The installer works fine, but the generated uninstaller throws an NSIS Error ("Error launching installer"). Using NSIS 2.46 and NSIS 2.46-Unicode. Can anyone reproduce?
Edit: Moving untest.txt to a d:\subdir, the uninstaller works fine. This could suggest a permissions issue, but what could the uninstaller be trying to do that would lead to a CRC error?
Some details: The Authenticated Users group has everything except Full Control on d:\, while the Users group has only 'read & execute', 'list folder contents' and 'read' access. I'm logged in as a userlevel user.
Another thing I can imagine is a backslashes issue, something like trying and failing to access d:untest.exe.
Anders
29th November 2012 16:40 UTC
allowrootdirinstall true
MSG
30th November 2012 08:38 UTC
Indeed. I'm filing this one as a bug though, because the manual strongly suggests this command is only related to the directory page. In any case, this should not cause the uninstaller to fail launch.
Anders
30th November 2012 09:03 UTC
How will the uninstaller end up in the root if the user cannot install there? I'm thinking this is by design. (The uninstaller specific startup code checks the path on purpose)
MSG
30th November 2012 10:01 UTC
The problem isn't coming up with crazy installation scenarios where the uninstaller might end up in root. If I don't even have a directory page to begin with, and installation to a root proceeds just fine, how am I supposed to realize that uninstallation from a root is not possible without allowrootdirinstall? The problem is that the uninstaller doesn't throw any recognizable error, and fails to launch completely. If it's hardwired to disallow root uninstall, it should say that instead of 'NSIS Error'.