Windows 7 Cascading Context Menu: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
Line 3: | Line 3: | ||
== Example Script == | == Example Script == | ||
This example creates a | This example creates a cascaded context menu for the NSIS compiler, and if present also for the Unicode version of NSIS. | ||
<highlight-nsis>Name "NSIS Window 7 Context Menu" | <highlight-nsis>Name "NSIS Window 7 Context Menu" | ||
OutFile "nsW7Menu.exe" | OutFile "nsW7Menu.exe" |
Revision as of 10:40, 14 September 2011
Description
As of Windows 7, one can create cascading context menus through the registry.
Example Script
This example creates a cascaded context menu for the NSIS compiler, and if present also for the Unicode version of NSIS.
Name "NSIS Window 7 Context Menu" OutFile "nsW7Menu.exe" RequestExecutionLevel admin InstallDir $PROGRAMFILES\NSIS InstallDirRegKey HKLM Software\NSIS "" ; Pages Page directory Page instfiles ; Sections Section "" ;menu-name,submenu,icon WriteRegStr HKCR "NSIS.Script\shell\NSIS.W7Menu" "MUIVerb" "NSIS" WriteRegStr HKCR "NSIS.Script\shell\NSIS.W7Menu" "ExtendedSubCommandsKey" "NSIS.Script\W7Menu" WriteRegStr HKCR "NSIS.Script\shell\NSIS.W7Menu" "Icon" "$INSTDIR\makensisw.exe,1" ;compile WriteRegStr HKCR "NSIS.Script\W7Menu\shell\compile" "MUIVerb" "Compile NSIS Script" WriteRegStr HKCR "NSIS.Script\W7Menu\shell\compile\command" "" '"$INSTDIR\makensisw.exe" "%1"' ;compile (choose compressor) WriteRegStr HKCR "NSIS.Script\W7Menu\shell\compile-compressor" "MUIVerb" "Compile NSIS Script (Choose Compressor)" WriteRegStr HKCR "NSIS.Script\W7Menu\shell\compile-compressor\command" "" '"$INSTDIR\makensisw.exe" /ChooseCompressor "%1"' ;repeat for Unicode NSIS IfFileExists "$INSTDIR\Unicode\makensisw.exe" 0 End ;add separator above the next entry WriteRegDWORD HKCR "NSIS.Script\W7Menu\shell\ucompile" "CommandFlags" "32" ;compile unicode WriteRegStr HKCR "NSIS.Script\W7Menu\shell\ucompile" "MUIVerb" "Compile Unicode NSIS Script" WriteRegStr HKCR "NSIS.Script\W7Menu\shell\ucompile\command" "" '"$INSTDIR\Unicode\makensisw.exe" "%1"' ;compile unicode (choose compressor) WriteRegStr HKCR "NSIS.Script\W7Menu\shell\ucompile-compressor" "MUIVerb" "Compile Unicode NSIS Script (Choose Compressor)" WriteRegStr HKCR "NSIS.Script\W7Menu\shell\ucompile-compressor\command" "" '"$INSTDIR\Unicode\makensisw.exe" /ChooseCompressor "%1"' End: SectionEnd
Alternative Method
The MSDN forums mention an alternative method for creating cascading menus. This will create keys in the CommandStore (HKLM) rather than in HKCR.