aboutsummaryrefslogtreecommitdiff
path: root/src/engine/search.h
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2018-12-29 22:12:08 -0600
committerSean Hall <r.sean.hall@gmail.com>2018-12-29 22:12:08 -0600
commit61847dddd4fd497057c780658e383c4627de19ec (patch)
treef85a845182922538ab9aa6ee85b0db3ab40c1f6e /src/engine/search.h
parent8295f5f8fd28042e1a0a172d5afbba79178064c2 (diff)
downloadwix-61847dddd4fd497057c780658e383c4627de19ec.tar.gz
wix-61847dddd4fd497057c780658e383c4627de19ec.tar.bz2
wix-61847dddd4fd497057c780658e383c4627de19ec.zip
Import code from old v4 repo
Diffstat (limited to 'src/engine/search.h')
-rw-r--r--src/engine/search.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/src/engine/search.h b/src/engine/search.h
new file mode 100644
index 00000000..65dfb18f
--- /dev/null
+++ b/src/engine/search.h
@@ -0,0 +1,152 @@
1#pragma once
2// 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.
3
4
5#if defined(__cplusplus)
6extern "C" {
7#endif
8
9
10// constants
11
12enum BURN_SEARCH_TYPE
13{
14 BURN_SEARCH_TYPE_NONE,
15 BURN_SEARCH_TYPE_DIRECTORY,
16 BURN_SEARCH_TYPE_FILE,
17 BURN_SEARCH_TYPE_REGISTRY,
18 BURN_SEARCH_TYPE_MSI_COMPONENT,
19 BURN_SEARCH_TYPE_MSI_PRODUCT,
20 BURN_SEARCH_TYPE_MSI_FEATURE,
21};
22
23enum BURN_DIRECTORY_SEARCH_TYPE
24{
25 BURN_DIRECTORY_SEARCH_TYPE_NONE,
26 BURN_DIRECTORY_SEARCH_TYPE_EXISTS,
27 BURN_DIRECTORY_SEARCH_TYPE_PATH,
28};
29
30enum BURN_FILE_SEARCH_TYPE
31{
32 BURN_FILE_SEARCH_TYPE_NONE,
33 BURN_FILE_SEARCH_TYPE_EXISTS,
34 BURN_FILE_SEARCH_TYPE_VERSION,
35 BURN_FILE_SEARCH_TYPE_PATH,
36};
37
38enum BURN_REGISTRY_SEARCH_TYPE
39{
40 BURN_REGISTRY_SEARCH_TYPE_NONE,
41 BURN_REGISTRY_SEARCH_TYPE_EXISTS,
42 BURN_REGISTRY_SEARCH_TYPE_VALUE,
43};
44
45enum BURN_MSI_COMPONENT_SEARCH_TYPE
46{
47 BURN_MSI_COMPONENT_SEARCH_TYPE_NONE,
48 BURN_MSI_COMPONENT_SEARCH_TYPE_KEYPATH,
49 BURN_MSI_COMPONENT_SEARCH_TYPE_STATE,
50 BURN_MSI_COMPONENT_SEARCH_TYPE_DIRECTORY,
51};
52
53enum BURN_MSI_PRODUCT_SEARCH_TYPE
54{
55 BURN_MSI_PRODUCT_SEARCH_TYPE_NONE,
56 BURN_MSI_PRODUCT_SEARCH_TYPE_VERSION,
57 BURN_MSI_PRODUCT_SEARCH_TYPE_LANGUAGE,
58 BURN_MSI_PRODUCT_SEARCH_TYPE_STATE,
59 BURN_MSI_PRODUCT_SEARCH_TYPE_ASSIGNMENT,
60};
61
62enum BURN_MSI_PRODUCT_SEARCH_GUID_TYPE
63{
64 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE_NONE,
65 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE_PRODUCTCODE,
66 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE_UPGRADECODE
67};
68
69enum BURN_MSI_FEATURE_SEARCH_TYPE
70{
71 BURN_MSI_FEATURE_SEARCH_TYPE_NONE,
72 BURN_MSI_FEATURE_SEARCH_TYPE_STATE,
73};
74
75
76// structs
77
78typedef struct _BURN_SEARCH
79{
80 LPWSTR sczKey;
81 LPWSTR sczVariable;
82 LPWSTR sczCondition;
83
84 BURN_SEARCH_TYPE Type;
85 union
86 {
87 struct
88 {
89 BURN_DIRECTORY_SEARCH_TYPE Type;
90 LPWSTR sczPath;
91 } DirectorySearch;
92 struct
93 {
94 BURN_FILE_SEARCH_TYPE Type;
95 LPWSTR sczPath;
96 } FileSearch;
97 struct
98 {
99 BURN_REGISTRY_SEARCH_TYPE Type;
100 BURN_VARIANT_TYPE VariableType;
101 HKEY hRoot;
102 LPWSTR sczKey;
103 LPWSTR sczValue;
104 BOOL fWin64;
105 BOOL fExpandEnvironment;
106 } RegistrySearch;
107 struct
108 {
109 BURN_MSI_COMPONENT_SEARCH_TYPE Type;
110 LPWSTR sczProductCode;
111 LPWSTR sczComponentId;
112 } MsiComponentSearch;
113 struct
114 {
115 BURN_MSI_PRODUCT_SEARCH_TYPE Type;
116 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE GuidType;
117 LPWSTR sczGuid;
118 } MsiProductSearch;
119 struct
120 {
121 BURN_MSI_FEATURE_SEARCH_TYPE Type;
122 LPWSTR sczProductCode;
123 LPWSTR sczFeatureId;
124 } MsiFeatureSearch;
125 };
126} BURN_SEARCH;
127
128typedef struct _BURN_SEARCHES
129{
130 BURN_SEARCH* rgSearches;
131 DWORD cSearches;
132} BURN_SEARCHES;
133
134
135// function declarations
136
137HRESULT SearchesParseFromXml(
138 __in BURN_SEARCHES* pSearches,
139 __in IXMLDOMNode* pixnBundle
140 );
141HRESULT SearchesExecute(
142 __in BURN_SEARCHES* pSearches,
143 __in BURN_VARIABLES* pVariables
144 );
145void SearchesUninitialize(
146 __in BURN_SEARCHES* pSearches
147 );
148
149
150#if defined(__cplusplus)
151}
152#endif