RDaneel
29th March 2003 03:31 UTC
MUI installer error on NT4
[Probably for Joost]
My question is really a two-parter:
1) only on NT4 (SP6), my MUI NSIS-built installer ALWAYS gives the following error when installing back-to-back (note that with my in-use DLL, the installer is always doing a "/REBOOTOK" rename operation, and the user (me) always accepts the "reboot now?" invitation):
Error opening file for writing: "\\ioSpecial.ini"
followed by an "Abort-Retry-Ignore" dialog... this is BEFORE anything of the installer is displayed. Anyway, if I do an "Ignore", the installer limps along (probably with messed-up pages displayed), whereas if I do ONE "Abort", and then run the installer again, it ALWAYS is happy and runs without error.
This particular behavior ONLY happens on NT4 - not 95, 98, 2000, or XP.
2) Possibly related to the above, under 95, 98, or NT4 each of the above-described back-to-back installs always leaves a "nstN.tmp" folder in the system temp directory, containing the following files:
InstallOptions.dll
Startmenu.dll
System.dll
modern-wizard.bmp
ioSpecial.ini
Note that while this same folder of files is left for 95, 98, and NT4, there is only the associated run-time error mentioned above under NT4.
OTOH, these installer-generated folders are NOT left behind under 2000 or XP when doing the same sequence of operations.
Is this possibly going to be handled when the new remove-directory-on-reboot functionality is implemented, or is this something else entirely? And, can I provide any more info to help figure this out? :)
kichik
29th March 2003 11:52 UTC
You have probably forgot to unload System.dll. If you fon't unload it NSIS can't delete it ;)
Remove /NOUNLOAD from the last call to System.dll.
RDaneel
29th March 2003 18:07 UTC
Originally posted by kichik
You have probably forgot to unload System.dll. If you fon't unload it NSIS can't delete it ;)
Remove /NOUNLOAD from the last call to System.dll.
Thanks for the reminder, but I don't think that is the issue... and did you notice the part about the same installer
works properly under 2000 and XP, and only leaves these temp folders on 95, 98, and NT4? :)
Here is the end of the installer (the
section started with "SetPluginUnload alwaysoff"):
# [attempt to] rename and register our Shell extension
Rename /REBOOTOK "$INSTDIR\RFtpSX.tmp" "$INSTDIR\RFtpSX.dll"
IfRebootFlag delayedRegistration
RegDLL "$INSTDIR\RFtpSX.dll"
System::Call 'Shell32::SHChangeNotify(i, i, i, i) v (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
System::Call 'Ole32::CoFreeUnusedLibraries() v'
Goto doneWithDLL
delayedRegistration:
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" \
"Register $INSTDIR\RFtpSX.dll" '"$SYSDIR\rundll32.exe" "$INSTDIR\RFtpSX.dll,DllRegisterServer"'
doneWithDLL:
# write our Uninstall info
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RFtpPRO" \
"DisplayName" "RFtp Professional"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RFtpPRO" \
"UninstallString" "$R9"
SetPluginUnload manual
System::Free 0 ; (make plugin go alway)
# create uninstaller
WriteUninstaller "Uninstall.exe"
SectionEnd
Comments? Anyone? BTW, I tried to adapt the reg-dll-at-reboot code from the UpgradeDLL macro... did I "borrow" the code correctly? ;)
kichik
29th March 2003 18:19 UTC
You can never know with Microsoft... :p
If all of the files are still there it seems $PLUGINSDIR was destroyed in some bizzare way... Probably has something to do with brainsucker's bug that I haven't reached to yet. He had about the same thing where $PLUGINGSDIR is empty somehow. I'll check it tomorrow or in two days (kinda busy next two days) and let you both know.
RDaneel
29th March 2003 22:18 UTC
Just to let you know - I am using the released BETA 3... :)
I have been waiting for the dust to settle with the newer System.dll.