File Association: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
No edit summary |
m (quoting problem) |
||
Line 57: | Line 57: | ||
!macro unregisterExtension extension description | !macro unregisterExtension extension description | ||
Push ${extension} ; ".mkv" | Push "${extension}" ; ".mkv" | ||
Push ${description} ; "MKV File" | Push "${description}" ; "MKV File" | ||
Call unregisterExtension | Call unregisterExtension | ||
!macroend | !macroend |
Revision as of 18:22, 31 December 2007
Author: Vytautas (talk, contrib) |
Author: intersol (talk, contrib) |
Description
Macro for registering and unregistering file extensions in NSIS scripts.
Usage
!include "registerExtension.nsh" ... # later, inside a section: ${registerExtension} "c:\myplayer.exe" ".mkv" "MKV File" ${unregisterExtension} ".mkv" "MKV File"
registerExtension.nsh
!define registerExtension "!insertmacro registerExtension" !define unregisterExtension "!insertmacro unregisterExtension" !macro registerExtension executable extension description Push "${executable}" ; "full path to my.exe" Push "${extension}" ; ".mkv" Push "${description}" ; "MKV File" Call registerExtension !macroend ; back up old value of .opt Function registerExtension !define Index "Line${__LINE__}" pop $R0 ; ext name pop $R1 pop $R2 push $1 push $0 ReadRegStr $1 HKCR $R1 "" StrCmp $1 "" "${Index}-NoBackup" StrCmp $1 "OptionsFile" "${Index}-NoBackup" WriteRegStr HKCR $R1 "backup_val" $1 "${Index}-NoBackup:" WriteRegStr HKCR $R1 "" $R0 ReadRegStr $0 HKCR $R0 "" StrCmp $0 "" 0 "${Index}-Skip" WriteRegStr HKCR $R0 "" $R0 WriteRegStr HKCR "$R0\shell" "" "open" WriteRegStr HKCR "$R0\DefaultIcon" "" "$R2,0" "${Index}-Skip:" WriteRegStr HKCR "$R0\shell\open\command" "" '$R2 "%1"' WriteRegStr HKCR "$R0\shell\edit" "" "Edit $R0" WriteRegStr HKCR "$R0\shell\edit\command" "" '$R2 "%1"' pop $0 pop $1 !undef Index FunctionEnd !macro unregisterExtension extension description Push "${extension}" ; ".mkv" Push "${description}" ; "MKV File" Call unregisterExtension !macroend Function unregisterExtension pop $R1 ; description pop $R0 ; extension !define Index "Line${__LINE__}" ReadRegStr $1 HKCR $R0 "" StrCmp $1 $R1 0 "${Index}-NoOwn" ; only do this if we own it ReadRegStr $1 HKCR $R0 "backup_val" StrCmp $1 "" 0 "${Index}-Restore" ; if backup="" then delete the whole key DeleteRegKey HKCR $R0 Goto "${Index}-NoOwn" "${Index}-Restore:" WriteRegStr HKCR $R0 "" $1 DeleteRegValue HKCR $R0 "backup_val" DeleteRegKey HKCR $R1 ;Delete key with association name settings "${Index}-NoOwn:" !undef Index FunctionEnd
Info
Any refereces to execute.exe should be replaced with the appropriate command to perform the specified action.
This page was based on information provided in "Examples\makensis.nsi" and this thread: http://forums.winamp.com/showthread.php?s=&threadid=140254
Vytautas