main
h 201 lines 5.64 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 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 typedef enum BAL_INFO_PACKAGE_TYPE
10 {
11 BAL_INFO_PACKAGE_TYPE_UNKNOWN,
12 BAL_INFO_PACKAGE_TYPE_EXE,
13 BAL_INFO_PACKAGE_TYPE_MSI,
14 BAL_INFO_PACKAGE_TYPE_MSP,
15 BAL_INFO_PACKAGE_TYPE_MSU,
16 BAL_INFO_PACKAGE_TYPE_BUNDLE_UPGRADE,
17 BAL_INFO_PACKAGE_TYPE_BUNDLE_ADDON,
18 BAL_INFO_PACKAGE_TYPE_BUNDLE_PATCH,
19 BAL_INFO_PACKAGE_TYPE_BUNDLE_UPDATE,
20 BAL_INFO_PACKAGE_TYPE_BUNDLE_CHAIN,
21 } BAL_INFO_PACKAGE_TYPE;
22
23 typedef enum _BAL_INFO_PRIMARY_PACKAGE_TYPE
24 {
25 BAL_INFO_PRIMARY_PACKAGE_TYPE_NONE,
26 BAL_INFO_PRIMARY_PACKAGE_TYPE_DEFAULT,
27 BAL_INFO_PRIMARY_PACKAGE_TYPE_X86,
28 BAL_INFO_PRIMARY_PACKAGE_TYPE_X64,
29 BAL_INFO_PRIMARY_PACKAGE_TYPE_ARM64,
30 } BAL_INFO_PRIMARY_PACKAGE_TYPE;
31
32 typedef enum _BAL_INFO_RESTART
33 {
34 BAL_INFO_RESTART_UNKNOWN,
35 BAL_INFO_RESTART_NEVER,
36 BAL_INFO_RESTART_PROMPT,
37 BAL_INFO_RESTART_AUTOMATIC,
38 BAL_INFO_RESTART_ALWAYS,
39 } BAL_INFO_RESTART;
40
41 typedef enum _BAL_INFO_VARIABLE_COMMAND_LINE_TYPE
42 {
43 BAL_INFO_VARIABLE_COMMAND_LINE_TYPE_CASE_SENSITIVE,
44 BAL_INFO_VARIABLE_COMMAND_LINE_TYPE_CASE_INSENSITIVE,
45 } BAL_INFO_VARIABLE_COMMAND_LINE_TYPE;
46
47
48 typedef struct _BAL_INFO_PACKAGE
49 {
50 LPWSTR sczId;
51 LPWSTR sczDisplayName;
52 LPWSTR sczDescription;
53 BAL_INFO_PACKAGE_TYPE type;
54 BOOL fPermanent;
55 BOOL fVital;
56 LPWSTR sczDisplayInternalUICondition;
57 LPWSTR sczProductCode;
58 LPWSTR sczUpgradeCode;
59 LPWSTR sczVersion;
60 LPWSTR sczInstallCondition;
61 LPWSTR sczRepairCondition;
62 BOOTSTRAPPER_CACHE_TYPE cacheType;
63 BOOL fPrereqPackage;
64 LPWSTR sczPrereqLicenseFile;
65 LPWSTR sczPrereqLicenseUrl;
66 BAL_INFO_PRIMARY_PACKAGE_TYPE primaryPackageType;
67 LPVOID pvCustomData;
68 } BAL_INFO_PACKAGE;
69
70
71 typedef struct _BAL_INFO_PACKAGES
72 {
73 BAL_INFO_PACKAGE* rgPackages;
74 DWORD cPackages;
75 } BAL_INFO_PACKAGES;
76
77
78 typedef struct _BAL_INFO_OVERRIDABLE_VARIABLE
79 {
80 LPWSTR sczName;
81 } BAL_INFO_OVERRIDABLE_VARIABLE;
82
83
84 typedef struct _BAL_INFO_OVERRIDABLE_VARIABLES
85 {
86 BAL_INFO_OVERRIDABLE_VARIABLE* rgVariables;
87 DWORD cVariables;
88 STRINGDICT_HANDLE sdVariables;
89 BAL_INFO_VARIABLE_COMMAND_LINE_TYPE commandLineType;
90 } BAL_INFO_OVERRIDABLE_VARIABLES;
91
92
93 typedef struct _BAL_INFO_BUNDLE
94 {
95 BOOL fPerMachine;
96 LPWSTR sczName;
97 LPWSTR sczLogVariable;
98 BAL_INFO_PACKAGES packages;
99 BAL_INFO_OVERRIDABLE_VARIABLES overridableVariables;
100 } BAL_INFO_BUNDLE;
101
102
103 typedef struct _BAL_INFO_COMMAND
104 {
105 DWORD cUnknownArgs;
106 LPWSTR* rgUnknownArgs;
107 DWORD cVariables;
108 LPWSTR* rgVariableNames;
109 LPWSTR* rgVariableValues;
110 BAL_INFO_RESTART restart;
111 } BAL_INFO_COMMAND;
112
113
114 /*******************************************************************
115 BalInfoParseCommandLine - parses wzCommandLine from BOOTSTRAPPER_COMMAND.
116
117 ********************************************************************/
118 DAPI_(HRESULT) BalInfoParseCommandLine(
119 __in BAL_INFO_COMMAND* pCommand,
120 __in const BOOTSTRAPPER_COMMAND* pBootstrapperCommand
121 );
122
123
124 /*******************************************************************
125 BalInfoParseFromXml - loads the bundle and package info from the UX
126 manifest.
127
128 ********************************************************************/
129 DAPI_(HRESULT) BalInfoParseFromXml(
130 __in BAL_INFO_BUNDLE* pBundle,
131 __in IXMLDOMDocument* pixdManifest
132 );
133
134
135 /*******************************************************************
136 BalInfoAddRelatedBundleAsPackage - adds a related bundle as a package.
137
138 ********************************************************************/
139 DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage(
140 __in BAL_INFO_PACKAGES* pPackages,
141 __in_z LPCWSTR wzId,
142 __in BOOTSTRAPPER_RELATION_TYPE relationType,
143 __in BOOL fPerMachine,
144 __out_opt BAL_INFO_PACKAGE** ppPackage
145 );
146
147
148 /*******************************************************************
149 BalInfoAddUpdateBundleAsPackage - adds an update bundle as a package.
150
151 ********************************************************************/
152 DAPI_(HRESULT) BalInfoAddUpdateBundleAsPackage(
153 __in BAL_INFO_PACKAGES* pPackages,
154 __in_z LPCWSTR wzId,
155 __out_opt BAL_INFO_PACKAGE** ppPackage
156 );
157
158
159 /*******************************************************************
160 BalInfoFindPackageById - finds a package by its id.
161
162 ********************************************************************/
163 DAPI_(HRESULT) BalInfoFindPackageById(
164 __in BAL_INFO_PACKAGES* pPackages,
165 __in LPCWSTR wzId,
166 __out BAL_INFO_PACKAGE** ppPackage
167 );
168
169
170 /*******************************************************************
171 BalInfoUninitialize - uninitializes any info previously loaded.
172
173 ********************************************************************/
174 DAPI_(void) BalInfoUninitialize(
175 __in BAL_INFO_BUNDLE* pBundle
176 );
177
178
179 /*******************************************************************
180 BalInfoUninitializeCommandLine - uninitializes BAL_INFO_COMMAND.
181
182 ********************************************************************/
183 DAPI_(void) BalInfoUninitializeCommandLine(
184 __in BAL_INFO_COMMAND* pCommand
185 );
186
187
188 /*******************************************************************
189 BalInfoSetOverridableVariablesFromEngine - sets overridable variables from command line.
190
191 ********************************************************************/
192 DAPI_(HRESULT) BalSetOverridableVariablesFromEngine(
193 __in BAL_INFO_OVERRIDABLE_VARIABLES* pOverridableVariables,
194 __in BAL_INFO_COMMAND* pCommand,
195 __in IBootstrapperEngine* pEngine
196 );
197
198
199 #ifdef __cplusplus
200 }
201 #endif