Can't get UMUI_PAGE_ALTERNATIVESTARTMENU to work
I've been using the UMUI rather successfully, and have my installer almost complete. The one thing I've been unable to do is to get UMUI_PAGE_ALTERNATIVESTARTMENU to work. Specifically, my installer won't even compile when I have that macro in it. I've also tried MUI_PAGE_STARTMENU with essentially identical results. My guess is that I'm missing something basic; for one thing, I'm not quite sure what "page_id" is, and there isn't much documentation on it.
I first tried just putting the following page macro into my list of pages:
!insertmacro UMUI_PAGE_ALTERNATIVESTARTMENU "RTMT" $StartMenuFolder
Here, "RTMT" is the name of my application, and StartMenuFolder is an uninitialized variable. When I try to compile my script, I get the following error messages:
!insertmacro: UMUI_PAGE_ALTERNATIVESTARTMENU
Usage: StrCpy $(user_var: output) str [maxlen] [startoffset]
Error in macro UMUI_FUNCTION_ALTERNATIVESTARTMENUPAGE on macroline 64
Error in macro UMUI_PAGE_ALTERNATIVESTARTMENU on macroline 80
Error in script "C:\Users\Steve\Documents\SimCity 4\RTMT\Install Main\RTMT_Installer.nsi" on line 91 -- aborting creation process
Looking at the source, the line numbers all make sense, but I don't know what the underlying problem is. Then I read that the Registry defines need to be in place for this to work. OK, so I added them, and now my code looks like this:
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKCU
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\RTMT"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Name"
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "RTMT"
!insertmacro UMUI_PAGE_ALTERNATIVESTARTMENU "RTMT" $StartMenuFolder
And the error messages I get are identical, although line number 64 is now 29. So then I thought, Well, maybe I need to add the shortcut code. So down in my section, I put the following:
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
This has no effect at all, and it's obvious why when watching the compilation: The compilation aborts before it ever gets to that code.
So what am I doing wrong? And what is "page_id" supposed to be? I've tried putting everything in there, from constants to variables. The documentation says, "The page ID should be the ID of the page on which the user has selected the folder for the shortcuts you want to write." But I don't know what the means, or how to get said ID. Any help would be greatly appreciated.