File Association: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (quoting problem) |
m (move unregisterExtension to un.unregsiterExtension) |
||
Line 59: | Line 59: | ||
Push "${extension}" ; ".mkv" | Push "${extension}" ; ".mkv" | ||
Push "${description}" ; "MKV File" | Push "${description}" ; "MKV File" | ||
Call unregisterExtension | Call un.unregisterExtension | ||
!macroend | !macroend | ||
Function unregisterExtension | Function un.unregisterExtension | ||
pop $R1 ; description | pop $R1 ; description | ||
pop $R0 ; extension | pop $R0 ; extension |
Revision as of 17:45, 1 January 2008
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 un.unregisterExtension !macroend Function un.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