Changeset View
Changeset View
Standalone View
Standalone View
extragear/kexi/kexi/FileAssociation.nsh
- This file was added.
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 |