main
h 152 lines 3.38 KB
Raw
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)
6 extern "C" {
7 #endif
8
9
10 // constants
11
12 enum 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_EXTENSION,
21 BURN_SEARCH_TYPE_SET_VARIABLE,
22 };
23
24 enum BURN_DIRECTORY_SEARCH_TYPE
25 {
26 BURN_DIRECTORY_SEARCH_TYPE_NONE,
27 BURN_DIRECTORY_SEARCH_TYPE_EXISTS,
28 BURN_DIRECTORY_SEARCH_TYPE_PATH,
29 };
30
31 enum BURN_FILE_SEARCH_TYPE
32 {
33 BURN_FILE_SEARCH_TYPE_NONE,
34 BURN_FILE_SEARCH_TYPE_EXISTS,
35 BURN_FILE_SEARCH_TYPE_VERSION,
36 BURN_FILE_SEARCH_TYPE_PATH,
37 };
38
39 enum BURN_REGISTRY_SEARCH_TYPE
40 {
41 BURN_REGISTRY_SEARCH_TYPE_NONE,
42 BURN_REGISTRY_SEARCH_TYPE_EXISTS,
43 BURN_REGISTRY_SEARCH_TYPE_VALUE,
44 };
45
46 enum BURN_MSI_COMPONENT_SEARCH_TYPE
47 {
48 BURN_MSI_COMPONENT_SEARCH_TYPE_NONE,
49 BURN_MSI_COMPONENT_SEARCH_TYPE_KEYPATH,
50 BURN_MSI_COMPONENT_SEARCH_TYPE_STATE,
51 BURN_MSI_COMPONENT_SEARCH_TYPE_DIRECTORY,
52 };
53
54 enum BURN_MSI_PRODUCT_SEARCH_TYPE
55 {
56 BURN_MSI_PRODUCT_SEARCH_TYPE_NONE,
57 BURN_MSI_PRODUCT_SEARCH_TYPE_VERSION,
58 BURN_MSI_PRODUCT_SEARCH_TYPE_LANGUAGE,
59 BURN_MSI_PRODUCT_SEARCH_TYPE_STATE,
60 BURN_MSI_PRODUCT_SEARCH_TYPE_ASSIGNMENT,
61 };
62
63 enum BURN_MSI_PRODUCT_SEARCH_GUID_TYPE
64 {
65 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE_NONE,
66 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE_PRODUCTCODE,
67 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE_UPGRADECODE
68 };
69
70
71 // structs
72
73 typedef struct _BURN_SEARCH
74 {
75 LPWSTR sczKey;
76 LPWSTR sczVariable;
77 LPWSTR sczCondition;
78
79 BURN_SEARCH_TYPE Type;
80 union
81 {
82 struct
83 {
84 BURN_DIRECTORY_SEARCH_TYPE Type;
85 LPWSTR sczPath;
86 } DirectorySearch;
87 struct
88 {
89 BURN_FILE_SEARCH_TYPE Type;
90 LPWSTR sczPath;
91 BOOL fDisableFileRedirection;
92 } FileSearch;
93 struct
94 {
95 BURN_REGISTRY_SEARCH_TYPE Type;
96 BURN_VARIANT_TYPE VariableType;
97 HKEY hRoot;
98 LPWSTR sczKey;
99 LPWSTR sczValue;
100 BOOL fWin64;
101 BOOL fExpandEnvironment;
102 } RegistrySearch;
103 struct
104 {
105 BURN_MSI_COMPONENT_SEARCH_TYPE Type;
106 LPWSTR sczProductCode;
107 LPWSTR sczComponentId;
108 } MsiComponentSearch;
109 struct
110 {
111 BURN_MSI_PRODUCT_SEARCH_TYPE Type;
112 BURN_MSI_PRODUCT_SEARCH_GUID_TYPE GuidType;
113 LPWSTR sczGuid;
114 } MsiProductSearch;
115 struct
116 {
117 BURN_EXTENSION* pExtension;
118 } ExtensionSearch;
119 struct
120 {
121 LPWSTR sczValue;
122 BURN_VARIANT_TYPE targetType;
123 } SetVariable;
124 };
125 } BURN_SEARCH;
126
127 typedef struct _BURN_SEARCHES
128 {
129 BURN_SEARCH* rgSearches;
130 DWORD cSearches;
131 } BURN_SEARCHES;
132
133
134 // function declarations
135
136 HRESULT SearchesParseFromXml(
137 __in BURN_SEARCHES* pSearches,
138 __in BURN_EXTENSIONS* pBurnExtensions,
139 __in IXMLDOMNode* pixnBundle
140 );
141 HRESULT SearchesExecute(
142 __in BURN_SEARCHES* pSearches,
143 __in BURN_VARIABLES* pVariables
144 );
145 void SearchesUninitialize(
146 __in BURN_SEARCHES* pSearches
147 );
148
149
150 #if defined(__cplusplus)
151 }
152 #endif