I'm using NSIS 3.0.4.1
My nsh file contents:
!macro customInstall
SetRegView 64
/**
* This hex string is myElectronApp.exe encoded in Regedit Version 5.0 format.
* Refer to the instructions in the Registry tutorial
*/
WriteRegMultiStr /REGEDIT5 HKLM "SOFTWARE\WOW6432Node\Key1\Key2" "Key3" 6d,79,45,6c,65,63,74,72,6f,6e,41,70,70,2e,65,78,65
!macroend
!macro customUnInstall
SetRegView 64
DeleteRegKey HKLM "SOFTWARE\WOW6432Node\Key1\Key2\Key3"
!macroend
It fails to compile with error:
Processing script file: "<stdin>" (ACP), then what's in the attached pic. As far as I can tell my syntax is exactly the same as what's in the docs.</stdin>
It seems to be complaining about the root_key, and the Usage seems to imply that the syntax should be HKLM64 instead of HKLM? But of course I tried that too and it doesn't work either.
Any idea what's wrong?
Thanks,
Turns out this is a documentation error. In the source code there is a comment that the end of the data must have 4 zero bytes at the end. Adding 4 zero bytes to your example makes it work.
You can also look on msdn at the windows API version of this function for more information on the format required for the input.
That worked, thanks for the quick response. Working string:
WriteRegMultiStr /REGEDIT5 HKLM "SOFTWARE\WOW6432Node\Key1\Key2" "Key3" 6d,79,45,6c,65,63,74,72,6f,6e,41,70,70,2e,65,78,65,00,00,00,00It also worked (compiled) with
HKLM64Last edit: Brent Thompson 2024-02-16
For future searchers, I still had issues using the string above - I ended up with garbage in my registry entry. I was missing the info from here, specifically that characters have to be 2 bytes wide, so
6dbecomes6d,00.When the documentation says it uses the .reg format, it really means it! The last 4 zero bytes are
Could the error message be better? Perhaps.