main
cs 180 lines 9.44 KB
Raw
1 // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3 namespace WixToolset.Extensibility.Services
4 {
5 using System.Xml.Linq;
6 using WixToolset.Data.WindowsInstaller;
7
8 /// <summary>
9 /// Interface provided to help Windows Installer decompiler extensions.
10 /// </summary>
11 public interface IWindowsInstallerDecompilerHelper
12 {
13 /// <summary>
14 /// Gets or sets the root element of the decompiled output.
15 /// </summary>
16 XElement RootElement { get; set; }
17
18 /// <summary>
19 /// Creates an element from the standard WiX Toolset namespace and adds it to the root document.
20 /// </summary>
21 /// <param name="name">Name of the element to create and add.</param>
22 /// <param name="content">Optional content to add to the new element.</param>
23 /// <returns>Element in the standard namespace.</returns>
24 XElement AddElementToRoot(string name, params object[] content);
25
26 /// <summary>
27 /// Creates an element with the specified name and adds it to the root document.
28 /// </summary>
29 /// <param name="name">Name of the element to create and add.</param>
30 /// <param name="content">Optional content to add to the new element.</param>
31 /// <returns>Element in the standard namespace.</returns>
32 XElement AddElementToRoot(XName name, params object[] content);
33
34 /// <summary>
35 /// Adds an existing element to the root document.
36 /// </summary>
37 /// <param name="element">Element to add.</param>
38 /// <returns>Same element provided.</returns>
39 XElement AddElementToRoot(XElement element);
40
41 /// <summary>
42 /// Creates an element from the standard WiX Toolset namespace.
43 /// </summary>
44 /// <param name="name">Name of the element to create.</param>
45 /// <param name="content">Optional content to add to the new element.</param>
46 /// <returns>Element in the standard namespace.</returns>
47 XElement CreateElement(string name, params object[] content);
48
49 /// <summary>
50 /// Get an element index by a row's table and primary keys.
51 /// </summary>
52 /// <param name="row">Row to get element.</param>
53 /// <returns>Element indexed for the row or null if not found.</returns>
54 XElement GetIndexedElement(Row row);
55
56 /// <summary>
57 /// Get an element index by table and primary key.
58 /// </summary>
59 /// <param name="table">Table name for indexed element.</param>
60 /// <param name="primaryKey">Primary key for indexed element.</param>
61 /// <returns>Element indexed for the table and primary key or null if not found.</returns>
62 XElement GetIndexedElement(string table, string primaryKey);
63
64 /// <summary>
65 /// Get an element index by table and primary keys.
66 /// </summary>
67 /// <param name="table">Table name for indexed element.</param>
68 /// <param name="primaryKey1">Primary key for first column indexed element.</param>
69 /// <param name="primaryKey2">Primary key for second column indexed element.</param>
70 /// <returns>Element indexed for the table and primary keys or null if not found.</returns>
71 XElement GetIndexedElement(string table, string primaryKey1, string primaryKey2);
72
73 /// <summary>
74 /// Get an element index by table and primary keys.
75 /// </summary>
76 /// <param name="table">Table name for indexed element.</param>
77 /// <param name="primaryKey1">Primary key for first column indexed element.</param>
78 /// <param name="primaryKey2">Primary key for second column indexed element.</param>
79 /// <param name="primaryKey3">Primary key for third column indexed element.</param>
80 /// <returns>Element indexed for the table and primary keys or null if not found.</returns>
81 XElement GetIndexedElement(string table, string primaryKey1, string primaryKey2, string primaryKey3);
82
83 /// <summary>
84 /// Get an element index by table and primary keys.
85 /// </summary>
86 /// <param name="table">Table name for indexed element.</param>
87 /// <param name="primaryKeys">Primary keys for indexed element.</param>
88 /// <returns>Element indexed for the table and primary keys or null if not found.</returns>
89 XElement GetIndexedElement(string table, string[] primaryKeys);
90
91 /// <summary>
92 /// Try to get an element index by a row's table and primary keys.
93 /// </summary>
94 /// <param name="row">Row to get element.</param>
95 /// <param name="element">Element indexed for the row.</param>
96 /// <returns>True if the element was index otherwise false.</returns>
97 bool TryGetIndexedElement(Row row, out XElement element);
98
99 /// <summary>
100 /// Try to get an element index by table name and primary key.
101 /// </summary>
102 /// <param name="table">Table name for indexed element.</param>
103 /// <param name="primaryKey">Primary key for indexed element.</param>
104 /// <param name="element">Element indexed for the table and primary key.</param>
105 /// <returns>True if the element was index otherwise false.</returns>
106 bool TryGetIndexedElement(string table, string primaryKey, out XElement element);
107
108 /// <summary>
109 /// Try to get an element index by table name and primary keys.
110 /// </summary>
111 /// <param name="table">Table name for indexed element.</param>
112 /// <param name="primaryKey1">First column's primary key for indexed element.</param>
113 /// <param name="primaryKey2">Second column's primary key for indexed element.</param>
114 /// <param name="element">Element indexed for the table and primary key.</param>
115 /// <returns>True if the element was index otherwise false.</returns>
116 bool TryGetIndexedElement(string table, string primaryKey1, string primaryKey2, out XElement element);
117
118 /// <summary>
119 /// Try to get an element index by table name and primary keys.
120 /// </summary>
121 /// <param name="table">Table name for indexed element.</param>
122 /// <param name="primaryKey1">First column's primary key for indexed element.</param>
123 /// <param name="primaryKey2">Second column's primary key for indexed element.</param>
124 /// <param name="primaryKey3">Third column's primary key for indexed element.</param>
125 /// <param name="element">Element indexed for the table and primary key.</param>
126 /// <returns>True if the element was index otherwise false.</returns>
127 bool TryGetIndexedElement(string table, string primaryKey1, string primaryKey2, string primaryKey3, out XElement element);
128
129 /// <summary>
130 /// Try to get an element index by table name and primary keys.
131 /// </summary>
132 /// <param name="table">Table name for indexed element.</param>
133 /// <param name="primaryKeys">Primary keys for indexed element.</param>
134 /// <param name="element">Element indexed for the table and primary key.</param>
135 /// <returns>True if the element was index otherwise false.</returns>
136 bool TryGetIndexedElement(string table, string[] primaryKeys, out XElement element);
137
138 /// <summary>
139 /// Index an element by a row's table and primary keys.
140 /// </summary>
141 /// <param name="row">Row to index element.</param>
142 /// <param name="element">Element to index.</param>
143 void IndexElement(Row row, XElement element);
144
145 /// <summary>
146 /// Index an element by table and primary key.
147 /// </summary>
148 /// <param name="table">Table name to index element.</param>
149 /// <param name="primaryKey">Primary key to index element.</param>
150 /// <param name="element">Element to index.</param>
151 void IndexElement(string table, string primaryKey, XElement element);
152
153 /// <summary>
154 /// Index an element by table and primary keys.
155 /// </summary>
156 /// <param name="table">Table name to index element.</param>
157 /// <param name="primaryKey1">First column's primary key to index element.</param>
158 /// <param name="primaryKey2">Second column's primary key to index element.</param>
159 /// <param name="element">Element to index.</param>
160 void IndexElement(string table, string primaryKey1, string primaryKey2, XElement element);
161
162 /// <summary>
163 /// Index an element by table and primary keys.
164 /// </summary>
165 /// <param name="table">Table name to index element.</param>
166 /// <param name="primaryKey1">First column's primary key to index element.</param>
167 /// <param name="primaryKey2">Second column's primary key to index element.</param>
168 /// <param name="primaryKey3">Third column's primary key to index element.</param>
169 /// <param name="element">Element to index.</param>
170 void IndexElement(string table, string primaryKey1, string primaryKey2, string primaryKey3, XElement element);
171
172 /// <summary>
173 /// Index an element by table and primary keys.
174 /// </summary>
175 /// <param name="table">Table name to index element.</param>
176 /// <param name="primaryKeys">Column's primary key to index element.</param>
177 /// <param name="element">Element to index.</param>
178 void IndexElement(string table, string[] primaryKeys, XElement element);
179 }
180 }