File Association: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
(Replaced the register/unregister file extension macro/function) |
No edit summary |
||
Line 15: | Line 15: | ||
</highlight-nsis> | </highlight-nsis> | ||
== registerExtension.nsh == | == registerExtension.nsh == |
Revision as of 11:26, 24 November 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