Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in tip

fogcreek shellext: added self-registration support

Changeset 88f7072071e3

Parent 9a719bf80f4b

by David Golub

Changes to 11 files · Browse files at 88f7072071e3 Showing diff from parent 9a719bf80f4b Diff from another changeset...

 
74
75
76
77
 
78
79
80
 
74
75
76
 
77
78
79
80
@@ -74,7 +74,7 @@
 public:   CShellExtCMenu();   - DECLARE_REGISTRY_RESOURCE(IDR_CMENU) + DECLARE_REGISTRY_RESOURCEID(IDR_CMENU)  };    #endif
 
1
2
3
 
4
5
 
6
7
 
8
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
11
12
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
 
3
4
 
5
6
 
7
8
 
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
@@ -1,13 +1,125 @@
 HKCR  { - NoRemove CLSID + NoRemove 'CLSID'   { - ForceRemove {46605027-5B8C-4DCE-BFE0-051B7972D64C} = s 'TortoiseHg' + ForceRemove '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' = s 'TortoiseHg'   { - InprocServer32 = s '%MODULE%' + 'InprocServer32' = s '%MODULE%'   { - val ThreadingModel = s 'Apartment' + val 'ThreadingModel' = s 'Apartment' + } + } + } + 'Directory' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + 'Background' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + } + } + 'Drive' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + } + 'Folder' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + } + 'InternetShortcut' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + } + 'LibraryLocation' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + } + 'LibraryFolder' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + 'Background' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' + } + } + } + } + '*' + { + 'shellex' + { + 'ContextMenuHandlers' + { + 'TortoiseHgCmenu' = s '{46605027-5B8C-4DCE-BFE0-051B7972D64C}'   }   }   }  } +HKLM +{ + NoRemove 'Software' + { + NoRemove 'Microsoft' + { + NoRemove 'Windows' + { + NoRemove 'CurrentVersion' + { + NoRemove 'Shell Extensions' + { + NoRemove 'Approved' + { + val '{46605027-5B8C-4DCE-BFE0-051B7972D64C}' = s 'TortoiseHg' + } + } + } + } + } + } +}
 
16
17
18
19
 
20
21
22
 
16
17
18
 
19
20
21
22
@@ -16,7 +16,7 @@
  explicit CShellExtDnd();   ~CShellExtDnd();   - DECLARE_REGISTRY_RESOURCE(IDR_DRAGDROP) + DECLARE_REGISTRY_RESOURCEID(IDR_DRAGDROP)     // IContextMenu3   STDMETHOD(QueryContextMenu)(
 
1
2
3
 
4
5
 
6
7
 
8
9
 
 
 
 
 
 
 
 
 
 
 
10
11
12
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
 
3
4
 
5
6
 
7
8
 
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@@ -1,13 +1,45 @@
 HKCR  { - NoRemove CLSID + NoRemove 'CLSID'   { - ForceRemove {CEBD95BE-B733-415F-82A8-673D9158466E} = s 'TortoiseHg' + ForceRemove '{CEBD95BE-B733-415F-82A8-673D9158466E}' = s 'TortoiseHg'   { - InprocServer32 = s '%MODULE%' + 'InprocServer32' = s '%MODULE%'   { - val ThreadingModel = s 'Apartment' + val 'ThreadingModel' = s 'Apartment' + } + } + } + 'Directory' + { + 'shellex' + { + 'DragDropHandlers' + { + 'TortoiseHg' = s '{CEBD95BE-B733-415F-82A8-673D9158466E}'   }   }   }  } +HKLM +{ + NoRemove 'Software' + { + NoRemove 'Microsoft' + { + NoRemove 'Windows' + { + NoRemove 'CurrentVersion' + { + NoRemove 'Shell Extensions' + { + NoRemove 'Approved' + { + val '{CEBD95BE-B733-415F-82A8-673D9158466E}' = s 'TortoiseHg' + } + } + } + } + } + } +}
 
31
32
33
34
 
35
36
37
 
41
42
43
44
 
45
46
47
 
51
52
53
54
 
55
56
57
 
61
62
63
64
 
65
66
67
 
31
32
33
 
34
35
36
37
 
41
42
43
 
44
45
46
47
 
51
52
53
 
54
55
56
57
 
61
62
63
 
64
65
66
67
@@ -31,7 +31,7 @@
 public:   CTortoiseHgNormal();   - DECLARE_REGISTRY_RESOURCE(IDR_NORMAL) + DECLARE_REGISTRY_RESOURCEID(IDR_NORMAL)  };    class CTortoiseHgAdded : @@ -41,7 +41,7 @@
 public:   CTortoiseHgAdded();   - DECLARE_REGISTRY_RESOURCE(IDR_ADDED) + DECLARE_REGISTRY_RESOURCEID(IDR_ADDED)  };    class CTortoiseHgModified : @@ -51,7 +51,7 @@
 public:   CTortoiseHgModified();   - DECLARE_REGISTRY_RESOURCE(IDR_MODIFIED) + DECLARE_REGISTRY_RESOURCEID(IDR_MODIFIED)  };    class CTortoiseHgUnversioned : @@ -61,7 +61,7 @@
 public:   CTortoiseHgUnversioned();   - DECLARE_REGISTRY_RESOURCE(IDR_UNVERSIONED) + DECLARE_REGISTRY_RESOURCEID(IDR_UNVERSIONED)  };    #endif
 
47
48
49
 
 
 
 
 
 
 
 
 
 
 
47
48
49
50
51
52
53
54
55
56
57
58
59
@@ -47,3 +47,13 @@
 {   return _Module.GetClassObject(rclsid, riid, ppv);  } + +STDAPI DllRegisterServer(void) +{ + return _Module.RegisterServer(); +} + +STDAPI DllUnregisterServer(void) +{ + return _Module.UnregisterServer(); +}
 
1
2
3
4
5
 
 
 
 
 
1
2
3
 
 
4
5
6
7
@@ -1,5 +1,7 @@
 ; shellext: Declares the module parameters for the DLL.    EXPORTS - DllCanUnloadNow PRIVATE - DllGetClassObject PRIVATE + DllCanUnloadNow PRIVATE + DllGetClassObject PRIVATE + DllRegisterServer PRIVATE + DllUnregisterServer PRIVATE
 
1
2
3
 
4
5
 
6
7
 
8
9
 
10
11
12
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
 
3
4
 
5
6
 
7
8
 
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@@ -1,13 +1,42 @@
 HKCR  { - NoRemove CLSID + NoRemove 'CLSID'   { - ForceRemove {AF42ADAB-8C2E-4285-B746-99B31094708E} = s 'TortoiseHg' + ForceRemove '{AF42ADAB-8C2E-4285-B746-99B31094708E}' = s 'TortoiseHg'   { - InprocServer32 = s '%MODULE%' + 'InprocServer32' = s '%MODULE%'   { - val ThreadingModel = s 'Apartment' + val 'ThreadingModel' = s 'Apartment'   }   }   }  } +HKLM +{ + NoRemove 'Software' + { + 'TortoiseOverlays' + { + 'Added' + { + val 'TortoiseHgMsi' = s '{AF42ADAB-8C2E-4285-B746-99B31094708E}' + } + } + NoRemove 'Microsoft' + { + NoRemove 'Windows' + { + NoRemove 'CurrentVersion' + { + NoRemove 'Shell Extensions' + { + NoRemove 'Approved' + { + val '{AF42ADAB-8C2E-4285-B746-99B31094708E}' = s 'TortoiseHg' + } + } + } + } + } + } +}
 
1
2
3
 
4
5
 
6
7
 
8
9
 
10
11
12
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
 
3
4
 
5
6
 
7
8
 
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@@ -1,13 +1,42 @@
 HKCR  { - NoRemove CLSID + NoRemove 'CLSID'   { - ForceRemove {CDA1C89D-E9B5-4981-A857-82DD932EA2FD} = s 'TortoiseHg' + ForceRemove '{CDA1C89D-E9B5-4981-A857-82DD932EA2FD}' = s 'TortoiseHg'   { - InprocServer32 = s '%MODULE%' + 'InprocServer32' = s '%MODULE%'   { - val ThreadingModel = s 'Apartment' + val 'ThreadingModel' = s 'Apartment'   }   }   }  } +HKLM +{ + NoRemove 'Software' + { + 'TortoiseOverlays' + { + 'Modified' + { + val 'TortoiseHgMsi' = s '{CDA1C89D-E9B5-4981-A857-82DD932EA2FD}' + } + } + NoRemove 'Microsoft' + { + NoRemove 'Windows' + { + NoRemove 'CurrentVersion' + { + NoRemove 'Shell Extensions' + { + NoRemove 'Approved' + { + val '{CDA1C89D-E9B5-4981-A857-82DD932EA2FD}' = s 'TortoiseHg' + } + } + } + } + } + } +}
 
1
2
3
 
4
5
 
6
7
8
9
 
10
11
12
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
 
3
4
 
5
6
7
8
 
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@@ -1,13 +1,42 @@
 HKCR  { - NoRemove CLSID + NoRemove 'CLSID'   { - ForceRemove {869C8877-2C3C-438D-844B-31B86BFE5E8A} = s 'TortoiseHg' + ForceRemove '{869C8877-2C3C-438D-844B-31B86BFE5E8A}' = s 'TortoiseHg'   {   InprocServer32 = s '%MODULE%'   { - val ThreadingModel = s 'Apartment' + val 'ThreadingModel' = s 'Apartment'   }   }   }  } +HKLM +{ + NoRemove 'Software' + { + 'TortoiseOverlays' + { + 'Normal' + { + val 'TortoiseHgMsi' = s '{869C8877-2C3C-438D-844B-31B86BFE5E8A}' + } + } + NoRemove 'Microsoft' + { + NoRemove 'Windows' + { + NoRemove 'CurrentVersion' + { + NoRemove 'Shell Extensions' + { + NoRemove 'Approved' + { + val '{869C8877-2C3C-438D-844B-31B86BFE5E8A}' = s 'TortoiseHg' + } + } + } + } + } + } +}
 
1
2
3
 
4
5
 
6
7
 
8
9
 
10
11
12
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
 
3
4
 
5
6
 
7
8
 
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@@ -1,13 +1,42 @@
 HKCR  { - NoRemove CLSID + NoRemove 'CLSID'   { - ForceRemove {9E3D4EC9-0624-4393-8B48-204C217ED1FF} = s 'TortoiseHg' + ForceRemove '{9E3D4EC9-0624-4393-8B48-204C217ED1FF}' = s 'TortoiseHg'   { - InprocServer32 = s '%MODULE%' + 'InprocServer32' = s '%MODULE%'   { - val ThreadingModel = s 'Apartment' + val 'ThreadingModel' = s 'Apartment'   }   }   }  } +HKLM +{ + NoRemove 'Software' + { + 'TortoiseOverlays' + { + 'Unversioned' + { + val 'TortoiseHgMsi' = s '{9E3D4EC9-0624-4393-8B48-204C217ED1FF}' + } + } + NoRemove 'Microsoft' + { + NoRemove 'Windows' + { + NoRemove 'CurrentVersion' + { + NoRemove 'Shell Extensions' + { + NoRemove 'Approved' + { + val '{9E3D4EC9-0624-4393-8B48-204C217ED1FF}' = s 'TortoiseHg' + } + } + } + } + } + } +}