| 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 |