~mapeditor.org/tiled/snapshot

« back to all changes in this revision

Viewing changes to dist/win/FileAssociation.nsh

  • Committer: Thorbjørn Lindeijer
  • Date: 2011-02-27 21:52:31 UTC
  • mfrom: (563.1.18)
  • Revision ID: git-v1:5c6e0769d046023af8cb37b93fd9dc163558b24d
Merge branch '0.6'

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
_____________________________________________________________________________
 
3
 
 
4
                       File Association
 
5
_____________________________________________________________________________
 
6
 
 
7
 Based on code taken from http://nsis.sourceforge.net/File_Association 
 
8
 
 
9
 Usage in script:
 
10
 1. !include "FileAssociation.nsh"
 
11
 2. [Section|Function]
 
12
      ${FileAssociationFunction} "Param1" "Param2" "..." $var
 
13
    [SectionEnd|FunctionEnd]
 
14
 
 
15
 FileAssociationFunction=[RegisterExtension|UnRegisterExtension]
 
16
 
 
17
_____________________________________________________________________________
 
18
 
 
19
 ${RegisterExtension} "[executable]" "[extension]" "[description]"
 
20
 
 
21
"[executable]"     ; executable which opens the file format
 
22
                   ;
 
23
"[extension]"      ; extension, which represents the file format to open
 
24
                   ;
 
25
"[description]"    ; description for the extension. This will be display in Windows Explorer.
 
26
                   ;
 
27
 
 
28
 
 
29
 ${UnRegisterExtension} "[extension]" "[description]"
 
30
 
 
31
"[extension]"      ; extension, which represents the file format to open
 
32
                   ;
 
33
"[description]"    ; description for the extension. This will be display in Windows Explorer.
 
34
                   ;
 
35
 
 
36
_____________________________________________________________________________
 
37
 
 
38
                         Macros
 
39
_____________________________________________________________________________
 
40
 
 
41
 Change log window verbosity (default: 3=no script)
 
42
 
 
43
 Example:
 
44
 !include "FileAssociation.nsh"
 
45
 !insertmacro RegisterExtension
 
46
 ${FileAssociation_VERBOSE} 4   # all verbosity
 
47
 !insertmacro UnRegisterExtension
 
48
 ${FileAssociation_VERBOSE} 3   # no script
 
49
*/
 
50
 
 
51
 
 
52
!ifndef FileAssociation_INCLUDED
 
53
!define FileAssociation_INCLUDED
 
54
 
 
55
!include Util.nsh
 
56
 
 
57
!verbose push
 
58
!verbose 3
 
59
!ifndef _FileAssociation_VERBOSE
 
60
  !define _FileAssociation_VERBOSE 3
 
61
!endif
 
62
!verbose ${_FileAssociation_VERBOSE}
 
63
!define FileAssociation_VERBOSE `!insertmacro FileAssociation_VERBOSE`
 
64
!verbose pop
 
65
 
 
66
!macro FileAssociation_VERBOSE _VERBOSE
 
67
  !verbose push
 
68
  !verbose 3
 
69
  !undef _FileAssociation_VERBOSE
 
70
  !define _FileAssociation_VERBOSE ${_VERBOSE}
 
71
  !verbose pop
 
72
!macroend
 
73
 
 
74
 
 
75
 
 
76
!macro RegisterExtensionCall _EXECUTABLE _EXTENSION _DESCRIPTION
 
77
  !verbose push
 
78
  !verbose ${_FileAssociation_VERBOSE}
 
79
  Push `${_DESCRIPTION}`
 
80
  Push `${_EXTENSION}`
 
81
  Push `${_EXECUTABLE}`
 
82
  ${CallArtificialFunction} RegisterExtension_
 
83
  !verbose pop
 
84
!macroend
 
85
 
 
86
!macro UnRegisterExtensionCall _EXTENSION _DESCRIPTION
 
87
  !verbose push
 
88
  !verbose ${_FileAssociation_VERBOSE}
 
89
  Push `${_EXTENSION}`
 
90
  Push `${_DESCRIPTION}`
 
91
  ${CallArtificialFunction} UnRegisterExtension_
 
92
  !verbose pop
 
93
!macroend
 
94
 
 
95
 
 
96
 
 
97
!define RegisterExtension `!insertmacro RegisterExtensionCall`
 
98
!define un.RegisterExtension `!insertmacro RegisterExtensionCall`
 
99
 
 
100
!macro RegisterExtension
 
101
!macroend
 
102
 
 
103
!macro un.RegisterExtension
 
104
!macroend
 
105
 
 
106
!macro RegisterExtension_
 
107
  !verbose push
 
108
  !verbose ${_FileAssociation_VERBOSE}
 
109
 
 
110
  Exch $R2 ;exe
 
111
  Exch
 
112
  Exch $R1 ;ext
 
113
  Exch
 
114
  Exch 2
 
115
  Exch $R0 ;desc
 
116
  Exch 2
 
117
  Push $0
 
118
  Push $1
 
119
 
 
120
  ReadRegStr $1 HKCR $R1 ""  ; read current file association
 
121
  StrCmp "$1" "" NoBackup  ; is it empty
 
122
  StrCmp "$1" "$R0" NoBackup  ; is it our own
 
123
    WriteRegStr HKCR $R1 "backup_val" "$1"  ; backup current value
 
124
NoBackup:
 
125
  WriteRegStr HKCR $R1 "" "$R0"  ; set our file association
 
126
 
 
127
  ReadRegStr $0 HKCR $R0 ""
 
128
  StrCmp $0 "" 0 Skip
 
129
    WriteRegStr HKCR "$R0" "" "$R0"
 
130
    WriteRegStr HKCR "$R0\shell" "" "open"
 
131
    WriteRegStr HKCR "$R0\DefaultIcon" "" "$R2,0"
 
132
Skip:
 
133
  WriteRegStr HKCR "$R0\shell\open\command" "" '"$R2" "%1"'
 
134
  WriteRegStr HKCR "$R0\shell\edit" "" "Edit $R0"
 
135
  WriteRegStr HKCR "$R0\shell\edit\command" "" '"$R2" "%1"'
 
136
 
 
137
  Pop $1
 
138
  Pop $0
 
139
  Pop $R2
 
140
  Pop $R1
 
141
  Pop $R0
 
142
 
 
143
  !verbose pop
 
144
!macroend
 
145
 
 
146
 
 
147
 
 
148
!define UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
 
149
!define un.UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
 
150
 
 
151
!macro UnRegisterExtension
 
152
!macroend
 
153
 
 
154
!macro un.UnRegisterExtension
 
155
!macroend
 
156
 
 
157
!macro UnRegisterExtension_
 
158
  !verbose push
 
159
  !verbose ${_FileAssociation_VERBOSE}
 
160
 
 
161
  Exch $R1 ;desc
 
162
  Exch
 
163
  Exch $R0 ;ext
 
164
  Exch
 
165
  Push $0
 
166
  Push $1
 
167
 
 
168
  ReadRegStr $1 HKCR $R0 ""
 
169
  StrCmp $1 $R1 0 NoOwn ; only do this if we own it
 
170
  ReadRegStr $1 HKCR $R0 "backup_val"
 
171
  StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
 
172
  DeleteRegKey HKCR $R0
 
173
  Goto NoOwn
 
174
 
 
175
Restore:
 
176
  WriteRegStr HKCR $R0 "" $1
 
177
  DeleteRegValue HKCR $R0 "backup_val"
 
178
  DeleteRegKey HKCR $R1 ;Delete key with association name settings
 
179
 
 
180
NoOwn:
 
181
 
 
182
  Pop $1
 
183
  Pop $0
 
184
  Pop $R1
 
185
  Pop $R0
 
186
 
 
187
  !verbose pop
 
188
!macroend
 
189
 
 
190
!endif # !FileAssociation_INCLUDED
 
 
b'\\ No newline at end of file'