|
@@ -1,190 +1,190 @@
|
|
|
-/*
|
|
|
-_____________________________________________________________________________
|
|
|
-
|
|
|
- File Association
|
|
|
-_____________________________________________________________________________
|
|
|
-
|
|
|
- Based on code taken from http://nsis.sourceforge.net/File_Association
|
|
|
-
|
|
|
- Usage in script:
|
|
|
- 1. !include "FileAssociation.nsh"
|
|
|
- 2. [Section|Function]
|
|
|
- ${FileAssociationFunction} "Param1" "Param2" "..." $var
|
|
|
- [SectionEnd|FunctionEnd]
|
|
|
-
|
|
|
- FileAssociationFunction=[RegisterExtension|UnRegisterExtension]
|
|
|
-
|
|
|
-_____________________________________________________________________________
|
|
|
-
|
|
|
- ${RegisterExtension} "[executable]" "[extension]" "[description]"
|
|
|
-
|
|
|
-"[executable]" ; executable which opens the file format
|
|
|
- ;
|
|
|
-"[extension]" ; extension, which represents the file format to open
|
|
|
- ;
|
|
|
-"[description]" ; description for the extension. This will be display in Windows Explorer.
|
|
|
- ;
|
|
|
-
|
|
|
-
|
|
|
- ${UnRegisterExtension} "[extension]" "[description]"
|
|
|
-
|
|
|
-"[extension]" ; extension, which represents the file format to open
|
|
|
- ;
|
|
|
-"[description]" ; description for the extension. This will be display in Windows Explorer.
|
|
|
- ;
|
|
|
-
|
|
|
-_____________________________________________________________________________
|
|
|
-
|
|
|
- Macros
|
|
|
-_____________________________________________________________________________
|
|
|
-
|
|
|
- Change log window verbosity (default: 3=no script)
|
|
|
-
|
|
|
- Example:
|
|
|
- !include "FileAssociation.nsh"
|
|
|
- !insertmacro RegisterExtension
|
|
|
- ${FileAssociation_VERBOSE} 4 # all verbosity
|
|
|
- !insertmacro UnRegisterExtension
|
|
|
- ${FileAssociation_VERBOSE} 3 # no script
|
|
|
-*/
|
|
|
-
|
|
|
-
|
|
|
-!ifndef FileAssociation_INCLUDED
|
|
|
-!define FileAssociation_INCLUDED
|
|
|
-
|
|
|
-!include Util.nsh
|
|
|
-
|
|
|
-!verbose push
|
|
|
-!verbose 3
|
|
|
-!ifndef _FileAssociation_VERBOSE
|
|
|
- !define _FileAssociation_VERBOSE 3
|
|
|
-!endif
|
|
|
-!verbose ${_FileAssociation_VERBOSE}
|
|
|
-!define FileAssociation_VERBOSE `!insertmacro FileAssociation_VERBOSE`
|
|
|
-!verbose pop
|
|
|
-
|
|
|
-!macro FileAssociation_VERBOSE _VERBOSE
|
|
|
- !verbose push
|
|
|
- !verbose 3
|
|
|
- !undef _FileAssociation_VERBOSE
|
|
|
- !define _FileAssociation_VERBOSE ${_VERBOSE}
|
|
|
- !verbose pop
|
|
|
-!macroend
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-!macro RegisterExtensionCall _EXECUTABLE _EXTENSION _DESCRIPTION
|
|
|
- !verbose push
|
|
|
- !verbose ${_FileAssociation_VERBOSE}
|
|
|
- Push `${_DESCRIPTION}`
|
|
|
- Push `${_EXTENSION}`
|
|
|
- Push `${_EXECUTABLE}`
|
|
|
- ${CallArtificialFunction} RegisterExtension_
|
|
|
- !verbose pop
|
|
|
-!macroend
|
|
|
-
|
|
|
-!macro UnRegisterExtensionCall _EXTENSION _DESCRIPTION
|
|
|
- !verbose push
|
|
|
- !verbose ${_FileAssociation_VERBOSE}
|
|
|
- Push `${_EXTENSION}`
|
|
|
- Push `${_DESCRIPTION}`
|
|
|
- ${CallArtificialFunction} UnRegisterExtension_
|
|
|
- !verbose pop
|
|
|
-!macroend
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-!define RegisterExtension `!insertmacro RegisterExtensionCall`
|
|
|
-!define un.RegisterExtension `!insertmacro RegisterExtensionCall`
|
|
|
-
|
|
|
-!macro RegisterExtension
|
|
|
-!macroend
|
|
|
-
|
|
|
-!macro un.RegisterExtension
|
|
|
-!macroend
|
|
|
-
|
|
|
-!macro RegisterExtension_
|
|
|
- !verbose push
|
|
|
- !verbose ${_FileAssociation_VERBOSE}
|
|
|
-
|
|
|
- Exch $R2 ;exe
|
|
|
- Exch
|
|
|
- Exch $R1 ;ext
|
|
|
- Exch
|
|
|
- Exch 2
|
|
|
- Exch $R0 ;desc
|
|
|
- Exch 2
|
|
|
- Push $0
|
|
|
- Push $1
|
|
|
-
|
|
|
- ReadRegStr $1 HKCR $R1 "" ; read current file association
|
|
|
- StrCmp "$1" "" NoBackup ; is it empty
|
|
|
- StrCmp "$1" "$R0" NoBackup ; is it our own
|
|
|
- WriteRegStr HKCR $R1 "backup_val" "$1" ; backup current value
|
|
|
-NoBackup:
|
|
|
- WriteRegStr HKCR $R1 "" "$R0" ; set our file association
|
|
|
-
|
|
|
- ReadRegStr $0 HKCR $R0 ""
|
|
|
- StrCmp $0 "" 0 Skip
|
|
|
- WriteRegStr HKCR "$R0" "" "$R0"
|
|
|
- WriteRegStr HKCR "$R0\shell" "" "open"
|
|
|
- WriteRegStr HKCR "$R0\DefaultIcon" "" "$R2,0"
|
|
|
-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 $1
|
|
|
- Pop $0
|
|
|
- Pop $R2
|
|
|
- Pop $R1
|
|
|
- Pop $R0
|
|
|
-
|
|
|
- !verbose pop
|
|
|
-!macroend
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-!define UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
|
|
|
-!define un.UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
|
|
|
-
|
|
|
-!macro UnRegisterExtension
|
|
|
-!macroend
|
|
|
-
|
|
|
-!macro un.UnRegisterExtension
|
|
|
-!macroend
|
|
|
-
|
|
|
-!macro UnRegisterExtension_
|
|
|
- !verbose push
|
|
|
- !verbose ${_FileAssociation_VERBOSE}
|
|
|
-
|
|
|
- Exch $R1 ;desc
|
|
|
- Exch
|
|
|
- Exch $R0 ;ext
|
|
|
- Exch
|
|
|
- Push $0
|
|
|
- Push $1
|
|
|
-
|
|
|
- ReadRegStr $1 HKCR $R0 ""
|
|
|
- StrCmp $1 $R1 0 NoOwn ; only do this if we own it
|
|
|
- ReadRegStr $1 HKCR $R0 "backup_val"
|
|
|
- StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
|
|
|
- DeleteRegKey HKCR $R0
|
|
|
- Goto NoOwn
|
|
|
-
|
|
|
-Restore:
|
|
|
- WriteRegStr HKCR $R0 "" $1
|
|
|
- DeleteRegValue HKCR $R0 "backup_val"
|
|
|
- DeleteRegKey HKCR $R1 ;Delete key with association name settings
|
|
|
-
|
|
|
-NoOwn:
|
|
|
-
|
|
|
- Pop $1
|
|
|
- Pop $0
|
|
|
- Pop $R1
|
|
|
- Pop $R0
|
|
|
-
|
|
|
- !verbose pop
|
|
|
-!macroend
|
|
|
-
|
|
|
-!endif # !FileAssociation_INCLUDED
|
|
|
+/*
|
|
|
+_____________________________________________________________________________
|
|
|
+
|
|
|
+ File Association
|
|
|
+_____________________________________________________________________________
|
|
|
+
|
|
|
+ Based on code taken from http://nsis.sourceforge.net/File_Association
|
|
|
+
|
|
|
+ Usage in script:
|
|
|
+ 1. !include "FileAssociation.nsh"
|
|
|
+ 2. [Section|Function]
|
|
|
+ ${FileAssociationFunction} "Param1" "Param2" "..." $var
|
|
|
+ [SectionEnd|FunctionEnd]
|
|
|
+
|
|
|
+ FileAssociationFunction=[RegisterExtension|UnRegisterExtension]
|
|
|
+
|
|
|
+_____________________________________________________________________________
|
|
|
+
|
|
|
+ ${RegisterExtension} "[executable]" "[extension]" "[description]"
|
|
|
+
|
|
|
+"[executable]" ; executable which opens the file format
|
|
|
+ ;
|
|
|
+"[extension]" ; extension, which represents the file format to open
|
|
|
+ ;
|
|
|
+"[description]" ; description for the extension. This will be display in Windows Explorer.
|
|
|
+ ;
|
|
|
+
|
|
|
+
|
|
|
+ ${UnRegisterExtension} "[extension]" "[description]"
|
|
|
+
|
|
|
+"[extension]" ; extension, which represents the file format to open
|
|
|
+ ;
|
|
|
+"[description]" ; description for the extension. This will be display in Windows Explorer.
|
|
|
+ ;
|
|
|
+
|
|
|
+_____________________________________________________________________________
|
|
|
+
|
|
|
+ Macros
|
|
|
+_____________________________________________________________________________
|
|
|
+
|
|
|
+ Change log window verbosity (default: 3=no script)
|
|
|
+
|
|
|
+ Example:
|
|
|
+ !include "FileAssociation.nsh"
|
|
|
+ !insertmacro RegisterExtension
|
|
|
+ ${FileAssociation_VERBOSE} 4 # all verbosity
|
|
|
+ !insertmacro UnRegisterExtension
|
|
|
+ ${FileAssociation_VERBOSE} 3 # no script
|
|
|
+*/
|
|
|
+
|
|
|
+
|
|
|
+!ifndef FileAssociation_INCLUDED
|
|
|
+!define FileAssociation_INCLUDED
|
|
|
+
|
|
|
+!include Util.nsh
|
|
|
+
|
|
|
+!verbose push
|
|
|
+!verbose 3
|
|
|
+!ifndef _FileAssociation_VERBOSE
|
|
|
+ !define _FileAssociation_VERBOSE 3
|
|
|
+!endif
|
|
|
+!verbose ${_FileAssociation_VERBOSE}
|
|
|
+!define FileAssociation_VERBOSE `!insertmacro FileAssociation_VERBOSE`
|
|
|
+!verbose pop
|
|
|
+
|
|
|
+!macro FileAssociation_VERBOSE _VERBOSE
|
|
|
+ !verbose push
|
|
|
+ !verbose 3
|
|
|
+ !undef _FileAssociation_VERBOSE
|
|
|
+ !define _FileAssociation_VERBOSE ${_VERBOSE}
|
|
|
+ !verbose pop
|
|
|
+!macroend
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+!macro RegisterExtensionCall _EXECUTABLE _EXTENSION _DESCRIPTION
|
|
|
+ !verbose push
|
|
|
+ !verbose ${_FileAssociation_VERBOSE}
|
|
|
+ Push `${_DESCRIPTION}`
|
|
|
+ Push `${_EXTENSION}`
|
|
|
+ Push `${_EXECUTABLE}`
|
|
|
+ ${CallArtificialFunction} RegisterExtension_
|
|
|
+ !verbose pop
|
|
|
+!macroend
|
|
|
+
|
|
|
+!macro UnRegisterExtensionCall _EXTENSION _DESCRIPTION
|
|
|
+ !verbose push
|
|
|
+ !verbose ${_FileAssociation_VERBOSE}
|
|
|
+ Push `${_EXTENSION}`
|
|
|
+ Push `${_DESCRIPTION}`
|
|
|
+ ${CallArtificialFunction} UnRegisterExtension_
|
|
|
+ !verbose pop
|
|
|
+!macroend
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+!define RegisterExtension `!insertmacro RegisterExtensionCall`
|
|
|
+!define un.RegisterExtension `!insertmacro RegisterExtensionCall`
|
|
|
+
|
|
|
+!macro RegisterExtension
|
|
|
+!macroend
|
|
|
+
|
|
|
+!macro un.RegisterExtension
|
|
|
+!macroend
|
|
|
+
|
|
|
+!macro RegisterExtension_
|
|
|
+ !verbose push
|
|
|
+ !verbose ${_FileAssociation_VERBOSE}
|
|
|
+
|
|
|
+ Exch $R2 ;exe
|
|
|
+ Exch
|
|
|
+ Exch $R1 ;ext
|
|
|
+ Exch
|
|
|
+ Exch 2
|
|
|
+ Exch $R0 ;desc
|
|
|
+ Exch 2
|
|
|
+ Push $0
|
|
|
+ Push $1
|
|
|
+
|
|
|
+ ReadRegStr $1 HKCR $R1 "" ; read current file association
|
|
|
+ StrCmp "$1" "" NoBackup ; is it empty
|
|
|
+ StrCmp "$1" "$R0" NoBackup ; is it our own
|
|
|
+ WriteRegStr HKCR $R1 "backup_val" "$1" ; backup current value
|
|
|
+NoBackup:
|
|
|
+ WriteRegStr HKCR $R1 "" "$R0" ; set our file association
|
|
|
+
|
|
|
+ ReadRegStr $0 HKCR $R0 ""
|
|
|
+ StrCmp $0 "" 0 Skip
|
|
|
+ WriteRegStr HKCR "$R0" "" "$R0"
|
|
|
+ WriteRegStr HKCR "$R0\shell" "" "open"
|
|
|
+ WriteRegStr HKCR "$R0\DefaultIcon" "" "$R2,0"
|
|
|
+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 $1
|
|
|
+ Pop $0
|
|
|
+ Pop $R2
|
|
|
+ Pop $R1
|
|
|
+ Pop $R0
|
|
|
+
|
|
|
+ !verbose pop
|
|
|
+!macroend
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+!define UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
|
|
|
+!define un.UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
|
|
|
+
|
|
|
+!macro UnRegisterExtension
|
|
|
+!macroend
|
|
|
+
|
|
|
+!macro un.UnRegisterExtension
|
|
|
+!macroend
|
|
|
+
|
|
|
+!macro UnRegisterExtension_
|
|
|
+ !verbose push
|
|
|
+ !verbose ${_FileAssociation_VERBOSE}
|
|
|
+
|
|
|
+ Exch $R1 ;desc
|
|
|
+ Exch
|
|
|
+ Exch $R0 ;ext
|
|
|
+ Exch
|
|
|
+ Push $0
|
|
|
+ Push $1
|
|
|
+
|
|
|
+ ReadRegStr $1 HKCR $R0 ""
|
|
|
+ StrCmp $1 $R1 0 NoOwn ; only do this if we own it
|
|
|
+ ReadRegStr $1 HKCR $R0 "backup_val"
|
|
|
+ StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
|
|
|
+ DeleteRegKey HKCR $R0
|
|
|
+ Goto NoOwn
|
|
|
+
|
|
|
+Restore:
|
|
|
+ WriteRegStr HKCR $R0 "" $1
|
|
|
+ DeleteRegValue HKCR $R0 "backup_val"
|
|
|
+ DeleteRegKey HKCR $R1 ;Delete key with association name settings
|
|
|
+
|
|
|
+NoOwn:
|
|
|
+
|
|
|
+ Pop $1
|
|
|
+ Pop $0
|
|
|
+ Pop $R1
|
|
|
+ Pop $R0
|
|
|
+
|
|
|
+ !verbose pop
|
|
|
+!macroend
|
|
|
+
|
|
|
+!endif # !FileAssociation_INCLUDED
|