Beyond the issue reported by B. Jensen there is an additional bug in your code for Windows 9X users (not sure about NT/2000/XP). The code:
delete /REBOOTOK $0
rename /REBOOTOK $5 $0
does not produce desired results when the files are in use and need to be manipulated during reboot. On Win 9X systems NSIS uses the WININIT.INI file to do this. In the above sequence, somehow (NSIS bug?) the rename code gets put in BEFORE the delete code and the DLL is therefore missing when the boot is complete. To fix, just skip the delete command and let the rename take care of it.