msi.h (3.1.4000.3959-Windows 5.0) | | msi.h (4.5.6002.18005-Windows 6.0) |
| | |
/*****************************************************************************\ | | /*****************************************************************************\ |
* * | | * * |
* msi.h - - Interface for external access to Installer Service * | | * msi.h - - Interface for external access to Installer Service * |
* * | | * * |
|
* Version 3.1 * | | * Version 4.0 * |
* * | | * * |
* NOTES: All buffers sizes are TCHAR count, null included only on input * | | * NOTES: All buffers sizes are TCHAR count, null included only on input * |
* Return argument pointers may be null if not interested in value * | | * Return argument pointers may be null if not interested in value * |
* * | | * * |
* Copyright (c) Microsoft Corporation. All rights reserved. * | | * Copyright (c) Microsoft Corporation. All rights reserved. * |
* * | | * * |
\*****************************************************************************/ | | \*****************************************************************************/ |
| | |
#ifndef _MSI_H_ | | #ifndef _MSI_H_ |
#define _MSI_H_ | | #define _MSI_H_ |
| | |
skipping to change at line 30 | | skipping to change at line 30 |
#endif | | #endif |
#ifndef NTDDI_WINXP | | #ifndef NTDDI_WINXP |
#define NTDDI_WINXP 0x05010000 | | #define NTDDI_WINXP 0x05010000 |
#endif | | #endif |
#ifndef NTDDI_WINXPSP2 | | #ifndef NTDDI_WINXPSP2 |
#define NTDDI_WINXPSP2 0x05010200 | | #define NTDDI_WINXPSP2 0x05010200 |
#endif | | #endif |
#ifndef NTDDI_WS03SP1 | | #ifndef NTDDI_WS03SP1 |
#define NTDDI_WS03SP1 0x05020100 | | #define NTDDI_WS03SP1 0x05020100 |
#endif | | #endif |
|
| | #ifndef NTDDI_LONGHORN |
| | #define NTDDI_LONGHORN 0x06000000 |
| | #endif |
| | |
#ifndef _WIN32_MSI | | #ifndef _WIN32_MSI |
#if (_WIN32_WINNT >= 0x0501 || (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI
_WINXP)) | | #if (_WIN32_WINNT >= 0x0501 || (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI
_WINXP)) |
|
#if (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WS03SP1) | | #if (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define _WIN32_MSI 400 |
| | #elif (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WS03SP1) |
#define _WIN32_MSI 310 | | #define _WIN32_MSI 310 |
#elif (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINXPSP2) | | #elif (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINXPSP2) |
#define _WIN32_MSI 300 | | #define _WIN32_MSI 300 |
#else | | #else |
#define _WIN32_MSI 200 | | #define _WIN32_MSI 200 |
#endif | | #endif |
#elif (_WIN32_WINNT >= 0x0500 || (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTD
DI_WIN2K)) | | #elif (_WIN32_WINNT >= 0x0500 || (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTD
DI_WIN2K)) |
#define _WIN32_MSI 110 | | #define _WIN32_MSI 110 |
#else | | #else |
#define _WIN32_MSI 100 | | #define _WIN32_MSI 100 |
#endif //_WIN32_WINNT | | #endif //_WIN32_WINNT |
#endif // !_WIN32_MSI | | #endif // !_WIN32_MSI |
| | |
|
| | #include "specstrings.h" |
| | #define MAX_GUID_CHARS 38 |
| | |
#if (_WIN32_MSI >= 150) | | #if (_WIN32_MSI >= 150) |
#ifndef _MSI_NO_CRYPTO | | #ifndef _MSI_NO_CRYPTO |
#include "wincrypt.h" | | #include "wincrypt.h" |
#endif // _MSI_NO_CRYPTO | | #endif // _MSI_NO_CRYPTO |
#endif //(_WIN32_MSI >= 150) | | #endif //(_WIN32_MSI >= 150) |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Installer generic handle definitions | | // Installer generic handle definitions |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
| | |
skipping to change at line 119 | | skipping to change at line 127 |
INSTALLMESSAGE_FILESINUSE = 0x05000000L, // list of files in use that
need to be replaced | | INSTALLMESSAGE_FILESINUSE = 0x05000000L, // list of files in use that
need to be replaced |
INSTALLMESSAGE_RESOLVESOURCE = 0x06000000L, // request to determine a va
lid source location | | INSTALLMESSAGE_RESOLVESOURCE = 0x06000000L, // request to determine a va
lid source location |
INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000L, // insufficient disk space m
essage | | INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000L, // insufficient disk space m
essage |
INSTALLMESSAGE_ACTIONSTART = 0x08000000L, // start of action: action n
ame & description | | INSTALLMESSAGE_ACTIONSTART = 0x08000000L, // start of action: action n
ame & description |
INSTALLMESSAGE_ACTIONDATA = 0x09000000L, // formatted data associated
with individual action item | | INSTALLMESSAGE_ACTIONDATA = 0x09000000L, // formatted data associated
with individual action item |
INSTALLMESSAGE_PROGRESS = 0x0A000000L, // progress gauge info: unit
s so far, total | | INSTALLMESSAGE_PROGRESS = 0x0A000000L, // progress gauge info: unit
s so far, total |
INSTALLMESSAGE_COMMONDATA = 0x0B000000L, // product info for dialog:
language Id, dialog caption | | INSTALLMESSAGE_COMMONDATA = 0x0B000000L, // product info for dialog:
language Id, dialog caption |
INSTALLMESSAGE_INITIALIZE = 0x0C000000L, // sent prior to UI initiali
zation, no string data | | INSTALLMESSAGE_INITIALIZE = 0x0C000000L, // sent prior to UI initiali
zation, no string data |
INSTALLMESSAGE_TERMINATE = 0x0D000000L, // sent after UI termination
, no string data | | INSTALLMESSAGE_TERMINATE = 0x0D000000L, // sent after UI termination
, no string data |
INSTALLMESSAGE_SHOWDIALOG = 0x0E000000L, // sent prior to display or
authored dialog or wizard | | INSTALLMESSAGE_SHOWDIALOG = 0x0E000000L, // sent prior to display or
authored dialog or wizard |
|
| | #if (_WIN32_MSI >= 400) |
| | INSTALLMESSAGE_RMFILESINUSE = 0x19000000L, // the list of apps that the |
| | user can request Restart Manager to shut down and restart |
| | #endif // (_WIN32_MSI >= 400) |
} INSTALLMESSAGE; | | } INSTALLMESSAGE; |
| | |
// external error handler supplied to installation API functions | | // external error handler supplied to installation API functions |
typedef int (WINAPI *INSTALLUI_HANDLERA)(LPVOID pvContext, UINT iMessageType, LP
CSTR szMessage); | | typedef int (WINAPI *INSTALLUI_HANDLERA)(LPVOID pvContext, UINT iMessageType, LP
CSTR szMessage); |
// external error handler supplied to installation API functions | | // external error handler supplied to installation API functions |
typedef int (WINAPI *INSTALLUI_HANDLERW)(LPVOID pvContext, UINT iMessageType, LP
CWSTR szMessage); | | typedef int (WINAPI *INSTALLUI_HANDLERW)(LPVOID pvContext, UINT iMessageType, LP
CWSTR szMessage); |
#ifdef UNICODE | | #ifdef UNICODE |
#define INSTALLUI_HANDLER INSTALLUI_HANDLERW | | #define INSTALLUI_HANDLER INSTALLUI_HANDLERW |
#else | | #else |
#define INSTALLUI_HANDLER INSTALLUI_HANDLERA | | #define INSTALLUI_HANDLER INSTALLUI_HANDLERA |
| | |
skipping to change at line 219 | | skipping to change at line 230 |
INSTALLLOGMODE_COMMONDATA = (1 << (INSTALLMESSAGE_COMMONDATA >> 2
4)), | | INSTALLLOGMODE_COMMONDATA = (1 << (INSTALLMESSAGE_COMMONDATA >> 2
4)), |
INSTALLLOGMODE_PROPERTYDUMP = (1 << (INSTALLMESSAGE_PROGRESS >> 2
4)), // log only | | INSTALLLOGMODE_PROPERTYDUMP = (1 << (INSTALLMESSAGE_PROGRESS >> 2
4)), // log only |
INSTALLLOGMODE_VERBOSE = (1 << (INSTALLMESSAGE_INITIALIZE >> 2
4)), // log only | | INSTALLLOGMODE_VERBOSE = (1 << (INSTALLMESSAGE_INITIALIZE >> 2
4)), // log only |
INSTALLLOGMODE_EXTRADEBUG = (1 << (INSTALLMESSAGE_TERMINATE >> 2
4)), // log only | | INSTALLLOGMODE_EXTRADEBUG = (1 << (INSTALLMESSAGE_TERMINATE >> 2
4)), // log only |
INSTALLLOGMODE_LOGONLYONERROR = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 2
4)), // log only | | INSTALLLOGMODE_LOGONLYONERROR = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 2
4)), // log only |
INSTALLLOGMODE_PROGRESS = (1 << (INSTALLMESSAGE_PROGRESS >> 2
4)), // external handler only | | INSTALLLOGMODE_PROGRESS = (1 << (INSTALLMESSAGE_PROGRESS >> 2
4)), // external handler only |
INSTALLLOGMODE_INITIALIZE = (1 << (INSTALLMESSAGE_INITIALIZE >> 2
4)), // external handler only | | INSTALLLOGMODE_INITIALIZE = (1 << (INSTALLMESSAGE_INITIALIZE >> 2
4)), // external handler only |
INSTALLLOGMODE_TERMINATE = (1 << (INSTALLMESSAGE_TERMINATE >> 2
4)), // external handler only | | INSTALLLOGMODE_TERMINATE = (1 << (INSTALLMESSAGE_TERMINATE >> 2
4)), // external handler only |
INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 2
4)), // external handler only | | INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 2
4)), // external handler only |
INSTALLLOGMODE_FILESINUSE = (1 << (INSTALLMESSAGE_FILESINUSE >> 2
4)), // external handler only | | INSTALLLOGMODE_FILESINUSE = (1 << (INSTALLMESSAGE_FILESINUSE >> 2
4)), // external handler only |
|
| | #if (_WIN32_MSI >= 400) |
| | INSTALLLOGMODE_RMFILESINUSE = (1 << (INSTALLMESSAGE_RMFILESINUSE >> 2 |
| | 4)), // external handler only |
| | #endif // (_WIN32_MSI >= 400) |
} INSTALLLOGMODE; | | } INSTALLLOGMODE; |
| | |
typedef enum tagINSTALLLOGATTRIBUTES // flag attributes for MsiEnableLog | | typedef enum tagINSTALLLOGATTRIBUTES // flag attributes for MsiEnableLog |
{ | | { |
INSTALLLOGATTRIBUTES_APPEND = (1 << 0), | | INSTALLLOGATTRIBUTES_APPEND = (1 << 0), |
INSTALLLOGATTRIBUTES_FLUSHEACHLINE = (1 << 1), | | INSTALLLOGATTRIBUTES_FLUSHEACHLINE = (1 << 1), |
} INSTALLLOGATTRIBUTES; | | } INSTALLLOGATTRIBUTES; |
| | |
typedef enum tagINSTALLFEATUREATTRIBUTE // bit flags | | typedef enum tagINSTALLFEATUREATTRIBUTE // bit flags |
{ | | { |
| | |
skipping to change at line 445 | | skipping to change at line 459 |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to set the UI handling and logging. The UI will be used for error, | | // Functions to set the UI handling and logging. The UI will be used for error, |
// progress, and log messages for all subsequent calls to Installer Service | | // progress, and log messages for all subsequent calls to Installer Service |
// API functions that require UI. | | // API functions that require UI. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Enable internal UI | | // Enable internal UI |
| | |
INSTALLUILEVEL WINAPI MsiSetInternalUI( | | INSTALLUILEVEL WINAPI MsiSetInternalUI( |
|
INSTALLUILEVEL dwUILevel, // UI level | | __in INSTALLUILEVEL dwUILevel, // UI level |
HWND *phWnd); // handle of owner window | | __inout_opt HWND *phWnd); // handle of owner window |
| | |
// Enable external UI handling, returns any previous handler or NULL if none. | | // Enable external UI handling, returns any previous handler or NULL if none. |
// Messages are designated with a combination of bits from INSTALLLOGMODE enum. | | // Messages are designated with a combination of bits from INSTALLLOGMODE enum. |
| | |
INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA( | | INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA( |
|
INSTALLUI_HANDLERA puiHandler, // for progress and error handling | | __in_opt INSTALLUI_HANDLERA puiHandler, // for progress and error handli |
DWORD dwMessageFilter, // bit flags designating messages to | | ng |
handle | | __in DWORD dwMessageFilter, // bit flags designating message |
LPVOID pvContext); // application context | | s to handle |
| | __in_opt LPVOID pvContext); // application context |
INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW( | | INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW( |
|
INSTALLUI_HANDLERW puiHandler, // for progress and error handling | | __in_opt INSTALLUI_HANDLERW puiHandler, // for progress and error handli |
DWORD dwMessageFilter, // bit flags designating messages to | | ng |
handle | | __in DWORD dwMessageFilter, // bit flags designating message |
LPVOID pvContext); // application context | | s to handle |
| | __in_opt LPVOID pvContext); // application context |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSetExternalUI MsiSetExternalUIW | | #define MsiSetExternalUI MsiSetExternalUIW |
#else | | #else |
#define MsiSetExternalUI MsiSetExternalUIA | | #define MsiSetExternalUI MsiSetExternalUIA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 310) | | #if (_WIN32_MSI >= 310) |
| | |
UINT WINAPI MsiSetExternalUIRecord( | | UINT WINAPI MsiSetExternalUIRecord( |
|
INSTALLUI_HANDLER_RECORD puiHandler, // for progress and error handling | | __in INSTALLUI_HANDLER_RECORD puiHandler, // for progress and |
DWORD dwMessageFilter, // bit flags designating messages to | | error handling |
handle | | __in DWORD dwMessageFilter, // bit flags design |
LPVOID pvContext, // application context | | ating messages to handle |
PINSTALLUI_HANDLER_RECORD ppuiPrevHandler); // pointer to the previously | | __in_opt LPVOID pvContext, // application cont |
set handler | | ext |
| | __out_opt PINSTALLUI_HANDLER_RECORD ppuiPrevHandler); // pointer to the p |
| | reviously set handler |
| | |
#endif // (_WIN32_MSI >= 310) | | #endif // (_WIN32_MSI >= 310) |
| | |
// Enable logging to a file for all install sessions for the client process, | | // Enable logging to a file for all install sessions for the client process, |
// with control over which log messages are passed to the specified log file. | | // with control over which log messages are passed to the specified log file. |
// Messages are designated with a combination of bits from INSTALLLOGMODE enum. | | // Messages are designated with a combination of bits from INSTALLLOGMODE enum. |
| | |
UINT WINAPI MsiEnableLogA( | | UINT WINAPI MsiEnableLogA( |
|
DWORD dwLogMode, // bit flags designating operations to rep | | __in DWORD dwLogMode, // bit flags designating operations t |
ort | | o report |
LPCSTR szLogFile, // log file, or NULL to disable logging | | __in_opt LPCSTR szLogFile, // log file, or NULL to disable logging |
DWORD dwLogAttributes); // INSTALLLOGATTRIBUTES flags | | __in DWORD dwLogAttributes); // INSTALLLOGATTRIBUTES flags |
UINT WINAPI MsiEnableLogW( | | UINT WINAPI MsiEnableLogW( |
|
DWORD dwLogMode, // bit flags designating operations to rep | | __in DWORD dwLogMode, // bit flags designating operations t |
ort | | o report |
LPCWSTR szLogFile, // log file, or NULL to disable logging | | __in_opt LPCWSTR szLogFile, // log file, or NULL to disable loggin |
DWORD dwLogAttributes); // INSTALLLOGATTRIBUTES flags | | g |
| | __in DWORD dwLogAttributes); // INSTALLLOGATTRIBUTES flags |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnableLog MsiEnableLogW | | #define MsiEnableLog MsiEnableLogW |
#else | | #else |
#define MsiEnableLog MsiEnableLogA | | #define MsiEnableLog MsiEnableLogA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to query and configure a product as a whole. | | // Functions to query and configure a product as a whole. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Return the installed state for a product | | // Return the installed state for a product |
| | |
INSTALLSTATE WINAPI MsiQueryProductStateA( | | INSTALLSTATE WINAPI MsiQueryProductStateA( |
|
LPCSTR szProduct); | | __in LPCSTR szProduct); |
INSTALLSTATE WINAPI MsiQueryProductStateW( | | INSTALLSTATE WINAPI MsiQueryProductStateW( |
|
LPCWSTR szProduct); | | __in LPCWSTR szProduct); |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiQueryProductState MsiQueryProductStateW | | #define MsiQueryProductState MsiQueryProductStateW |
#else | | #else |
#define MsiQueryProductState MsiQueryProductStateA | | #define MsiQueryProductState MsiQueryProductStateA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return product info | | // Return product info |
| | |
UINT WINAPI MsiGetProductInfoA( | | UINT WINAPI MsiGetProductInfoA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szAttribute, // attribute name, case-sensitive | | __in LPCSTR szAttribute, // attribute name, |
LPSTR lpValueBuf, // returned value, NULL if not desired | | case-sensitive |
DWORD *pcchValueBuf); // in/out buffer character count | | __out_ecount_opt(*pcchValueBuf) LPSTR lpValueBuf, // returned value, |
| | NULL if not desired |
| | __inout_opt LPDWORD pcchValueBuf); // in/out buffer |
| | character count |
UINT WINAPI MsiGetProductInfoW( | | UINT WINAPI MsiGetProductInfoW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szAttribute, // attribute name, case-sensitive | | __in LPCWSTR szAttribute, // attribute name, |
LPWSTR lpValueBuf, // returned value, NULL if not desired | | case-sensitive |
DWORD *pcchValueBuf); // in/out buffer character count | | __out_ecount_opt(*pcchValueBuf) LPWSTR lpValueBuf, // returned value, |
| | NULL if not desired |
| | __inout_opt LPDWORD pcchValueBuf); // in/out buffer |
| | character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetProductInfo MsiGetProductInfoW | | #define MsiGetProductInfo MsiGetProductInfoW |
#else | | #else |
#define MsiGetProductInfo MsiGetProductInfoA | | #define MsiGetProductInfo MsiGetProductInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 300) | | #if (_WIN32_MSI >= 300) |
// Retrieve product info for a particular product instance | | // Retrieve product info for a particular product instance |
| | |
UINT WINAPI MsiGetProductInfoExA( | | UINT WINAPI MsiGetProductInfoExA( |
|
LPCSTR szProductCode, // Information is queried on this produ | | __in LPCSTR szProductCode, // Information is que |
ct | | ried on this product |
LPCSTR szUserSid, // Account of this product instance | | __in_opt LPCSTR szUserSid, // Account of this pr |
MSIINSTALLCONTEXT dwContext,// Context of this product instance | | oduct instance |
LPCSTR szProperty, // Property being queried | | __in MSIINSTALLCONTEXT dwContext, // Context of this |
LPSTR szValue, // Value read | | product instance |
LPDWORD pcchValue); // size of the szValue buffer | | __in LPCSTR szProperty, // Property being que |
| | ried |
| | __out_ecount_opt(*pcchValue) LPSTR szValue, // Value read |
| | __inout_opt LPDWORD pcchValue); // size of the szVa |
| | lue buffer |
UINT WINAPI MsiGetProductInfoExW( | | UINT WINAPI MsiGetProductInfoExW( |
|
LPCWSTR szProductCode, // Information is queried on this prod | | __in LPCWSTR szProductCode, // Information is qu |
uct | | eried on this product |
LPCWSTR szUserSid, // Account of this product instance | | __in_opt LPCWSTR szUserSid, // Account of this p |
MSIINSTALLCONTEXT dwContext,// Context of this product instance | | roduct instance |
LPCWSTR szProperty, // Property being queried | | __in MSIINSTALLCONTEXT dwContext, // Context of this |
LPWSTR szValue, // Value read | | product instance |
LPDWORD pcchValue); // size of the szValue buffer | | __in LPCWSTR szProperty, // Property being qu |
| | eried |
| | __out_ecount_opt(*pcchValue) LPWSTR szValue, // Value read |
| | __inout_opt LPDWORD pcchValue); // size of the szVa |
| | lue buffer |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetProductInfoEx MsiGetProductInfoExW | | #define MsiGetProductInfoEx MsiGetProductInfoExW |
#else | | #else |
#define MsiGetProductInfoEx MsiGetProductInfoExA | | #define MsiGetProductInfoEx MsiGetProductInfoExA |
#endif // !UNICODE | | #endif // !UNICODE |
#endif //(_WIN32_MSI >= 300) | | #endif //(_WIN32_MSI >= 300) |
| | |
// Install a new product. | | // Install a new product. |
// Either may be NULL, but the DATABASE property must be specfied | | // Either may be NULL, but the DATABASE property must be specfied |
| | |
UINT WINAPI MsiInstallProductA( | | UINT WINAPI MsiInstallProductA( |
|
LPCSTR szPackagePath, // location of package to install | | __in LPCSTR szPackagePath, // location of package to install |
LPCSTR szCommandLine); // command line <property settings> | | __in_opt LPCSTR szCommandLine); // command line <property settings |
| | > |
UINT WINAPI MsiInstallProductW( | | UINT WINAPI MsiInstallProductW( |
|
LPCWSTR szPackagePath, // location of package to install | | __in LPCWSTR szPackagePath, // location of package to install |
LPCWSTR szCommandLine); // command line <property settings> | | __in_opt LPCWSTR szCommandLine); // command line <property setting |
| | s> |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiInstallProduct MsiInstallProductW | | #define MsiInstallProduct MsiInstallProductW |
#else | | #else |
#define MsiInstallProduct MsiInstallProductA | | #define MsiInstallProduct MsiInstallProductA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Install/uninstall an advertised or installed product | | // Install/uninstall an advertised or installed product |
// No action if installed and INSTALLSTATE_DEFAULT specified | | // No action if installed and INSTALLSTATE_DEFAULT specified |
| | |
UINT WINAPI MsiConfigureProductA( | | UINT WINAPI MsiConfigureProductA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
int iInstallLevel, // how much of the product to install | | __in int iInstallLevel, // how much of the product to install |
INSTALLSTATE eInstallState); // local/source/default/absent/lock/uncach | | __in INSTALLSTATE eInstallState); // local/source/default/absent/lock/u |
e | | ncache |
UINT WINAPI MsiConfigureProductW( | | UINT WINAPI MsiConfigureProductW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
int iInstallLevel, // how much of the product to install | | __in int iInstallLevel, // how much of the product to install |
INSTALLSTATE eInstallState); // local/source/default/absent/lock/uncach | | __in INSTALLSTATE eInstallState); // local/source/default/absent/lock/u |
e | | ncache |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiConfigureProduct MsiConfigureProductW | | #define MsiConfigureProduct MsiConfigureProductW |
#else | | #else |
#define MsiConfigureProduct MsiConfigureProductA | | #define MsiConfigureProduct MsiConfigureProductA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Install/uninstall an advertised or installed product | | // Install/uninstall an advertised or installed product |
// No action if installed and INSTALLSTATE_DEFAULT specified | | // No action if installed and INSTALLSTATE_DEFAULT specified |
| | |
UINT WINAPI MsiConfigureProductExA( | | UINT WINAPI MsiConfigureProductExA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
int iInstallLevel, // how much of the product to install | | __in int iInstallLevel, // how much of the product to in |
INSTALLSTATE eInstallState, // local/source/default/absent/lock/uncach | | stall |
e | | __in INSTALLSTATE eInstallState, // local/source/default/absent/l |
LPCSTR szCommandLine); // command line <property settings> | | ock/uncache |
| | __in_opt LPCSTR szCommandLine); // command line <property settings |
| | > |
UINT WINAPI MsiConfigureProductExW( | | UINT WINAPI MsiConfigureProductExW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
int iInstallLevel, // how much of the product to install | | __in int iInstallLevel, // how much of the product to in |
INSTALLSTATE eInstallState, // local/source/default/absent/lock/uncach | | stall |
e | | __in INSTALLSTATE eInstallState, // local/source/default/absent/l |
LPCWSTR szCommandLine); // command line <property settings> | | ock/uncache |
| | __in_opt LPCWSTR szCommandLine); // command line <property setting |
| | s> |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiConfigureProductEx MsiConfigureProductExW | | #define MsiConfigureProductEx MsiConfigureProductExW |
#else | | #else |
#define MsiConfigureProductEx MsiConfigureProductExA | | #define MsiConfigureProductEx MsiConfigureProductExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Reinstall product, used to validate or correct problems | | // Reinstall product, used to validate or correct problems |
| | |
UINT WINAPI MsiReinstallProductA( | | UINT WINAPI MsiReinstallProductA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
DWORD szReinstallMode); // one or more REINSTALLMODE modes | | __in DWORD szReinstallMode); // one or more REINSTALLMODE modes |
UINT WINAPI MsiReinstallProductW( | | UINT WINAPI MsiReinstallProductW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
DWORD szReinstallMode); // one or more REINSTALLMODE modes | | __in DWORD szReinstallMode); // one or more REINSTALLMODE modes |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiReinstallProduct MsiReinstallProductW | | #define MsiReinstallProduct MsiReinstallProductW |
#else | | #else |
#define MsiReinstallProduct MsiReinstallProductA | | #define MsiReinstallProduct MsiReinstallProductA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 150) | | #if (_WIN32_MSI >= 150) |
| | |
// Output reg and shortcut info to script file for specified architecture for As
sign or Publish | | // Output reg and shortcut info to script file for specified architecture for As
sign or Publish |
// If dwPlatform is 0, then the script is created based on the current platform
(behavior of MsiAdvertiseProduct) | | // If dwPlatform is 0, then the script is created based on the current platform
(behavior of MsiAdvertiseProduct) |
// If dwPlatform specifies a platform, then the script is created as if the curr
ent platform is the | | // If dwPlatform specifies a platform, then the script is created as if the curr
ent platform is the |
// platform specified in dwPlatform | | // platform specified in dwPlatform |
// If dwOptions includes MSIADVERTISEOPTIONFLAGS_INSTANCE, then a new instance i
s advertised. Use of | | // If dwOptions includes MSIADVERTISEOPTIONFLAGS_INSTANCE, then a new instance i
s advertised. Use of |
// this option requires that szTransforms include the instance transform that
changes the product code | | // this option requires that szTransforms include the instance transform that
changes the product code |
| | |
UINT WINAPI MsiAdvertiseProductExA( | | UINT WINAPI MsiAdvertiseProductExA( |
|
LPCSTR szPackagePath, // location of package | | __in LPCSTR szPackagePath, // location of package |
LPCSTR szScriptfilePath, // if NULL, product is locally advertised | | __in_opt LPCSTR szScriptfilePath, // if NULL, product is locally adv |
LPCSTR szTransforms, // list of transforms to be applied | | ertised |
LANGID lgidLanguage, // install language | | __in_opt LPCSTR szTransforms, // list of transforms to be applie |
DWORD dwPlatform, // the MSIARCHITECTUREFLAGS that control | | d |
for which platform | | __in LANGID lgidLanguage, // install language |
| | __in DWORD dwPlatform, // the MSIARCHITECTUREFLAGS that con |
| | trol for which platform |
// to create the script, ignored if szS
criptfilePath is NULL | | // to create the script, ignored if szS
criptfilePath is NULL |
|
DWORD dwOptions); // the MSIADVERTISEOPTIONFLAGS that speci
fy extra advertise parameters | | __in DWORD dwOptions); // the MSIADVERTISEOPTIONFLAGS that
specify extra advertise parameters |
UINT WINAPI MsiAdvertiseProductExW( | | UINT WINAPI MsiAdvertiseProductExW( |
|
LPCWSTR szPackagePath, // location of package | | __in LPCWSTR szPackagePath, // location of package |
LPCWSTR szScriptfilePath, // if NULL, product is locally advertised | | __in_opt LPCWSTR szScriptfilePath, // if NULL, product is locally ad |
LPCWSTR szTransforms, // list of transforms to be applied | | vertised |
LANGID lgidLanguage, // install language | | __in_opt LPCWSTR szTransforms, // list of transforms to be appli |
DWORD dwPlatform, // the MSIARCHITECTUREFLAGS that control | | ed |
for which platform | | __in LANGID lgidLanguage, // install language |
| | __in DWORD dwPlatform, // the MSIARCHITECTUREFLAGS that con |
| | trol for which platform |
// to create the script, ignored if szS
criptfilePath is NULL | | // to create the script, ignored if szS
criptfilePath is NULL |
|
DWORD dwOptions); // the MSIADVERTISEOPTIONFLAGS that speci
fy extra advertise parameters | | __in DWORD dwOptions); // the MSIADVERTISEOPTIONFLAGS that
specify extra advertise parameters |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiAdvertiseProductEx MsiAdvertiseProductExW | | #define MsiAdvertiseProductEx MsiAdvertiseProductExW |
#else | | #else |
#define MsiAdvertiseProductEx MsiAdvertiseProductExA | | #define MsiAdvertiseProductEx MsiAdvertiseProductExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif // (_WIN32_MSI >= 150) | | #endif // (_WIN32_MSI >= 150) |
| | |
// Output reg and shortcut info to script file for Assign or Publish | | // Output reg and shortcut info to script file for Assign or Publish |
| | |
UINT WINAPI MsiAdvertiseProductA( | | UINT WINAPI MsiAdvertiseProductA( |
|
LPCSTR szPackagePath, // location of package | | __in LPCSTR szPackagePath, // location of package |
LPCSTR szScriptfilePath, // if NULL, product is locally advertised | | __in_opt LPCSTR szScriptfilePath, // if NULL, product is locally ad |
LPCSTR szTransforms, // list of transforms to be applied | | vertised |
LANGID lgidLanguage); // install language | | __in_opt LPCSTR szTransforms, // list of transforms to be appli |
| | ed |
| | __in LANGID lgidLanguage); // install language |
UINT WINAPI MsiAdvertiseProductW( | | UINT WINAPI MsiAdvertiseProductW( |
|
LPCWSTR szPackagePath, // location of package | | __in LPCWSTR szPackagePath, // location of package |
LPCWSTR szScriptfilePath, // if NULL, product is locally advertised | | __in_opt LPCWSTR szScriptfilePath, // if NULL, product is locally a |
LPCWSTR szTransforms, // list of transforms to be applied | | dvertised |
LANGID lgidLanguage); // install language | | __in_opt LPCWSTR szTransforms, // list of transforms to be appl |
| | ied |
| | __in LANGID lgidLanguage); // install language |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiAdvertiseProduct MsiAdvertiseProductW | | #define MsiAdvertiseProduct MsiAdvertiseProductW |
#else | | #else |
#define MsiAdvertiseProduct MsiAdvertiseProductA | | #define MsiAdvertiseProduct MsiAdvertiseProductA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 150) | | #if (_WIN32_MSI >= 150) |
| | |
// Process advertise script file into supplied locations | | // Process advertise script file into supplied locations |
// If an icon folder is specified, icon files will be placed there | | // If an icon folder is specified, icon files will be placed there |
// If an registry key is specified, registry data will be mapped under it | | // If an registry key is specified, registry data will be mapped under it |
// If fShortcuts is TRUE, shortcuts will be created. If a special folder is | | // If fShortcuts is TRUE, shortcuts will be created. If a special folder is |
// returned by SHGetSpecialFolderLocation(?), it will hold the shortcuts. | | // returned by SHGetSpecialFolderLocation(?), it will hold the shortcuts. |
// if fRemoveItems is TRUE, items that are present will be removed | | // if fRemoveItems is TRUE, items that are present will be removed |
| | |
UINT WINAPI MsiProcessAdvertiseScriptA( | | UINT WINAPI MsiProcessAdvertiseScriptA( |
|
LPCSTR szScriptFile, // path to script from MsiAdvertiseProduct | | __in LPCSTR szScriptFile, // path to script from MsiAdvertiseProduc |
LPCSTR szIconFolder, // optional path to folder for icon files and | | t |
transforms | | __in_opt LPCSTR szIconFolder, // optional path to folder for icon f |
HKEY hRegData, // optional parent registry key | | iles and transforms |
BOOL fShortcuts, // TRUE if shortcuts output to special folder | | __in_opt HKEY hRegData, // optional parent registry key |
BOOL fRemoveItems); // TRUE if specified items are to be removed | | __in BOOL fShortcuts, // TRUE if shortcuts output to special f |
| | older |
| | __in BOOL fRemoveItems); // TRUE if specified items are to be rem |
| | oved |
UINT WINAPI MsiProcessAdvertiseScriptW( | | UINT WINAPI MsiProcessAdvertiseScriptW( |
|
LPCWSTR szScriptFile, // path to script from MsiAdvertiseProduct | | __in LPCWSTR szScriptFile, // path to script from MsiAdvertiseProdu |
LPCWSTR szIconFolder, // optional path to folder for icon files and | | ct |
transforms | | __in_opt LPCWSTR szIconFolder, // optional path to folder for icon |
HKEY hRegData, // optional parent registry key | | files and transforms |
BOOL fShortcuts, // TRUE if shortcuts output to special folder | | __in_opt HKEY hRegData, // optional parent registry key |
BOOL fRemoveItems); // TRUE if specified items are to be removed | | __in BOOL fShortcuts, // TRUE if shortcuts output to special f |
| | older |
| | __in BOOL fRemoveItems); // TRUE if specified items are to be rem |
| | oved |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptW | | #define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptW |
#else | | #else |
#define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptA | | #define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif // (_WIN32_MSI >= 150) | | #endif // (_WIN32_MSI >= 150) |
| | |
// Process advertise script file using the supplied dwFlags control flags | | // Process advertise script file using the supplied dwFlags control flags |
// if fRemoveItems is TRUE, items that are present will be removed | | // if fRemoveItems is TRUE, items that are present will be removed |
| | |
UINT WINAPI MsiAdvertiseScriptA( | | UINT WINAPI MsiAdvertiseScriptA( |
|
LPCSTR szScriptFile, // path to script from MsiAdvertiseProduct | | __in LPCSTR szScriptFile, // path to script from MsiAdvertiseProduc |
DWORD dwFlags, // the SCRIPTFLAGS bit flags that control th | | t |
e script execution | | __in DWORD dwFlags, // the SCRIPTFLAGS bit flags that contr |
PHKEY phRegData, // optional parent registry key | | ol the script execution |
BOOL fRemoveItems); // TRUE if specified items are to be removed | | __in_opt PHKEY phRegData, // optional parent registry key |
| | __in BOOL fRemoveItems); // TRUE if specified items are to be re |
| | moved |
UINT WINAPI MsiAdvertiseScriptW( | | UINT WINAPI MsiAdvertiseScriptW( |
|
LPCWSTR szScriptFile, // path to script from MsiAdvertiseProduct | | __in LPCWSTR szScriptFile, // path to script from MsiAdvertiseProdu |
DWORD dwFlags, // the SCRIPTFLAGS bit flags that control th | | ct |
e script execution | | __in DWORD dwFlags, // the SCRIPTFLAGS bit flags that contr |
PHKEY phRegData, // optional parent registry key | | ol the script execution |
BOOL fRemoveItems); // TRUE if specified items are to be removed | | __in_opt PHKEY phRegData, // optional parent registry key |
| | __in BOOL fRemoveItems); // TRUE if specified items are to be re |
| | moved |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiAdvertiseScript MsiAdvertiseScriptW | | #define MsiAdvertiseScript MsiAdvertiseScriptW |
#else | | #else |
#define MsiAdvertiseScript MsiAdvertiseScriptA | | #define MsiAdvertiseScript MsiAdvertiseScriptA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return product info from an installer script file: | | // Return product info from an installer script file: |
// product code, language, version, readable name, path to package | | // product code, language, version, readable name, path to package |
// Returns TRUE is success, FALSE if szScriptFile is not a valid script file | | // Returns TRUE is success, FALSE if szScriptFile is not a valid script file |
| | |
UINT WINAPI MsiGetProductInfoFromScriptA( | | UINT WINAPI MsiGetProductInfoFromScriptA( |
|
LPCSTR szScriptFile, // path to installer script file | | __in LPCSTR szScriptFile, // path to in |
LPSTR lpProductBuf39, // buffer for product code string GUID, 39 chars | | staller script file |
LANGID *plgidLanguage, // return language Id | | __out_ecount_opt(MAX_GUID_CHARS+1) LPSTR lpProductBuf39, // buffer for |
DWORD *pdwVersion, // return version: Maj:Min:Build <8:8:16> | | product code string GUID, 39 chars |
LPSTR lpNameBuf, // buffer to return readable product name | | __out_opt LANGID *plgidLanguage, // return la |
DWORD *pcchNameBuf, // in/out name buffer character count | | nguage Id |
LPSTR lpPackageBuf, // buffer for path to product package | | __out_opt LPDWORD pdwVersion, // return ve |
DWORD *pcchPackageBuf);// in/out path buffer character count | | rsion: Maj:Min:Build <8:8:16> |
| | __out_ecount_opt(*pcchNameBuf) LPSTR lpNameBuf, // buffer to |
| | return readable product name |
| | __inout_opt LPDWORD pcchNameBuf, // in/out na |
| | me buffer character count |
| | __out_ecount_opt(*pcchPackageBuf) LPSTR lpPackageBuf, // buffer for |
| | path to product package |
| | __inout_opt LPDWORD pcchPackageBuf);// in/out pa |
| | th buffer character count |
UINT WINAPI MsiGetProductInfoFromScriptW( | | UINT WINAPI MsiGetProductInfoFromScriptW( |
|
LPCWSTR szScriptFile, // path to installer script file | | __in LPCWSTR szScriptFile, // path to i |
LPWSTR lpProductBuf39, // buffer for product code string GUID, 39 char | | nstaller script file |
s | | __out_ecount_opt(MAX_GUID_CHARS+1) LPWSTR lpProductBuf39, // buffer fo |
LANGID *plgidLanguage, // return language Id | | r product code string GUID, 39 chars |
DWORD *pdwVersion, // return version: Maj:Min:Build <8:8:16> | | __out_opt LANGID *plgidLanguage, // return la |
LPWSTR lpNameBuf, // buffer to return readable product name | | nguage Id |
DWORD *pcchNameBuf, // in/out name buffer character count | | __out_opt LPDWORD pdwVersion, // return ve |
LPWSTR lpPackageBuf, // buffer for path to product package | | rsion: Maj:Min:Build <8:8:16> |
DWORD *pcchPackageBuf);// in/out path buffer character count | | __out_ecount_opt(*pcchNameBuf) LPWSTR lpNameBuf, // buffer to |
| | return readable product name |
| | __inout_opt LPDWORD pcchNameBuf, // in/out na |
| | me buffer character count |
| | __out_ecount_opt(*pcchPackageBuf) LPWSTR lpPackageBuf, // buffer for |
| | path to product package |
| | __inout_opt LPDWORD pcchPackageBuf);// in/out pa |
| | th buffer character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptW | | #define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptW |
#else | | #else |
#define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptA | | #define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return the product code for a registered component, called once by apps | | // Return the product code for a registered component, called once by apps |
| | |
UINT WINAPI MsiGetProductCodeA( | | UINT WINAPI MsiGetProductCodeA( |
|
LPCSTR szComponent, // component Id registered for this product | | __in LPCSTR szComponent, // component Id registered for this product |
LPSTR lpBuf39); // returned string GUID, sized for 39 characters | | __out_ecount(MAX_GUID_CHARS+1) LPSTR lpBuf39); // returned string GUID, |
| | sized for 39 characters |
UINT WINAPI MsiGetProductCodeW( | | UINT WINAPI MsiGetProductCodeW( |
|
LPCWSTR szComponent, // component Id registered for this product | | __in LPCWSTR szComponent, // component Id registered for this product |
LPWSTR lpBuf39); // returned string GUID, sized for 39 characters | | __out_ecount(MAX_GUID_CHARS+1) LPWSTR lpBuf39); // returned string GUID |
| | , sized for 39 characters |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetProductCode MsiGetProductCodeW | | #define MsiGetProductCode MsiGetProductCodeW |
#else | | #else |
#define MsiGetProductCode MsiGetProductCodeA | | #define MsiGetProductCode MsiGetProductCodeA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return the registered user information for an installed product | | // Return the registered user information for an installed product |
| | |
USERINFOSTATE WINAPI MsiGetUserInfoA( | | USERINFOSTATE WINAPI MsiGetUserInfoA( |
|
LPCSTR szProduct, // product code, string GUID | | __in LPCSTR szProduct, // product c |
LPSTR lpUserNameBuf, // return user name | | ode, string GUID |
DWORD *pcchUserNameBuf, // in/out buffer character count | | __out_ecount_opt(*pcchUserNameBuf) LPSTR lpUserNameBuf, // return us |
LPSTR lpOrgNameBuf, // return company name | | er name |
DWORD *pcchOrgNameBuf, // in/out buffer character count | | __inout_opt LPDWORD pcchUserNameBuf, // in/out b |
LPSTR lpSerialBuf, // return product serial number | | uffer character count |
DWORD *pcchSerialBuf); // in/out buffer character count | | __out_ecount_opt(*pcchOrgNameBuf) LPSTR lpOrgNameBuf, // return co |
| | mpany name |
| | __inout_opt LPDWORD pcchOrgNameBuf, // in/out b |
| | uffer character count |
| | __out_ecount_opt(*pcchSerialBuf) LPSTR lpSerialBuf, // return pr |
| | oduct serial number |
| | __inout_opt LPDWORD pcchSerialBuf); // in/out b |
| | uffer character count |
USERINFOSTATE WINAPI MsiGetUserInfoW( | | USERINFOSTATE WINAPI MsiGetUserInfoW( |
|
LPCWSTR szProduct, // product code, string GUID | | __in LPCWSTR szProduct, // product |
LPWSTR lpUserNameBuf, // return user name | | code, string GUID |
DWORD *pcchUserNameBuf, // in/out buffer character count | | __out_ecount_opt(*pcchUserNameBuf) LPWSTR lpUserNameBuf, // return u |
LPWSTR lpOrgNameBuf, // return company name | | ser name |
DWORD *pcchOrgNameBuf, // in/out buffer character count | | __inout_opt LPDWORD pcchUserNameBuf, // in/out b |
LPWSTR lpSerialBuf, // return product serial number | | uffer character count |
DWORD *pcchSerialBuf); // in/out buffer character count | | __out_ecount_opt(*pcchOrgNameBuf) LPWSTR lpOrgNameBuf, // return c |
| | ompany name |
| | __inout_opt LPDWORD pcchOrgNameBuf, // in/out b |
| | uffer character count |
| | __out_ecount_opt(*pcchSerialBuf) LPWSTR lpSerialBuf, // return p |
| | roduct serial number |
| | __inout_opt LPDWORD pcchSerialBuf); // in/out b |
| | uffer character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetUserInfo MsiGetUserInfoW | | #define MsiGetUserInfo MsiGetUserInfoW |
#else | | #else |
#define MsiGetUserInfo MsiGetUserInfoA | | #define MsiGetUserInfo MsiGetUserInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Obtain and store user info and PID from installation wizard (first run) | | // Obtain and store user info and PID from installation wizard (first run) |
| | |
UINT WINAPI MsiCollectUserInfoA( | | UINT WINAPI MsiCollectUserInfoA( |
|
LPCSTR szProduct); // product code, string GUID | | __in LPCSTR szProduct); // product code, string GUID |
UINT WINAPI MsiCollectUserInfoW( | | UINT WINAPI MsiCollectUserInfoW( |
|
LPCWSTR szProduct); // product code, string GUID | | __in LPCWSTR szProduct); // product code, string GUID |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiCollectUserInfo MsiCollectUserInfoW | | #define MsiCollectUserInfo MsiCollectUserInfoW |
#else | | #else |
#define MsiCollectUserInfo MsiCollectUserInfoA | | #define MsiCollectUserInfo MsiCollectUserInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to query, apply, and remove patches to a product. | | // Functions to query, apply, and remove patches to a product. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Patch all possible installed products. | | // Patch all possible installed products. |
| | |
UINT WINAPI MsiApplyPatchA( | | UINT WINAPI MsiApplyPatchA( |
|
LPCSTR szPatchPackage, // location of patch package | | __in LPCSTR szPatchPackage, // location of patch package |
LPCSTR szInstallPackage, // location of package for install to patch | | __in_opt LPCSTR szInstallPackage, // location of package for install to p |
<optional> | | atch <optional> |
INSTALLTYPE eInstallType, // type of install to patch | | __in INSTALLTYPE eInstallType, // type of install to patch |
LPCSTR szCommandLine); // command line <property settings> | | __in_opt LPCSTR szCommandLine); // command line <property settings> |
UINT WINAPI MsiApplyPatchW( | | UINT WINAPI MsiApplyPatchW( |
|
LPCWSTR szPatchPackage, // location of patch package | | __in LPCWSTR szPatchPackage, // location of patch package |
LPCWSTR szInstallPackage, // location of package for install to patc | | __in_opt LPCWSTR szInstallPackage, // location of package for install to |
h <optional> | | patch <optional> |
INSTALLTYPE eInstallType, // type of install to patch | | __in INSTALLTYPE eInstallType, // type of install to patch |
LPCWSTR szCommandLine); // command line <property settings> | | __in_opt LPCWSTR szCommandLine); // command line <property settings> |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiApplyPatch MsiApplyPatchW | | #define MsiApplyPatch MsiApplyPatchW |
#else | | #else |
#define MsiApplyPatch MsiApplyPatchA | | #define MsiApplyPatch MsiApplyPatchA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return patch info for first visible patch | | // Return patch info for first visible patch |
| | |
UINT WINAPI MsiGetPatchInfoA( | | UINT WINAPI MsiGetPatchInfoA( |
|
LPCSTR szPatch, // patch code | | __in LPCSTR szPatch, // patch code |
LPCSTR szAttribute, // attribute name, case-sensitive | | __in LPCSTR szAttribute, // attribute name, case |
LPSTR lpValueBuf, // returned value, NULL if not desired | | -sensitive |
DWORD *pcchValueBuf); // in/out buffer character count | | __out_ecount_opt(*pcchValueBuf) LPSTR lpValueBuf, // returned value, NULL |
| | if not desired |
| | __inout_opt LPDWORD pcchValueBuf); // in/out buffer char |
| | acter count |
UINT WINAPI MsiGetPatchInfoW( | | UINT WINAPI MsiGetPatchInfoW( |
|
LPCWSTR szPatch, // patch code | | __in LPCWSTR szPatch, // patch code |
LPCWSTR szAttribute, // attribute name, case-sensitive | | __in LPCWSTR szAttribute, // attribute name, cas |
LPWSTR lpValueBuf, // returned value, NULL if not desired | | e-sensitive |
DWORD *pcchValueBuf); // in/out buffer character count | | __out_ecount_opt(*pcchValueBuf) LPWSTR lpValueBuf, // returned value, NUL |
| | L if not desired |
| | __inout_opt LPDWORD pcchValueBuf); // in/out buffer char |
| | acter count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetPatchInfo MsiGetPatchInfoW | | #define MsiGetPatchInfo MsiGetPatchInfoW |
#else | | #else |
#define MsiGetPatchInfo MsiGetPatchInfoA | | #define MsiGetPatchInfo MsiGetPatchInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Enumerate all patches for a product in contexts visible to caller | | // Enumerate all patches for a product in contexts visible to caller |
| | |
UINT WINAPI MsiEnumPatchesA( | | UINT WINAPI MsiEnumPatchesA( |
|
LPCSTR szProduct, | | __in LPCSTR szProduct, |
DWORD iPatchIndex, | | __in DWORD iPatchIndex, |
LPSTR lpPatchBuf, | | __out_ecount(MAX_GUID_CHARS+1) LPSTR lpPatchBuf, |
LPSTR lpTransformsBuf, | | __out_ecount(*pcchTransformsBuf) LPSTR lpTransformsBuf, |
DWORD *pcchTransformsBuf); | | __inout LPDWORD pcchTransformsBuf); |
UINT WINAPI MsiEnumPatchesW( | | UINT WINAPI MsiEnumPatchesW( |
|
LPCWSTR szProduct, | | __in LPCWSTR szProduct, |
DWORD iPatchIndex, | | __in DWORD iPatchIndex, |
LPWSTR lpPatchBuf, | | __out_ecount(MAX_GUID_CHARS+1) LPWSTR lpPatchBuf, |
LPWSTR lpTransformsBuf, | | __out_ecount(*pcchTransformsBuf) LPWSTR lpTransformsBuf, |
DWORD *pcchTransformsBuf); | | __inout LPDWORD pcchTransformsBuf); |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumPatches MsiEnumPatchesW | | #define MsiEnumPatches MsiEnumPatchesW |
#else | | #else |
#define MsiEnumPatches MsiEnumPatchesA | | #define MsiEnumPatches MsiEnumPatchesA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 300) | | #if (_WIN32_MSI >= 300) |
// Remove one or more patches from the specified product. | | // Remove one or more patches from the specified product. |
| | |
UINT WINAPI MsiRemovePatchesA( | | UINT WINAPI MsiRemovePatchesA( |
|
LPCSTR szPatchList, // semi-colon delimited list of patches | | __in LPCSTR szPatchList, // semi-colon delimited list of patches |
to remove; patch can be referenced by patch package path or Patch GUID | | to remove; patch can be referenced by patch package path or Patch GUID |
LPCSTR szProductCode, // ProductCode GUID of product with patc | | __in LPCSTR szProductCode, // ProductCode GUID of product with patc |
h to remove | | h to remove |
INSTALLTYPE eUninstallType, // type of patch uninstall to perform. | | __in INSTALLTYPE eUninstallType, // type of patch uninstall to perform. |
Must be INSTALLTYPE_SINGLE_INSTANCE. | | Must be INSTALLTYPE_SINGLE_INSTANCE. |
LPCSTR szPropertyList); // command line property settings using | | __in_opt LPCSTR szPropertyList); // command line property settings using |
PROPERTY=VALUE pairs | | PROPERTY=VALUE pairs |
UINT WINAPI MsiRemovePatchesW( | | UINT WINAPI MsiRemovePatchesW( |
|
LPCWSTR szPatchList, // semi-colon delimited list of patches | | __in LPCWSTR szPatchList, // semi-colon delimited list of patches |
to remove; patch can be referenced by patch package path or Patch GUID | | to remove; patch can be referenced by patch package path or Patch GUID |
LPCWSTR szProductCode, // ProductCode GUID of product with pat | | __in LPCWSTR szProductCode, // ProductCode GUID of product with pat |
ch to remove | | ch to remove |
INSTALLTYPE eUninstallType, // type of patch uninstall to perform. | | __in INSTALLTYPE eUninstallType, // type of patch uninstall to perform. |
Must be INSTALLTYPE_SINGLE_INSTANCE. | | Must be INSTALLTYPE_SINGLE_INSTANCE. |
LPCWSTR szPropertyList); // command line property settings using | | __in_opt LPCWSTR szPropertyList); // command line property settings using |
PROPERTY=VALUE pairs | | PROPERTY=VALUE pairs |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiRemovePatches MsiRemovePatchesW | | #define MsiRemovePatches MsiRemovePatchesW |
#else | | #else |
#define MsiRemovePatches MsiRemovePatchesA | | #define MsiRemovePatches MsiRemovePatchesA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Extract XML data from the patch | | // Extract XML data from the patch |
| | |
UINT WINAPI MsiExtractPatchXMLDataA( | | UINT WINAPI MsiExtractPatchXMLDataA( |
|
LPCSTR szPatchPath, // Patch file to open | | __in LPCSTR szPatchPath, // Patch file to open |
DWORD dwReserved, // Reserved | | __reserved DWORD dwReserved, // Reserved |
LPSTR szXMLData, // Buffer that gets the XML data | | __out_ecount_opt(*pcchXMLData) LPSTR szXMLData, // Buffer that gets the |
DWORD *pcchXMLData); // in/out XML data buffer character count | | XML data |
| | __inout_opt LPDWORD pcchXMLData); // in/out XML data buf |
| | fer character count |
UINT WINAPI MsiExtractPatchXMLDataW( | | UINT WINAPI MsiExtractPatchXMLDataW( |
|
LPCWSTR szPatchPath, // Patch file to open | | __in LPCWSTR szPatchPath, // Patch file to open |
DWORD dwReserved, // Reserved | | __reserved DWORD dwReserved, // Reserved |
LPWSTR szXMLData, // Buffer that gets the XML data | | __out_ecount_opt(*pcchXMLData) LPWSTR szXMLData, // Buffer that gets the |
DWORD *pcchXMLData); // in/out XML data buffer character count | | XML data |
| | __inout_opt LPDWORD pcchXMLData); // in/out XML data buf |
| | fer character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiExtractPatchXMLData MsiExtractPatchXMLDataW | | #define MsiExtractPatchXMLData MsiExtractPatchXMLDataW |
#else | | #else |
#define MsiExtractPatchXMLData MsiExtractPatchXMLDataA | | #define MsiExtractPatchXMLData MsiExtractPatchXMLDataA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Retrieve extended patch info for a particular patch applied | | // Retrieve extended patch info for a particular patch applied |
// to a particular product instance. | | // to a particular product instance. |
| | |
UINT WINAPI MsiGetPatchInfoExA( | | UINT WINAPI MsiGetPatchInfoExA( |
|
LPCSTR szPatchCode, // target patch to query | | __in LPCSTR szPatchCode, // target patch to query |
LPCSTR szProductCode, // target product of patch application | | __in LPCSTR szProductCode, // target product of patch a |
LPCSTR szUserSid, // Account of this product instance | | pplication |
MSIINSTALLCONTEXT dwContext, // context to query for product and patch | | __in_opt LPCSTR szUserSid, // Account of this product i |
LPCSTR szProperty, // property of patch to retrieve | | nstance |
LPSTR lpValue, // address buffer for data | | __in MSIINSTALLCONTEXT dwContext, // context to query for pr |
DWORD *pcchValue); // in/out value buffer character count | | oduct and patch |
| | __in LPCSTR szProperty, // property of patch to retr |
| | ieve |
| | __out_ecount_opt(*pcchValue) LPSTR lpValue, // address buffer for data |
| | __inout_opt LPDWORD pcchValue); // in/out value buffer cha |
| | racter count |
UINT WINAPI MsiGetPatchInfoExW( | | UINT WINAPI MsiGetPatchInfoExW( |
|
LPCWSTR szPatchCode, // target patch to query | | __in LPCWSTR szPatchCode, // target patch to query |
LPCWSTR szProductCode, // target product of patch application | | __in LPCWSTR szProductCode, // target product of patch |
LPCWSTR szUserSid, // Account of this product instance | | application |
MSIINSTALLCONTEXT dwContext, // context to query for product and patch | | __in_opt LPCWSTR szUserSid, // Account of this product |
LPCWSTR szProperty, // property of patch to retrieve | | instance |
LPWSTR lpValue, // address buffer for data | | __in MSIINSTALLCONTEXT dwContext, // context to query for pr |
DWORD *pcchValue); // in/out value buffer character count | | oduct and patch |
| | __in LPCWSTR szProperty, // property of patch to ret |
| | rieve |
| | __out_ecount_opt(*pcchValue) LPWSTR lpValue, // address buffer for data |
| | __inout_opt LPDWORD pcchValue); // in/out value buffer cha |
| | racter count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetPatchInfoEx MsiGetPatchInfoExW | | #define MsiGetPatchInfoEx MsiGetPatchInfoExW |
#else | | #else |
#define MsiGetPatchInfoEx MsiGetPatchInfoExA | | #define MsiGetPatchInfoEx MsiGetPatchInfoExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Apply multiple patches to the specified product or to all eligible products | | // Apply multiple patches to the specified product or to all eligible products |
// on the machine | | // on the machine |
| | |
UINT WINAPI MsiApplyMultiplePatchesA( | | UINT WINAPI MsiApplyMultiplePatchesA( |
|
LPCSTR szPatchPackages, // Patches to apply | | __in LPCSTR szPatchPackages, // Patches to apply |
LPCSTR szProductCode, // target product of patch application | | __in_opt LPCSTR szProductCode, // target product of patch applicatio |
LPCSTR szPropertiesList); // Properties settings | | n |
| | __in_opt LPCSTR szPropertiesList); // Properties settings |
UINT WINAPI MsiApplyMultiplePatchesW( | | UINT WINAPI MsiApplyMultiplePatchesW( |
|
LPCWSTR szPatchPackages, // Patches to apply | | __in LPCWSTR szPatchPackages, // Patches to apply |
LPCWSTR szProductCode, // target product of patch application | | __in_opt LPCWSTR szProductCode, // target product of patch applicati |
LPCWSTR szPropertiesList); // Properties settings | | on |
| | __in_opt LPCWSTR szPropertiesList); // Properties settings |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiApplyMultiplePatches MsiApplyMultiplePatchesW | | #define MsiApplyMultiplePatches MsiApplyMultiplePatchesW |
#else | | #else |
#define MsiApplyMultiplePatches MsiApplyMultiplePatchesA | | #define MsiApplyMultiplePatches MsiApplyMultiplePatchesA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Determines which patches apply and in what sequence for the provided set of | | // Determines which patches apply and in what sequence for the provided set of |
// patch files, XML files, and/or XML blobs. Patches already applied to the prod
uct | | // patch files, XML files, and/or XML blobs. Patches already applied to the prod
uct |
// are taken into account | | // are taken into account |
| | |
UINT WINAPI MsiDeterminePatchSequenceA( | | UINT WINAPI MsiDeterminePatchSequenceA( |
|
LPCSTR szProductCode, // Product code GUID of an installed pr | | __in LPCSTR szProductCode, // Product c |
oduct | | ode GUID of an installed product |
LPCSTR szUserSid, // User account we're interested in | | __in_opt LPCSTR szUserSid, // User acco |
MSIINSTALLCONTEXT dwContext, // Installation context we're interes | | unt we're interested in |
ted in | | __in MSIINSTALLCONTEXT dwContext, // Install |
DWORD cPatchInfo, // Number of patches in the array | | ation context we're interested in |
PMSIPATCHSEQUENCEINFOA pPatchInfo); // Array of patch sequence informatio | | __in DWORD cPatchInfo, // Number |
n data | | of patches in the array |
| | __inout_ecount(cPatchInfo) PMSIPATCHSEQUENCEINFOA pPatchInfo); // Array o |
| | f patch sequence information data |
UINT WINAPI MsiDeterminePatchSequenceW( | | UINT WINAPI MsiDeterminePatchSequenceW( |
|
LPCWSTR szProductCode, // Product code GUID of an installed p | | __in LPCWSTR szProductCode, // Product |
roduct | | code GUID of an installed product |
LPCWSTR szUserSid, // User account we're interested in | | __in_opt LPCWSTR szUserSid, // User acc |
MSIINSTALLCONTEXT dwContext, // Installation context we're interes | | ount we're interested in |
ted in | | __in MSIINSTALLCONTEXT dwContext, // Install |
DWORD cPatchInfo, // Number of patches in the array | | ation context we're interested in |
PMSIPATCHSEQUENCEINFOW pPatchInfo); // Array of patch sequence informatio | | __in DWORD cPatchInfo, // Number |
n data | | of patches in the array |
| | __inout_ecount(cPatchInfo) PMSIPATCHSEQUENCEINFOW pPatchInfo); // Array o |
| | f patch sequence information data |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiDeterminePatchSequence MsiDeterminePatchSequenceW | | #define MsiDeterminePatchSequence MsiDeterminePatchSequenceW |
#else | | #else |
#define MsiDeterminePatchSequence MsiDeterminePatchSequenceA | | #define MsiDeterminePatchSequence MsiDeterminePatchSequenceA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Determines which patches apply and what sequence for the provided set of patc
h files, | | // Determines which patches apply and what sequence for the provided set of patc
h files, |
// XML files, and/or XML blobs. Does not take into account either products or pa
tches | | // XML files, and/or XML blobs. Does not take into account either products or pa
tches |
// already installed on the machine. | | // already installed on the machine. |
| | |
UINT WINAPI MsiDetermineApplicablePatchesA( | | UINT WINAPI MsiDetermineApplicablePatchesA( |
|
LPCSTR szProductPackagePath, // Fully qualified path to a product MS | | __in LPCSTR szProductPackagePath, // Fully qua |
I database | | lified path to a product MSI database |
DWORD cPatchInfo, // Number of patches in the array | | __in DWORD cPatchInfo, // Number |
PMSIPATCHSEQUENCEINFOA pPatchInfo); // Array of patch sequence informatio | | of patches in the array |
n data | | __inout_ecount(cPatchInfo) PMSIPATCHSEQUENCEINFOA pPatchInfo); // Array o |
| | f patch sequence information data |
UINT WINAPI MsiDetermineApplicablePatchesW( | | UINT WINAPI MsiDetermineApplicablePatchesW( |
|
LPCWSTR szProductPackagePath, // Fully qualified path to a product M | | __in LPCWSTR szProductPackagePath, // Fully qu |
SI database | | alified path to a product MSI database |
DWORD cPatchInfo, // Number of patches in the array | | __in DWORD cPatchInfo, // Number |
PMSIPATCHSEQUENCEINFOW pPatchInfo); // Array of patch sequence informatio | | of patches in the array |
n data | | __inout_ecount(cPatchInfo) PMSIPATCHSEQUENCEINFOW pPatchInfo); // Array o |
| | f patch sequence information data |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesW | | #define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesW |
#else | | #else |
#define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesA | | #define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Enumerates all patches applied for a single product or all products based upo
n | | // Enumerates all patches applied for a single product or all products based upo
n |
// enumeration context and filter. | | // enumeration context and filter. |
| | |
UINT WINAPI MsiEnumPatchesExA( | | UINT WINAPI MsiEnumPatchesExA( |
|
LPCSTR szProductCode, // Enumerate patches on instances of this prod | | __in_opt LPCSTR szProductCode, // Enume |
uct | | rate patches on instances of this product |
LPCSTR szUserSid, // Account for enumeration | | __in_opt LPCSTR szUserSid, // Accou |
DWORD dwContext, // Contexts for enumeration | | nt for enumeration |
DWORD dwFilter, // Filter for enumeration | | __in DWORD dwContext, // Con |
DWORD dwIndex, // Index for enumeration | | texts for enumeration |
CHAR szPatchCode[39], // Enumerated patch code | | __in DWORD dwFilter, // Fil |
CHAR szTargetProductCode[39], // Enumerated patch's product code | | ter for enumeration |
MSIINSTALLCONTEXT *pdwTargetProductContext, //Enumerated patch's contex | | __in DWORD dwIndex, // Ind |
t | | ex for enumeration |
LPSTR szTargetUserSid, // Enumerated patch's user account | | __out_ecount_opt(MAX_GUID_CHARS+1) CHAR szPatchCode[39], // Enume |
LPDWORD pcchTargetUserSid); // in/out character count of szTargetUserSid | | rated patch code |
| | __out_ecount_opt(MAX_GUID_CHARS+1) CHAR szTargetProductCode[39], // Enume |
| | rated patch's product code |
| | __out_opt MSIINSTALLCONTEXT *pdwTargetProductContext, //Enum |
| | erated patch's context |
| | __out_ecount_opt(*pcchTargetUserSid) LPSTR szTargetUserSid, // Enume |
| | rated patch's user account |
| | __inout_opt LPDWORD pcchTargetUserSid); // in/ |
| | out character count of szTargetUserSid |
UINT WINAPI MsiEnumPatchesExW( | | UINT WINAPI MsiEnumPatchesExW( |
|
LPCWSTR szProductCode, // Enumerate patches on instances of this pro | | __in_opt LPCWSTR szProductCode, // Enum |
duct | | erate patches on instances of this product |
LPCWSTR szUserSid, // Account for enumeration | | __in_opt LPCWSTR szUserSid, // Acco |
DWORD dwContext, // Contexts for enumeration | | unt for enumeration |
DWORD dwFilter, // Filter for enumeration | | __in DWORD dwContext, // Con |
DWORD dwIndex, // Index for enumeration | | texts for enumeration |
WCHAR szPatchCode[39], // Enumerated patch code | | __in DWORD dwFilter, // Fil |
WCHAR szTargetProductCode[39], // Enumerated patch's product code | | ter for enumeration |
MSIINSTALLCONTEXT *pdwTargetProductContext, //Enumerated patch's contex | | __in DWORD dwIndex, // Ind |
t | | ex for enumeration |
LPWSTR szTargetUserSid, // Enumerated patch's user account | | __out_ecount_opt(MAX_GUID_CHARS+1) WCHAR szPatchCode[39], // Enum |
LPDWORD pcchTargetUserSid); // in/out character count of szTargetUserSid | | erated patch code |
| | __out_ecount_opt(MAX_GUID_CHARS+1) WCHAR szTargetProductCode[39], // Enum |
| | erated patch's product code |
| | __out_opt MSIINSTALLCONTEXT *pdwTargetProductContext, //Enum |
| | erated patch's context |
| | __out_ecount_opt(*pcchTargetUserSid) LPWSTR szTargetUserSid, // Enum |
| | erated patch's user account |
| | __inout_opt LPDWORD pcchTargetUserSid); // in/ |
| | out character count of szTargetUserSid |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumPatchesEx MsiEnumPatchesExW | | #define MsiEnumPatchesEx MsiEnumPatchesExW |
#else | | #else |
#define MsiEnumPatchesEx MsiEnumPatchesExA | | #define MsiEnumPatchesEx MsiEnumPatchesExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 300) | | #endif //(_WIN32_MSI >= 300) |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to query and configure a feature within a product. | | // Functions to query and configure a feature within a product. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Return the installed state for a product feature | | // Return the installed state for a product feature |
| | |
INSTALLSTATE WINAPI MsiQueryFeatureStateA( | | INSTALLSTATE WINAPI MsiQueryFeatureStateA( |
|
LPCSTR szProduct, | | __in LPCSTR szProduct, |
LPCSTR szFeature); | | __in LPCSTR szFeature); |
INSTALLSTATE WINAPI MsiQueryFeatureStateW( | | INSTALLSTATE WINAPI MsiQueryFeatureStateW( |
|
LPCWSTR szProduct, | | __in LPCWSTR szProduct, |
LPCWSTR szFeature); | | __in LPCWSTR szFeature); |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiQueryFeatureState MsiQueryFeatureStateW | | #define MsiQueryFeatureState MsiQueryFeatureStateW |
#else | | #else |
#define MsiQueryFeatureState MsiQueryFeatureStateA | | #define MsiQueryFeatureState MsiQueryFeatureStateA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 300) | | #if (_WIN32_MSI >= 300) |
// Retrieve the installed state for a product feature in a particular product in
stance | | // Retrieve the installed state for a product feature in a particular product in
stance |
| | |
UINT WINAPI MsiQueryFeatureStateExA( | | UINT WINAPI MsiQueryFeatureStateExA( |
|
LPCSTR szProductCode, // Information is queried on this produ | | __in LPCSTR szProductCode, // Information is queried on th |
ct | | is product |
LPCSTR szUserSid, // Account of this product instance | | __in_opt LPCSTR szUserSid, // Account of this product inst |
MSIINSTALLCONTEXT dwContext,// Context of this product instance | | ance |
LPCSTR szFeature, // Name of the feature being queried | | __in MSIINSTALLCONTEXT dwContext, // Context of this product in |
INSTALLSTATE *pdwState); // State value | | stance |
| | __in LPCSTR szFeature, // Name of the feature being qu |
| | eried |
| | __out_opt INSTALLSTATE *pdwState); // State value |
UINT WINAPI MsiQueryFeatureStateExW( | | UINT WINAPI MsiQueryFeatureStateExW( |
|
LPCWSTR szProductCode, // Information is queried on this prod | | __in LPCWSTR szProductCode, // Information is queried on t |
uct | | his product |
LPCWSTR szUserSid, // Account of this product instance | | __in_opt LPCWSTR szUserSid, // Account of this product ins |
MSIINSTALLCONTEXT dwContext,// Context of this product instance | | tance |
LPCWSTR szFeature, // Name of the feature being queried | | __in MSIINSTALLCONTEXT dwContext, // Context of this product in |
INSTALLSTATE *pdwState); // State value | | stance |
| | __in LPCWSTR szFeature, // Name of the feature being q |
| | ueried |
| | __out_opt INSTALLSTATE *pdwState); // State value |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiQueryFeatureStateEx MsiQueryFeatureStateExW | | #define MsiQueryFeatureStateEx MsiQueryFeatureStateExW |
#else | | #else |
#define MsiQueryFeatureStateEx MsiQueryFeatureStateExA | | #define MsiQueryFeatureStateEx MsiQueryFeatureStateExA |
#endif // !UNICODE | | #endif // !UNICODE |
#endif //(_WIN32_MSI >= 300) | | #endif //(_WIN32_MSI >= 300) |
| | |
// Indicate intent to use a product feature, increments usage count | | // Indicate intent to use a product feature, increments usage count |
// Prompts for CD if not loaded, does not install feature | | // Prompts for CD if not loaded, does not install feature |
| | |
INSTALLSTATE WINAPI MsiUseFeatureA( | | INSTALLSTATE WINAPI MsiUseFeatureA( |
|
LPCSTR szProduct, | | __in LPCSTR szProduct, |
LPCSTR szFeature); | | __in LPCSTR szFeature); |
INSTALLSTATE WINAPI MsiUseFeatureW( | | INSTALLSTATE WINAPI MsiUseFeatureW( |
|
LPCWSTR szProduct, | | __in LPCWSTR szProduct, |
LPCWSTR szFeature); | | __in LPCWSTR szFeature); |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiUseFeature MsiUseFeatureW | | #define MsiUseFeature MsiUseFeatureW |
#else | | #else |
#define MsiUseFeature MsiUseFeatureA | | #define MsiUseFeature MsiUseFeatureA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Indicate intent to use a product feature, increments usage count | | // Indicate intent to use a product feature, increments usage count |
// Prompts for CD if not loaded, does not install feature | | // Prompts for CD if not loaded, does not install feature |
// Allows for bypassing component detection where performance is critical | | // Allows for bypassing component detection where performance is critical |
| | |
INSTALLSTATE WINAPI MsiUseFeatureExA( | | INSTALLSTATE WINAPI MsiUseFeatureExA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szFeature, // feature ID | | __in LPCSTR szFeature, // feature ID |
DWORD dwInstallMode, // INSTALLMODE_NODETECTION, else 0 | | __in DWORD dwInstallMode, // INSTALLMODE_NODETECTION, else 0 |
DWORD dwReserved); // reserved, must be 0 | | __reserved DWORD dwReserved); // reserved, must be 0 |
INSTALLSTATE WINAPI MsiUseFeatureExW( | | INSTALLSTATE WINAPI MsiUseFeatureExW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szFeature, // feature ID | | __in LPCWSTR szFeature, // feature ID |
DWORD dwInstallMode, // INSTALLMODE_NODETECTION, else 0 | | __in DWORD dwInstallMode, // INSTALLMODE_NODETECTION, else 0 |
DWORD dwReserved); // reserved, must be 0 | | __reserved DWORD dwReserved); // reserved, must be 0 |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiUseFeatureEx MsiUseFeatureExW | | #define MsiUseFeatureEx MsiUseFeatureExW |
#else | | #else |
#define MsiUseFeatureEx MsiUseFeatureExA | | #define MsiUseFeatureEx MsiUseFeatureExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return the usage metrics for a product feature | | // Return the usage metrics for a product feature |
| | |
UINT WINAPI MsiGetFeatureUsageA( | | UINT WINAPI MsiGetFeatureUsageA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szFeature, // feature ID | | __in LPCSTR szFeature, // feature ID |
DWORD *pdwUseCount, // returned use count | | __out_opt LPDWORD pdwUseCount, // returned use count |
WORD *pwDateUsed); // last date used (DOS date format) | | __out_opt LPWORD pwDateUsed); // last date used (DOS date form |
| | at) |
UINT WINAPI MsiGetFeatureUsageW( | | UINT WINAPI MsiGetFeatureUsageW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szFeature, // feature ID | | __in LPCWSTR szFeature, // feature ID |
DWORD *pdwUseCount, // returned use count | | __out_opt LPDWORD pdwUseCount, // returned use count |
WORD *pwDateUsed); // last date used (DOS date format) | | __out_opt LPWORD pwDateUsed); // last date used (DOS date form |
| | at) |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetFeatureUsage MsiGetFeatureUsageW | | #define MsiGetFeatureUsage MsiGetFeatureUsageW |
#else | | #else |
#define MsiGetFeatureUsage MsiGetFeatureUsageA | | #define MsiGetFeatureUsage MsiGetFeatureUsageA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Force the installed state for a product feature | | // Force the installed state for a product feature |
| | |
UINT WINAPI MsiConfigureFeatureA( | | UINT WINAPI MsiConfigureFeatureA( |
|
LPCSTR szProduct, | | __in LPCSTR szProduct, |
LPCSTR szFeature, | | __in LPCSTR szFeature, |
INSTALLSTATE eInstallState); // local/source/default/absent/lock/uncach | | __in INSTALLSTATE eInstallState); // local/source/default/absent/lock/u |
e | | ncache |
UINT WINAPI MsiConfigureFeatureW( | | UINT WINAPI MsiConfigureFeatureW( |
|
LPCWSTR szProduct, | | __in LPCWSTR szProduct, |
LPCWSTR szFeature, | | __in LPCWSTR szFeature, |
INSTALLSTATE eInstallState); // local/source/default/absent/lock/uncach | | __in INSTALLSTATE eInstallState); // local/source/default/absent/lock/u |
e | | ncache |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiConfigureFeature MsiConfigureFeatureW | | #define MsiConfigureFeature MsiConfigureFeatureW |
#else | | #else |
#define MsiConfigureFeature MsiConfigureFeatureA | | #define MsiConfigureFeature MsiConfigureFeatureA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Reinstall feature, used to validate or correct problems | | // Reinstall feature, used to validate or correct problems |
| | |
UINT WINAPI MsiReinstallFeatureA( | | UINT WINAPI MsiReinstallFeatureA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szFeature, // feature ID, NULL for entire product | | __in LPCSTR szFeature, // feature ID, NULL for entire product |
DWORD dwReinstallMode); // one or more REINSTALLMODE modes | | __in DWORD dwReinstallMode); // one or more REINSTALLMODE modes |
UINT WINAPI MsiReinstallFeatureW( | | UINT WINAPI MsiReinstallFeatureW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szFeature, // feature ID, NULL for entire product | | __in LPCWSTR szFeature, // feature ID, NULL for entire produc |
DWORD dwReinstallMode); // one or more REINSTALLMODE modes | | t |
| | __in DWORD dwReinstallMode); // one or more REINSTALLMODE modes |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiReinstallFeature MsiReinstallFeatureW | | #define MsiReinstallFeature MsiReinstallFeatureW |
#else | | #else |
#define MsiReinstallFeature MsiReinstallFeatureA | | #define MsiReinstallFeature MsiReinstallFeatureA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to query a component. For functions that return a path to | | // Functions to query a component. For functions that return a path to |
// a particular component, the state of the feature being used should | | // a particular component, the state of the feature being used should |
// have been checked previously. | | // have been checked previously. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Return full component path, performing any necessary installation | | // Return full component path, performing any necessary installation |
// calls MsiQueryFeatureState to detect that all components are installed | | // calls MsiQueryFeatureState to detect that all components are installed |
// then calls MsiConfigureFeature if any of its components are uninstalled | | // then calls MsiConfigureFeature if any of its components are uninstalled |
// then calls MsiLocateComponent to obtain the path the its key file | | // then calls MsiLocateComponent to obtain the path the its key file |
| | |
UINT WINAPI MsiProvideComponentA( | | UINT WINAPI MsiProvideComponentA( |
|
LPCSTR szProduct, // product code in case install required | | __in LPCSTR szProduct, // product code |
LPCSTR szFeature, // feature ID in case install required | | in case install required |
LPCSTR szComponent, // component ID | | __in LPCSTR szFeature, // feature ID in |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | case install required |
of the REINSTALLMODE flags | | __in LPCSTR szComponent, // component ID |
LPSTR lpPathBuf, // returned path, NULL if not desired | | __in DWORD dwInstallMode, // either of t |
DWORD *pcchPathBuf);// in/out buffer character count | | ype INSTALLMODE or a combination of the REINSTALLMODE flags |
| | __out_ecount_opt(*pcchPathBuf) LPSTR lpPathBuf, // returned path |
| | , NULL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buff |
| | er character count |
UINT WINAPI MsiProvideComponentW( | | UINT WINAPI MsiProvideComponentW( |
|
LPCWSTR szProduct, // product code in case install required | | __in LPCWSTR szProduct, // product code |
LPCWSTR szFeature, // feature ID in case install required | | in case install required |
LPCWSTR szComponent, // component ID | | __in LPCWSTR szFeature, // feature ID i |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | n case install required |
of the REINSTALLMODE flags | | __in LPCWSTR szComponent, // component ID |
LPWSTR lpPathBuf, // returned path, NULL if not desired | | __in DWORD dwInstallMode, // either of t |
DWORD *pcchPathBuf);// in/out buffer character count | | ype INSTALLMODE or a combination of the REINSTALLMODE flags |
| | __out_ecount_opt(*pcchPathBuf) LPWSTR lpPathBuf, // returned pat |
| | h, NULL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buff |
| | er character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiProvideComponent MsiProvideComponentW | | #define MsiProvideComponent MsiProvideComponentW |
#else | | #else |
#define MsiProvideComponent MsiProvideComponentA | | #define MsiProvideComponent MsiProvideComponentA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return full component path for a qualified component, performing any necessar
y installation. | | // Return full component path for a qualified component, performing any necessar
y installation. |
// Prompts for source if necessary and increments the usage count for the featur
e. | | // Prompts for source if necessary and increments the usage count for the featur
e. |
| | |
UINT WINAPI MsiProvideQualifiedComponentA( | | UINT WINAPI MsiProvideQualifiedComponentA( |
|
LPCSTR szCategory, // component category ID | | __in LPCSTR szCategory, // component catego |
LPCSTR szQualifier, // specifies which component to access | | ry ID |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | __in LPCSTR szQualifier, // specifies which |
of the REINSTALLMODE flags | | component to access |
LPSTR lpPathBuf, // returned path, NULL if not desired | | __in DWORD dwInstallMode, // either of type |
DWORD *pcchPathBuf); // in/out buffer character count | | INSTALLMODE or a combination of the REINSTALLMODE flags |
| | __out_ecount_opt(*pcchPathBuf) LPSTR lpPathBuf, // returned path, N |
| | ULL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buffer |
| | character count |
UINT WINAPI MsiProvideQualifiedComponentW( | | UINT WINAPI MsiProvideQualifiedComponentW( |
|
LPCWSTR szCategory, // component category ID | | __in LPCWSTR szCategory, // component categ |
LPCWSTR szQualifier, // specifies which component to access | | ory ID |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | __in LPCWSTR szQualifier, // specifies which |
of the REINSTALLMODE flags | | component to access |
LPWSTR lpPathBuf, // returned path, NULL if not desired | | __in DWORD dwInstallMode, // either of type |
DWORD *pcchPathBuf); // in/out buffer character count | | INSTALLMODE or a combination of the REINSTALLMODE flags |
| | __out_ecount_opt(*pcchPathBuf) LPWSTR lpPathBuf, // returned path, |
| | NULL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buffer |
| | character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiProvideQualifiedComponent MsiProvideQualifiedComponentW | | #define MsiProvideQualifiedComponent MsiProvideQualifiedComponentW |
#else | | #else |
#define MsiProvideQualifiedComponent MsiProvideQualifiedComponentA | | #define MsiProvideQualifiedComponent MsiProvideQualifiedComponentA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return full component path for a qualified component, performing any necessar
y installation. | | // Return full component path for a qualified component, performing any necessar
y installation. |
// Prompts for source if necessary and increments the usage count for the featur
e. | | // Prompts for source if necessary and increments the usage count for the featur
e. |
// The szProduct parameter specifies the product to match that has published the
qualified | | // The szProduct parameter specifies the product to match that has published the
qualified |
// component. If null, this API works the same as MsiProvideQualifiedComponent. | | // component. If null, this API works the same as MsiProvideQualifiedComponent. |
| | |
UINT WINAPI MsiProvideQualifiedComponentExA( | | UINT WINAPI MsiProvideQualifiedComponentExA( |
|
LPCSTR szCategory, // component category ID | | __in LPCSTR szCategory, // component catego |
LPCSTR szQualifier, // specifies which component to access | | ry ID |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | __in LPCSTR szQualifier, // specifies which |
of the REINSTALLMODE flags | | component to access |
LPCSTR szProduct, // the product code | | __in DWORD dwInstallMode, // either of type |
DWORD dwUnused1, // not used, must be zero | | INSTALLMODE or a combination of the REINSTALLMODE flags |
DWORD dwUnused2, // not used, must be zero | | __in_opt LPCSTR szProduct, // the product code |
LPSTR lpPathBuf, // returned path, NULL if not desired | | __reserved DWORD dwUnused1, // not used, must |
DWORD *pcchPathBuf); // in/out buffer character count | | be zero |
| | __reserved DWORD dwUnused2, // not used, must |
| | be zero |
| | __out_ecount_opt(*pcchPathBuf) LPSTR lpPathBuf, // returned path, N |
| | ULL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buffer |
| | character count |
UINT WINAPI MsiProvideQualifiedComponentExW( | | UINT WINAPI MsiProvideQualifiedComponentExW( |
|
LPCWSTR szCategory, // component category ID | | __in LPCWSTR szCategory, // component categ |
LPCWSTR szQualifier, // specifies which component to access | | ory ID |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | __in LPCWSTR szQualifier, // specifies which |
of the REINSTALLMODE flags | | component to access |
LPCWSTR szProduct, // the product code | | __in DWORD dwInstallMode, // either of type |
DWORD dwUnused1, // not used, must be zero | | INSTALLMODE or a combination of the REINSTALLMODE flags |
DWORD dwUnused2, // not used, must be zero | | __in_opt LPCWSTR szProduct, // the product cod |
LPWSTR lpPathBuf, // returned path, NULL if not desired | | e |
DWORD *pcchPathBuf); // in/out buffer character count | | __reserved DWORD dwUnused1, // not used, must |
| | be zero |
| | __reserved DWORD dwUnused2, // not used, must |
| | be zero |
| | __out_ecount_opt(*pcchPathBuf) LPWSTR lpPathBuf, // returned path, |
| | NULL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buffer |
| | character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExW | | #define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExW |
#else | | #else |
#define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExA | | #define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return full path to an installed component | | // Return full path to an installed component |
| | |
INSTALLSTATE WINAPI MsiGetComponentPathA( | | INSTALLSTATE WINAPI MsiGetComponentPathA( |
|
LPCSTR szProduct, // product code for client product | | __in LPCSTR szProduct, // product code for clien |
LPCSTR szComponent, // component Id, string GUID | | t product |
LPSTR lpPathBuf, // returned path | | __in LPCSTR szComponent, // component Id, string G |
DWORD *pcchBuf); // in/out buffer character count | | UID |
| | __out_ecount_opt(*pcchBuf) LPSTR lpPathBuf, // returned path |
| | __inout_opt LPDWORD pcchBuf); // in/out buffer charac |
| | ter count |
INSTALLSTATE WINAPI MsiGetComponentPathW( | | INSTALLSTATE WINAPI MsiGetComponentPathW( |
|
LPCWSTR szProduct, // product code for client product | | __in LPCWSTR szProduct, // product code for clie |
LPCWSTR szComponent, // component Id, string GUID | | nt product |
LPWSTR lpPathBuf, // returned path | | __in LPCWSTR szComponent, // component Id, string |
DWORD *pcchBuf); // in/out buffer character count | | GUID |
| | __out_ecount_opt(*pcchBuf) LPWSTR lpPathBuf, // returned path |
| | __inout_opt LPDWORD pcchBuf); // in/out buffer charac |
| | ter count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetComponentPath MsiGetComponentPathW | | #define MsiGetComponentPath MsiGetComponentPathW |
#else | | #else |
#define MsiGetComponentPath MsiGetComponentPathA | | #define MsiGetComponentPath MsiGetComponentPathA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 150) | | #if (_WIN32_MSI >= 150) |
| | |
#define MSIASSEMBLYINFO_NETASSEMBLY 0 // Net assemblies | | #define MSIASSEMBLYINFO_NETASSEMBLY 0 // Net assemblies |
#define MSIASSEMBLYINFO_WIN32ASSEMBLY 1 // Win32 assemblies | | #define MSIASSEMBLYINFO_WIN32ASSEMBLY 1 // Win32 assemblies |
| | |
// Return full component path for an assembly installed via the WI, performing a
ny necessary installation. | | // Return full component path for an assembly installed via the WI, performing a
ny necessary installation. |
// Prompts for source if necessary and increments the usage count for the featur
e. | | // Prompts for source if necessary and increments the usage count for the featur
e. |
// The szAssemblyName parameter specifies the stringized assembly name. | | // The szAssemblyName parameter specifies the stringized assembly name. |
// The szAppContext is the full path to the .cfg file or the app exe to which th
e assembly being requested | | // The szAppContext is the full path to the .cfg file or the app exe to which th
e assembly being requested |
// has been privatised to, which is null for global assemblies | | // has been privatised to, which is null for global assemblies |
| | |
UINT WINAPI MsiProvideAssemblyA( | | UINT WINAPI MsiProvideAssemblyA( |
|
LPCSTR szAssemblyName, // stringized assembly name | | __in LPCSTR szAssemblyName, // stringized assemb |
LPCSTR szAppContext, // specifies the full path to the parent asm's . | | ly name |
cfg file, null for global assemblies | | __in_opt LPCSTR szAppContext, // specifies the ful |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | l path to the parent asm's .cfg file, null for global assemblies |
of the REINSTALLMODE flags | | __in DWORD dwInstallMode, // either of type |
DWORD dwAssemblyInfo, // assembly info, including assembly type | | INSTALLMODE or a combination of the REINSTALLMODE flags |
LPSTR lpPathBuf, // returned path, NULL if not desired | | __in DWORD dwAssemblyInfo, // assembly info, |
DWORD *pcchPathBuf); // in/out buffer character count | | including assembly type |
| | __out_ecount_opt(*pcchPathBuf) LPSTR lpPathBuf, // returned path, NU |
| | LL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buffer c |
| | haracter count |
UINT WINAPI MsiProvideAssemblyW( | | UINT WINAPI MsiProvideAssemblyW( |
|
LPCWSTR szAssemblyName, // stringized assembly name | | __in LPCWSTR szAssemblyName, // stringized assem |
LPCWSTR szAppContext, // specifies the full path to the parent asm's | | bly name |
.cfg file, null for global assemblies | | __in_opt LPCWSTR szAppContext, // specifies the fu |
DWORD dwInstallMode,// either of type INSTALLMODE or a combination | | ll path to the parent asm's .cfg file, null for global assemblies |
of the REINSTALLMODE flags | | __in DWORD dwInstallMode, // either of type |
DWORD dwAssemblyInfo, // assembly info, including assembly type | | INSTALLMODE or a combination of the REINSTALLMODE flags |
LPWSTR lpPathBuf, // returned path, NULL if not desired | | __in DWORD dwAssemblyInfo, // assembly info, |
DWORD *pcchPathBuf); // in/out buffer character count | | including assembly type |
| | __out_ecount_opt(*pcchPathBuf) LPWSTR lpPathBuf, // returned path, N |
| | ULL if not desired |
| | __inout_opt LPDWORD pcchPathBuf); // in/out buffer c |
| | haracter count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiProvideAssembly MsiProvideAssemblyW | | #define MsiProvideAssembly MsiProvideAssemblyW |
#else | | #else |
#define MsiProvideAssembly MsiProvideAssemblyA | | #define MsiProvideAssembly MsiProvideAssemblyA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 150) | | #endif //(_WIN32_MSI >= 150) |
| | |
#if (_WIN32_MSI >= 300) | | #if (_WIN32_MSI >= 300) |
// Query the installed state of a component in the specified product instance | | // Query the installed state of a component in the specified product instance |
| | |
UINT WINAPI MsiQueryComponentStateA( | | UINT WINAPI MsiQueryComponentStateA( |
|
LPCSTR szProductCode, // Information is queried on this produ | | __in LPCSTR szProductCode, // Information is queried on thi |
ct | | s product |
LPCSTR szUserSid, // Account of this product instance | | __in_opt LPCSTR szUserSid, // Account of this product insta |
MSIINSTALLCONTEXT dwContext,// Context of this product instance | | nce |
LPCSTR szComponentCode, // Name of the component being queried | | __in MSIINSTALLCONTEXT dwContext, // Context of this product ins |
INSTALLSTATE *pdwState); // State value | | tance |
| | __in LPCSTR szComponentCode, // Name of the component being q |
| | ueried |
| | __out_opt INSTALLSTATE *pdwState); // State value |
UINT WINAPI MsiQueryComponentStateW( | | UINT WINAPI MsiQueryComponentStateW( |
|
LPCWSTR szProductCode, // Information is queried on this prod | | __in LPCWSTR szProductCode, // Information is queried on th |
uct | | is product |
LPCWSTR szUserSid, // Account of this product instance | | __in_opt LPCWSTR szUserSid, // Account of this product inst |
MSIINSTALLCONTEXT dwContext,// Context of this product instance | | ance |
LPCWSTR szComponentCode, // Name of the component being queried | | __in MSIINSTALLCONTEXT dwContext, // Context of this product ins |
INSTALLSTATE *pdwState); // State value | | tance |
| | __in LPCWSTR szComponentCode, // Name of the component being |
| | queried |
| | __out_opt INSTALLSTATE *pdwState); // State value |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiQueryComponentState MsiQueryComponentStateW | | #define MsiQueryComponentState MsiQueryComponentStateW |
#else | | #else |
#define MsiQueryComponentState MsiQueryComponentStateA | | #define MsiQueryComponentState MsiQueryComponentStateA |
#endif // !UNICODE | | #endif // !UNICODE |
#endif //(_WIN32_MSI >= 300) | | #endif //(_WIN32_MSI >= 300) |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to iterate registered products, features, and components. | | // Functions to iterate registered products, features, and components. |
// As with reg keys, they accept a 0-based index into the enumeration. | | // As with reg keys, they accept a 0-based index into the enumeration. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Enumerate the registered products, either installed or advertised | | // Enumerate the registered products, either installed or advertised |
| | |
UINT WINAPI MsiEnumProductsA( | | UINT WINAPI MsiEnumProductsA( |
|
DWORD iProductIndex, // 0-based index into registered products | | __in DWORD iProductIndex, // 0-based in |
LPSTR lpProductBuf); // buffer of char count: 39 (size of string GUI | | dex into registered products |
D) | | __out_ecount(MAX_GUID_CHARS+1) LPSTR lpProductBuf); // buffer of ch |
| | ar count: 39 (size of string GUID) |
UINT WINAPI MsiEnumProductsW( | | UINT WINAPI MsiEnumProductsW( |
|
DWORD iProductIndex, // 0-based index into registered products | | __in DWORD iProductIndex, // 0-based in |
LPWSTR lpProductBuf); // buffer of char count: 39 (size of string GU | | dex into registered products |
ID) | | __out_ecount(MAX_GUID_CHARS+1) LPWSTR lpProductBuf); // buffer of c |
| | har count: 39 (size of string GUID) |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumProducts MsiEnumProductsW | | #define MsiEnumProducts MsiEnumProductsW |
#else | | #else |
#define MsiEnumProducts MsiEnumProductsA | | #define MsiEnumProducts MsiEnumProductsA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 300) | | #if (_WIN32_MSI >= 300) |
// Enumerate the registered products, either installed or advertised in | | // Enumerate the registered products, either installed or advertised in |
// the specified context | | // the specified context |
UINT WINAPI MsiEnumProductsExA( | | UINT WINAPI MsiEnumProductsExA( |
|
LPCSTR szProductCode, // Enumerate instances of this product | | __in_opt LPCSTR szProductCode, |
LPCSTR szUserSid, // Account for enumeration | | // Enumerate instances of this product |
DWORD dwContext, // Contexts for enumeration | | __in_opt LPCSTR szUserSid, |
DWORD dwIndex, // Index for enumeration | | // Account for enumeration |
CHAR szInstalledProductCode[39], // Enumerated product's ProductC | | __in DWORD dwContext, |
ode | | // Contexts for enumeration |
MSIINSTALLCONTEXT *pdwInstalledContext, //Enumerated product's | | __in DWORD dwIndex, |
context | | // Index for enumeration |
LPSTR szSid, // Enumerated product's user account | | __out_ecount_opt(MAX_GUID_CHARS+1) CHAR szInstalledProductCode[39 |
LPDWORD pcchSid); // in/out character count of szSid | | ], // Enumerated product's ProductCode |
| | __out_opt MSIINSTALLCONTEXT *pdwInstalledContext, |
| | // Enumerated product's context |
| | __out_ecount_opt(*pcchSid) LPSTR szSid, |
| | // Enumerated product's user account |
| | __inout_opt LPDWORD pcchSid); |
| | // in/out character count of szSid |
// Enumerate the registered products, either installed or advertised in | | // Enumerate the registered products, either installed or advertised in |
// the specified context | | // the specified context |
UINT WINAPI MsiEnumProductsExW( | | UINT WINAPI MsiEnumProductsExW( |
|
LPCWSTR szProductCode, // Enumerate instances of this product | | __in_opt LPCWSTR szProductCode, |
LPCWSTR szUserSid, // Account for enumeration | | // Enumerate instances of this product |
DWORD dwContext, // Contexts for enumeration | | __in_opt LPCWSTR szUserSid, |
DWORD dwIndex, // Index for enumeration | | // Account for enumeration |
WCHAR szInstalledProductCode[39], // Enumerated product's Product | | __in DWORD dwContext, |
Code | | // Contexts for enumeration |
MSIINSTALLCONTEXT *pdwInstalledContext, //Enumerated product's | | __in DWORD dwIndex, |
context | | // Index for enumeration |
LPWSTR szSid, // Enumerated product's user account | | __out_ecount_opt(MAX_GUID_CHARS+1) WCHAR szInstalledProductCode[3 |
LPDWORD pcchSid); // in/out character count of szSid | | 9], // Enumerated product's ProductCode |
| | __out_opt MSIINSTALLCONTEXT *pdwInstalledContext, |
| | // Enumerated product's context |
| | __out_ecount_opt(*pcchSid) LPWSTR szSid, |
| | // Enumerated product's user account |
| | __inout_opt LPDWORD pcchSid); |
| | // in/out character count of szSid |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumProductsEx MsiEnumProductsExW | | #define MsiEnumProductsEx MsiEnumProductsExW |
#else | | #else |
#define MsiEnumProductsEx MsiEnumProductsExA | | #define MsiEnumProductsEx MsiEnumProductsExA |
#endif // !UNICODE | | #endif // !UNICODE |
#endif //(_WIN32_MSI >= 300) | | #endif //(_WIN32_MSI >= 300) |
| | |
#if (_WIN32_MSI >= 110) | | #if (_WIN32_MSI >= 110) |
| | |
// Enumerate products with given upgrade code | | // Enumerate products with given upgrade code |
| | |
UINT WINAPI MsiEnumRelatedProductsA( | | UINT WINAPI MsiEnumRelatedProductsA( |
|
LPCSTR lpUpgradeCode, // upgrade code of products to enumerate | | __in LPCSTR lpUpgradeCode, // upgrade code |
DWORD dwReserved, // reserved, must be 0 | | of products to enumerate |
DWORD iProductIndex, // 0-based index into registered products | | __reserved DWORD dwReserved, // reserved, |
LPSTR lpProductBuf); // buffer of char count: 39 (size of string GUI | | must be 0 |
D) | | __in DWORD iProductIndex, // 0-based in |
| | dex into registered products |
| | __out_ecount(MAX_GUID_CHARS+1) LPSTR lpProductBuf); // buffer of ch |
| | ar count: 39 (size of string GUID) |
UINT WINAPI MsiEnumRelatedProductsW( | | UINT WINAPI MsiEnumRelatedProductsW( |
|
LPCWSTR lpUpgradeCode, // upgrade code of products to enumerate | | __in LPCWSTR lpUpgradeCode, // upgrade cod |
DWORD dwReserved, // reserved, must be 0 | | e of products to enumerate |
DWORD iProductIndex, // 0-based index into registered products | | __reserved DWORD dwReserved, // reserved, |
LPWSTR lpProductBuf); // buffer of char count: 39 (size of string GU | | must be 0 |
ID) | | __in DWORD iProductIndex, // 0-based in |
| | dex into registered products |
| | __out_ecount(MAX_GUID_CHARS+1) LPWSTR lpProductBuf); // buffer of c |
| | har count: 39 (size of string GUID) |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumRelatedProducts MsiEnumRelatedProductsW | | #define MsiEnumRelatedProducts MsiEnumRelatedProductsW |
#else | | #else |
#define MsiEnumRelatedProducts MsiEnumRelatedProductsA | | #define MsiEnumRelatedProducts MsiEnumRelatedProductsA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 110) | | #endif //(_WIN32_MSI >= 110) |
| | |
// Enumerate the advertised features for a given product. | | // Enumerate the advertised features for a given product. |
// If parent is not required, supplying NULL will improve performance. | | // If parent is not required, supplying NULL will improve performance. |
| | |
UINT WINAPI MsiEnumFeaturesA( | | UINT WINAPI MsiEnumFeaturesA( |
|
LPCSTR szProduct, | | __in LPCSTR szProduct, |
DWORD iFeatureIndex, // 0-based index into published features | | __in DWORD iFeatureIndex, // 0-bas |
LPSTR lpFeatureBuf, // feature name buffer, size=MAX_FEATURE_CHARS+ | | ed index into published features |
1 | | __out_ecount(MAX_FEATURE_CHARS+1) LPSTR lpFeatureBuf, // feature |
LPSTR lpParentBuf); // parent feature buffer, size=MAX_FEATURE_CHARS+ | | name buffer, size=MAX_FEATURE_CHARS+1 |
1 | | __out_ecount_opt(MAX_FEATURE_CHARS+1) LPSTR lpParentBuf); // parent |
| | feature buffer, size=MAX_FEATURE_CHARS+1 |
UINT WINAPI MsiEnumFeaturesW( | | UINT WINAPI MsiEnumFeaturesW( |
|
LPCWSTR szProduct, | | __in LPCWSTR szProduct, |
DWORD iFeatureIndex, // 0-based index into published features | | __in DWORD iFeatureIndex, // 0-bas |
LPWSTR lpFeatureBuf, // feature name buffer, size=MAX_FEATURE_CHARS | | ed index into published features |
+1 | | __out_ecount(MAX_FEATURE_CHARS+1) LPWSTR lpFeatureBuf, // featur |
LPWSTR lpParentBuf); // parent feature buffer, size=MAX_FEATURE_CHARS | | e name buffer, size=MAX_FEATURE_CHARS+1 |
+1 | | __out_ecount_opt(MAX_FEATURE_CHARS+1) LPWSTR lpParentBuf); // parent |
| | feature buffer, size=MAX_FEATURE_CHARS+1 |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumFeatures MsiEnumFeaturesW | | #define MsiEnumFeatures MsiEnumFeaturesW |
#else | | #else |
#define MsiEnumFeatures MsiEnumFeaturesA | | #define MsiEnumFeatures MsiEnumFeaturesA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Enumerate the installed components for all products | | // Enumerate the installed components for all products |
| | |
UINT WINAPI MsiEnumComponentsA( | | UINT WINAPI MsiEnumComponentsA( |
|
DWORD iComponentIndex, // 0-based index into installed components | | __in DWORD iComponentIndex, // 0-based in |
LPSTR lpComponentBuf); // buffer of char count: 39 (size of string GUI | | dex into installed components |
D) | | __out_ecount(MAX_GUID_CHARS+1) LPSTR lpComponentBuf); // buffer of ch |
| | ar count: 39 (size of string GUID) |
UINT WINAPI MsiEnumComponentsW( | | UINT WINAPI MsiEnumComponentsW( |
|
DWORD iComponentIndex, // 0-based index into installed components | | __in DWORD iComponentIndex, // 0-based in |
LPWSTR lpComponentBuf); // buffer of char count: 39 (size of string GU | | dex into installed components |
ID) | | __out_ecount(MAX_GUID_CHARS+1) LPWSTR lpComponentBuf); // buffer of c |
| | har count: 39 (size of string GUID) |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumComponents MsiEnumComponentsW | | #define MsiEnumComponents MsiEnumComponentsW |
#else | | #else |
#define MsiEnumComponents MsiEnumComponentsA | | #define MsiEnumComponents MsiEnumComponentsA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Enumerate the client products for a component | | // Enumerate the client products for a component |
| | |
UINT WINAPI MsiEnumClientsA( | | UINT WINAPI MsiEnumClientsA( |
|
LPCSTR szComponent, | | __in LPCSTR szComponent, |
DWORD iProductIndex, // 0-based index into client products | | __in DWORD iProductIndex, // 0-based in |
LPSTR lpProductBuf); // buffer of char count: 39 (size of string GUI | | dex into client products |
D) | | __out_ecount(MAX_GUID_CHARS+1) LPSTR lpProductBuf); // buffer of ch |
| | ar count: 39 (size of string GUID) |
UINT WINAPI MsiEnumClientsW( | | UINT WINAPI MsiEnumClientsW( |
|
LPCWSTR szComponent, | | __in LPCWSTR szComponent, |
DWORD iProductIndex, // 0-based index into client products | | __in DWORD iProductIndex, // 0-based in |
LPWSTR lpProductBuf); // buffer of char count: 39 (size of string GU | | dex into client products |
ID) | | __out_ecount(MAX_GUID_CHARS+1) LPWSTR lpProductBuf); // buffer of c |
| | har count: 39 (size of string GUID) |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumClients MsiEnumClientsW | | #define MsiEnumClients MsiEnumClientsW |
#else | | #else |
#define MsiEnumClients MsiEnumClientsA | | #define MsiEnumClients MsiEnumClientsA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Enumerate the qualifiers for an advertised component. | | // Enumerate the qualifiers for an advertised component. |
| | |
UINT WINAPI MsiEnumComponentQualifiersA( | | UINT WINAPI MsiEnumComponentQualifiersA( |
|
LPCSTR szComponent, // generic component ID that is qualified | | __in LPCSTR szComponent, |
DWORD iIndex, // 0-based index into qualifiers | | // generic component ID that is qualified |
LPSTR lpQualifierBuf, // qualifier buffer | | __in DWORD iIndex, |
DWORD *pcchQualifierBuf, // in/out qualifier buffer character count | | // 0-based index into qualifiers |
LPSTR lpApplicationDataBuf, // description buffer | | __out_ecount(*pcchQualifierBuf) LPSTR lpQualifierBuf, |
DWORD *pcchApplicationDataBuf); // in/out description buffer characte | | // qualifier buffer |
r count | | __inout LPDWORD pcchQualifierBuf, |
| | // in/out qualifier buffer character count |
| | __out_ecount_opt(*pcchApplicationDataBuf) LPSTR lpApplicationDataBuf, |
| | // description buffer |
| | __inout_opt LPDWORD pcchApplicationData |
| | Buf); // in/out description buffer character count |
UINT WINAPI MsiEnumComponentQualifiersW( | | UINT WINAPI MsiEnumComponentQualifiersW( |
|
LPCWSTR szComponent, // generic component ID that is qualified | | __in LPCWSTR szComponent, |
DWORD iIndex, // 0-based index into qualifiers | | // generic component ID that is qualified |
LPWSTR lpQualifierBuf, // qualifier buffer | | __in DWORD iIndex, |
DWORD *pcchQualifierBuf, // in/out qualifier buffer character count | | // 0-based index into qualifiers |
LPWSTR lpApplicationDataBuf, // description buffer | | __out_ecount(*pcchQualifierBuf) LPWSTR lpQualifierBuf, |
DWORD *pcchApplicationDataBuf); // in/out description buffer characte | | // qualifier buffer |
r count | | __inout LPDWORD pcchQualifierBuf, |
| | // in/out qualifier buffer character count |
| | __out_ecount_opt(*pcchApplicationDataBuf) LPWSTR lpApplicationDataBuf |
| | , // description buffer |
| | __inout_opt LPDWORD pcchApplicationData |
| | Buf); // in/out description buffer character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiEnumComponentQualifiers MsiEnumComponentQualifiersW | | #define MsiEnumComponentQualifiers MsiEnumComponentQualifiersW |
#else | | #else |
#define MsiEnumComponentQualifiers MsiEnumComponentQualifiersA | | #define MsiEnumComponentQualifiers MsiEnumComponentQualifiersA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to obtain product or package information. | | // Functions to obtain product or package information. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Open the installation for a product to obtain detailed information | | // Open the installation for a product to obtain detailed information |
| | |
UINT WINAPI MsiOpenProductA( | | UINT WINAPI MsiOpenProductA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
MSIHANDLE *hProduct); // returned product handle, must be closed | | __out MSIHANDLE *hProduct); // returned product handle, must be closed |
UINT WINAPI MsiOpenProductW( | | UINT WINAPI MsiOpenProductW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
MSIHANDLE *hProduct); // returned product handle, must be closed | | __out MSIHANDLE *hProduct); // returned product handle, must be closed |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiOpenProduct MsiOpenProductW | | #define MsiOpenProduct MsiOpenProductW |
#else | | #else |
#define MsiOpenProduct MsiOpenProductA | | #define MsiOpenProduct MsiOpenProductA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Open a product package in order to access product properties | | // Open a product package in order to access product properties |
| | |
UINT WINAPI MsiOpenPackageA( | | UINT WINAPI MsiOpenPackageA( |
|
LPCSTR szPackagePath, // path to package, or database handle: #nnn | | __in LPCSTR szPackagePath, // path to package, or database handle |
n | | : #nnnn |
MSIHANDLE *hProduct); // returned product handle, must be closed | | __out MSIHANDLE *hProduct); // returned product handle, must be |
| | closed |
UINT WINAPI MsiOpenPackageW( | | UINT WINAPI MsiOpenPackageW( |
|
LPCWSTR szPackagePath, // path to package, or database handle: #nn | | __in LPCWSTR szPackagePath, // path to package, or database handl |
nn | | e: #nnnn |
MSIHANDLE *hProduct); // returned product handle, must be closed | | __out MSIHANDLE *hProduct); // returned product handle, must be |
| | closed |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiOpenPackage MsiOpenPackageW | | #define MsiOpenPackage MsiOpenPackageW |
#else | | #else |
#define MsiOpenPackage MsiOpenPackageA | | #define MsiOpenPackage MsiOpenPackageA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 150) | | #if (_WIN32_MSI >= 150) |
| | |
// Open a product package in order to access product properties | | // Open a product package in order to access product properties |
// Option to create a "safe" engine that does not look at machine state | | // Option to create a "safe" engine that does not look at machine state |
// and does not allow for modification of machine state | | // and does not allow for modification of machine state |
| | |
UINT WINAPI MsiOpenPackageExA( | | UINT WINAPI MsiOpenPackageExA( |
|
LPCSTR szPackagePath, // path to package, or database handle: #nnnn | | __in LPCSTR szPackagePath, // path to package, or database handle: #nn |
DWORD dwOptions, // options flags to indicate whether or not to | | nn |
ignore machine state | | __in DWORD dwOptions, // options flags to indicate whether or n |
MSIHANDLE *hProduct); // returned product handle, must be closed | | ot to ignore machine state |
| | __out MSIHANDLE *hProduct); // returned product handle, must be close |
| | d |
UINT WINAPI MsiOpenPackageExW( | | UINT WINAPI MsiOpenPackageExW( |
|
LPCWSTR szPackagePath, // path to package, or database handle: #nnnn | | __in LPCWSTR szPackagePath, // path to package, or database handle: #n |
DWORD dwOptions, // options flags to indicate whether or not to | | nnn |
ignore machine state | | __in DWORD dwOptions, // options flags to indicate whether or n |
MSIHANDLE *hProduct); // returned product handle, must be closed | | ot to ignore machine state |
| | __out MSIHANDLE *hProduct); // returned product handle, must be close |
| | d |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiOpenPackageEx MsiOpenPackageExW | | #define MsiOpenPackageEx MsiOpenPackageExW |
#else | | #else |
#define MsiOpenPackageEx MsiOpenPackageExA | | #define MsiOpenPackageEx MsiOpenPackageExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 150) | | #endif //(_WIN32_MSI >= 150) |
| | |
|
| | #if (_WIN32_MSI >= 400) |
| | |
| | UINT WINAPI MsiGetPatchFileListA( |
| | __in LPCSTR szProductCode, |
| | __in LPCSTR szPatchPackages, |
| | __out LPDWORD pcFiles, |
| | __out MSIHANDLE** pphFileRecords); |
| | UINT WINAPI MsiGetPatchFileListW( |
| | __in LPCWSTR szProductCode, |
| | __in LPCWSTR szPatchPackages, |
| | __out LPDWORD pcFiles, |
| | __out MSIHANDLE** pphFileRecords); |
| | #ifdef UNICODE |
| | #define MsiGetPatchFileList MsiGetPatchFileListW |
| | #else |
| | #define MsiGetPatchFileList MsiGetPatchFileListA |
| | #endif // !UNICODE |
| | |
| | #endif // #if (_WIN32_MSI >= 400) |
| | |
// Provide the value for an installation property. | | // Provide the value for an installation property. |
| | |
UINT WINAPI MsiGetProductPropertyA( | | UINT WINAPI MsiGetProductPropertyA( |
|
MSIHANDLE hProduct, // product handle obtained from MsiOpenProduc | | __in MSIHANDLE hProduct, // product h |
t | | andle obtained from MsiOpenProduct |
LPCSTR szProperty, // property name, case-sensitive | | __in LPCSTR szProperty, // property na |
LPSTR lpValueBuf, // returned value, NULL if not desired | | me, case-sensitive |
DWORD *pcchValueBuf); // in/out buffer character count | | __out_ecount_opt(*pcchValueBuf) LPSTR lpValueBuf, // returned va |
| | lue, NULL if not desired |
| | __inout_opt LPDWORD pcchValueBuf); // in/out bu |
| | ffer character count |
UINT WINAPI MsiGetProductPropertyW( | | UINT WINAPI MsiGetProductPropertyW( |
|
MSIHANDLE hProduct, // product handle obtained from MsiOpenProduc | | __in MSIHANDLE hProduct, // product h |
t | | andle obtained from MsiOpenProduct |
LPCWSTR szProperty, // property name, case-sensitive | | __in LPCWSTR szProperty, // property n |
LPWSTR lpValueBuf, // returned value, NULL if not desired | | ame, case-sensitive |
DWORD *pcchValueBuf); // in/out buffer character count | | __out_ecount_opt(*pcchValueBuf) LPWSTR lpValueBuf, // returned v |
| | alue, NULL if not desired |
| | __inout_opt LPDWORD pcchValueBuf); // in/out bu |
| | ffer character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetProductProperty MsiGetProductPropertyW | | #define MsiGetProductProperty MsiGetProductPropertyW |
#else | | #else |
#define MsiGetProductProperty MsiGetProductPropertyA | | #define MsiGetProductProperty MsiGetProductPropertyA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Determine whether a file is a package | | // Determine whether a file is a package |
// Returns ERROR_SUCCESS if file is a package. | | // Returns ERROR_SUCCESS if file is a package. |
| | |
UINT WINAPI MsiVerifyPackageA( | | UINT WINAPI MsiVerifyPackageA( |
|
LPCSTR szPackagePath); // location of package | | __in LPCSTR szPackagePath); // location of package |
UINT WINAPI MsiVerifyPackageW( | | UINT WINAPI MsiVerifyPackageW( |
|
LPCWSTR szPackagePath); // location of package | | __in LPCWSTR szPackagePath); // location of package |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiVerifyPackage MsiVerifyPackageW | | #define MsiVerifyPackage MsiVerifyPackageW |
#else | | #else |
#define MsiVerifyPackage MsiVerifyPackageA | | #define MsiVerifyPackage MsiVerifyPackageA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Provide descriptive information for product feature: title and description. | | // Provide descriptive information for product feature: title and description. |
// Returns the install level for the feature, or -1 if feature is unknown. | | // Returns the install level for the feature, or -1 if feature is unknown. |
// 0 = feature is not available on this machine | | // 0 = feature is not available on this machine |
// 1 = highest priority, feature installed if parent is installed | | // 1 = highest priority, feature installed if parent is installed |
// >1 = decreasing priority, feature installation based on InstallLevel propert
y | | // >1 = decreasing priority, feature installation based on InstallLevel propert
y |
| | |
UINT WINAPI MsiGetFeatureInfoA( | | UINT WINAPI MsiGetFeatureInfoA( |
|
MSIHANDLE hProduct, // product handle obtained from MsiOpenProduc | | __in MSIHANDLE hProduct, // product ha |
t | | ndle obtained from MsiOpenProduct |
LPCSTR szFeature, // feature name | | __in LPCSTR szFeature, // feature name |
DWORD *lpAttributes, // attribute flags for the feature, using INST | | __out_opt LPDWORD lpAttributes, // attribute |
ALLFEATUREATTRIBUTE | | flags for the feature, using INSTALLFEATUREATTRIBUTE |
LPSTR lpTitleBuf, // returned localized name, NULL if not desired | | __out_ecount_opt(*pcchTitleBuf) LPSTR lpTitleBuf, // returned loc |
DWORD *pcchTitleBuf, // in/out buffer character count | | alized name, NULL if not desired |
LPSTR lpHelpBuf, // returned description, NULL if not desired | | __inout_opt LPDWORD pcchTitleBuf, // in/out buf |
DWORD *pcchHelpBuf); // in/out buffer character count | | fer character count |
| | __out_ecount_opt(*pcchHelpBuf) LPSTR lpHelpBuf, // returned des |
| | cription, NULL if not desired |
| | __inout_opt LPDWORD pcchHelpBuf); // in/out buf |
| | fer character count |
UINT WINAPI MsiGetFeatureInfoW( | | UINT WINAPI MsiGetFeatureInfoW( |
|
MSIHANDLE hProduct, // product handle obtained from MsiOpenProduc | | __in MSIHANDLE hProduct, // product ha |
t | | ndle obtained from MsiOpenProduct |
LPCWSTR szFeature, // feature name | | __in LPCWSTR szFeature, // feature nam |
DWORD *lpAttributes, // attribute flags for the feature, using INST | | e |
ALLFEATUREATTRIBUTE | | __out_opt LPDWORD lpAttributes, // attribute |
LPWSTR lpTitleBuf, // returned localized name, NULL if not desire | | flags for the feature, using INSTALLFEATUREATTRIBUTE |
d | | __out_ecount_opt(*pcchTitleBuf) LPWSTR lpTitleBuf, // returned lo |
DWORD *pcchTitleBuf, // in/out buffer character count | | calized name, NULL if not desired |
LPWSTR lpHelpBuf, // returned description, NULL if not desired | | __inout_opt LPDWORD pcchTitleBuf, // in/out buf |
DWORD *pcchHelpBuf); // in/out buffer character count | | fer character count |
| | __out_ecount_opt(*pcchHelpBuf) LPWSTR lpHelpBuf, // returned de |
| | scription, NULL if not desired |
| | __inout_opt LPDWORD pcchHelpBuf); // in/out buf |
| | fer character count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetFeatureInfo MsiGetFeatureInfoW | | #define MsiGetFeatureInfo MsiGetFeatureInfoW |
#else | | #else |
#define MsiGetFeatureInfo MsiGetFeatureInfoA | | #define MsiGetFeatureInfo MsiGetFeatureInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions to access or install missing components and files. | | // Functions to access or install missing components and files. |
// These should be used as a last resort. | | // These should be used as a last resort. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Install a component unexpectedly missing, provided only for error recovery | | // Install a component unexpectedly missing, provided only for error recovery |
// This would typically occur due to failue to establish feature availability | | // This would typically occur due to failue to establish feature availability |
// The product feature having the smallest incremental cost is installed | | // The product feature having the smallest incremental cost is installed |
| | |
UINT WINAPI MsiInstallMissingComponentA( | | UINT WINAPI MsiInstallMissingComponentA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szComponent, // component Id, string GUID | | __in LPCSTR szComponent, // component Id, string GUID |
INSTALLSTATE eInstallState); // local/source/default, absent invalid | | __in INSTALLSTATE eInstallState); // local/source/default, absent inva |
| | lid |
UINT WINAPI MsiInstallMissingComponentW( | | UINT WINAPI MsiInstallMissingComponentW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szComponent, // component Id, string GUID | | __in LPCWSTR szComponent, // component Id, string GUID |
INSTALLSTATE eInstallState); // local/source/default, absent invalid | | __in INSTALLSTATE eInstallState); // local/source/default, absent inva |
| | lid |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiInstallMissingComponent MsiInstallMissingComponentW | | #define MsiInstallMissingComponent MsiInstallMissingComponentW |
#else | | #else |
#define MsiInstallMissingComponent MsiInstallMissingComponentA | | #define MsiInstallMissingComponent MsiInstallMissingComponentA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Install a file unexpectedly missing, provided only for error recovery | | // Install a file unexpectedly missing, provided only for error recovery |
// This would typically occur due to failue to establish feature availability | | // This would typically occur due to failue to establish feature availability |
// The missing component is determined from the product's File table, then | | // The missing component is determined from the product's File table, then |
// the product feature having the smallest incremental cost is installed | | // the product feature having the smallest incremental cost is installed |
| | |
UINT WINAPI MsiInstallMissingFileA( | | UINT WINAPI MsiInstallMissingFileA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szFile); // file name, without path | | __in LPCSTR szFile); // file name, without path |
UINT WINAPI MsiInstallMissingFileW( | | UINT WINAPI MsiInstallMissingFileW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szFile); // file name, without path | | __in LPCWSTR szFile); // file name, without path |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiInstallMissingFile MsiInstallMissingFileW | | #define MsiInstallMissingFile MsiInstallMissingFileW |
#else | | #else |
#define MsiInstallMissingFile MsiInstallMissingFileA | | #define MsiInstallMissingFile MsiInstallMissingFileA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Return full path to an installed component without a product code | | // Return full path to an installed component without a product code |
// This function attempts to determine the product using MsiGetProductCode | | // This function attempts to determine the product using MsiGetProductCode |
// but is not guaranteed to find the correct product for the caller. | | // but is not guaranteed to find the correct product for the caller. |
// MsiGetComponentPath should always be called when possible. | | // MsiGetComponentPath should always be called when possible. |
| | |
INSTALLSTATE WINAPI MsiLocateComponentA( | | INSTALLSTATE WINAPI MsiLocateComponentA( |
|
LPCSTR szComponent, // component Id, string GUID | | __in LPCSTR szComponent, // component Id, string |
LPSTR lpPathBuf, // returned path | | GUID |
DWORD *pcchBuf); // in/out buffer character count | | __out_ecount_opt(*pcchBuf) LPSTR lpPathBuf, // returned path |
| | __inout_opt LPDWORD pcchBuf); // in/out buffer chara |
| | cter count |
INSTALLSTATE WINAPI MsiLocateComponentW( | | INSTALLSTATE WINAPI MsiLocateComponentW( |
|
LPCWSTR szComponent, // component Id, string GUID | | __in LPCWSTR szComponent, // component Id, string |
LPWSTR lpPathBuf, // returned path | | GUID |
DWORD *pcchBuf); // in/out buffer character count | | __out_ecount_opt(*pcchBuf) LPWSTR lpPathBuf, // returned path |
| | __inout_opt LPDWORD pcchBuf); // in/out buffer chara |
| | cter count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiLocateComponent MsiLocateComponentW | | #define MsiLocateComponent MsiLocateComponentW |
#else | | #else |
#define MsiLocateComponent MsiLocateComponentA | | #define MsiLocateComponent MsiLocateComponentA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 110) | | #if (_WIN32_MSI >= 110) |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Functions used to manage the list of valid sources. | | // Functions used to manage the list of valid sources. |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Opens the list of sources for the specified user's install of the product | | // Opens the list of sources for the specified user's install of the product |
// and removes all network sources from the list. A NULL or empty value for | | // and removes all network sources from the list. A NULL or empty value for |
// the user name indicates the per-machine install. | | // the user name indicates the per-machine install. |
| | |
UINT WINAPI MsiSourceListClearAllA( | | UINT WINAPI MsiSourceListClearAllA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szUserName, // user name or NULL/empty for per-machine | | __in_opt LPCSTR szUserName, // user name or NULL/empty for per-machin |
DWORD dwReserved); // reserved - must be 0 | | e |
| | __reserved DWORD dwReserved); // reserved - must be 0 |
UINT WINAPI MsiSourceListClearAllW( | | UINT WINAPI MsiSourceListClearAllW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szUserName, // user name or NULL/empty for per-machine | | __in_opt LPCWSTR szUserName, // user name or NULL/empty for per-machi |
DWORD dwReserved); // reserved - must be 0 | | ne |
| | __reserved DWORD dwReserved); // reserved - must be 0 |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListClearAll MsiSourceListClearAllW | | #define MsiSourceListClearAll MsiSourceListClearAllW |
#else | | #else |
#define MsiSourceListClearAll MsiSourceListClearAllA | | #define MsiSourceListClearAll MsiSourceListClearAllA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Opens the list of sources for the specified user's install of the product | | // Opens the list of sources for the specified user's install of the product |
// and adds the provided source as a new network source. A NULL or empty | | // and adds the provided source as a new network source. A NULL or empty |
// value for the user name indicates the per-machine install. | | // value for the user name indicates the per-machine install. |
| | |
UINT WINAPI MsiSourceListAddSourceA( | | UINT WINAPI MsiSourceListAddSourceA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szUserName, // user name or NULL/empty for per-machine | | __in_opt LPCSTR szUserName, // user name or NULL/empty for per-machin |
DWORD dwReserved, // reserved - must be 0 | | e |
LPCSTR szSource); // new source | | __reserved DWORD dwReserved, // reserved - must be 0 |
| | __in LPCSTR szSource); // new source |
UINT WINAPI MsiSourceListAddSourceW( | | UINT WINAPI MsiSourceListAddSourceW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szUserName, // user name or NULL/empty for per-machine | | __in_opt LPCWSTR szUserName, // user name or NULL/empty for per-machi |
DWORD dwReserved, // reserved - must be 0 | | ne |
LPCWSTR szSource); // new source | | __reserved DWORD dwReserved, // reserved - must be 0 |
| | __in LPCWSTR szSource); // new source |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListAddSource MsiSourceListAddSourceW | | #define MsiSourceListAddSource MsiSourceListAddSourceW |
#else | | #else |
#define MsiSourceListAddSource MsiSourceListAddSourceA | | #define MsiSourceListAddSource MsiSourceListAddSourceA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Forces the installer to reevaluate the list of sources the next time that | | // Forces the installer to reevaluate the list of sources the next time that |
// the specified product needs a source. | | // the specified product needs a source. |
| | |
UINT WINAPI MsiSourceListForceResolutionA( | | UINT WINAPI MsiSourceListForceResolutionA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
LPCSTR szUserName, // user name or NULL/empty for per-machine | | __in_opt LPCSTR szUserName, // user name or NULL/empty for per-machin |
DWORD dwReserved); // reserved - must be 0 | | e |
| | __reserved DWORD dwReserved); // reserved - must be 0 |
UINT WINAPI MsiSourceListForceResolutionW( | | UINT WINAPI MsiSourceListForceResolutionW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
LPCWSTR szUserName, // user name or NULL/empty for per-machine | | __in_opt LPCWSTR szUserName, // user name or NULL/empty for per-machi |
DWORD dwReserved); // reserved - must be 0 | | ne |
| | __reserved DWORD dwReserved); // reserved - must be 0 |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListForceResolution MsiSourceListForceResolutionW | | #define MsiSourceListForceResolution MsiSourceListForceResolutionW |
#else | | #else |
#define MsiSourceListForceResolution MsiSourceListForceResolutionA | | #define MsiSourceListForceResolution MsiSourceListForceResolutionA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 110) | | #endif //(_WIN32_MSI >= 110) |
| | |
#if (_WIN32_MSI >= 300) | | #if (_WIN32_MSI >= 300) |
// Adds a source or moves a source within the list of sources for the | | // Adds a source or moves a source within the list of sources for the |
// specified product or patch instance. The source can be network/url type. | | // specified product or patch instance. The source can be network/url type. |
| | |
UINT WINAPI MsiSourceListAddSourceExA( | | UINT WINAPI MsiSourceListAddSourceExA( |
|
LPCSTR szProductCodeOrPatchCode,// Source will be added to this product o | | __in LPCSTR szProductCodeOrPatchCode,// Source will be added to this prod |
r patch | | uct or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/patch ins |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | tance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch i |
LPCSTR szSource, // source to be added/re-ordered | | nstance |
DWORD dwIndex); // new index for the source | | __in DWORD dwOptions, // Additional qualifiers |
| | __in LPCSTR szSource, // source to be added/re-ordered |
| | __in DWORD dwIndex); // new index for the source |
UINT WINAPI MsiSourceListAddSourceExW( | | UINT WINAPI MsiSourceListAddSourceExW( |
|
LPCWSTR szProductCodeOrPatchCode,// Source will be added to this product | | __in LPCWSTR szProductCodeOrPatchCode,// Source will be added to this pro |
or patch | | duct or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/patch in |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | stance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch i |
LPCWSTR szSource, // source to be added/re-ordered | | nstance |
DWORD dwIndex); // new index for the source | | __in DWORD dwOptions, // Additional qualifiers |
| | __in LPCWSTR szSource, // source to be added/re-ordered |
| | __in DWORD dwIndex); // new index for the source |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListAddSourceEx MsiSourceListAddSourceExW | | #define MsiSourceListAddSourceEx MsiSourceListAddSourceExW |
#else | | #else |
#define MsiSourceListAddSourceEx MsiSourceListAddSourceExA | | #define MsiSourceListAddSourceEx MsiSourceListAddSourceExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Add or update a media source for the specified product or patch instance | | // Add or update a media source for the specified product or patch instance |
| | |
UINT WINAPI MsiSourceListAddMediaDiskA( | | UINT WINAPI MsiSourceListAddMediaDiskA( |
|
LPCSTR szProductCodeOrPatchCode,// Disk will be added to this product or | | __in LPCSTR szProductCodeOrPatchCode,// Disk will be added to this produc |
patch | | t or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/patch ins |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | tance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch i |
DWORD dwDiskId, // ID of the disk to be added/updated | | nstance |
LPCSTR szVolumeLabel, // Volume Label of the disk | | __in DWORD dwOptions, // Additional qualifiers |
LPCSTR szDiskPrompt); // Disk Prompt of the disk | | __in DWORD dwDiskId, // ID of the disk to be added/upda |
| | ted |
| | __in_opt LPCSTR szVolumeLabel, // Volume Label of the disk |
| | __in_opt LPCSTR szDiskPrompt); // Disk Prompt of the disk |
UINT WINAPI MsiSourceListAddMediaDiskW( | | UINT WINAPI MsiSourceListAddMediaDiskW( |
|
LPCWSTR szProductCodeOrPatchCode,// Disk will be added to this product or | | __in LPCWSTR szProductCodeOrPatchCode,// Disk will be added to this produ |
patch | | ct or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/patch in |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | stance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch i |
DWORD dwDiskId, // ID of the disk to be added/updated | | nstance |
LPCWSTR szVolumeLabel, // Volume Label of the disk | | __in DWORD dwOptions, // Additional qualifiers |
LPCWSTR szDiskPrompt); // Disk Prompt of the disk | | __in DWORD dwDiskId, // ID of the disk to be added/upda |
| | ted |
| | __in_opt LPCWSTR szVolumeLabel, // Volume Label of the disk |
| | __in_opt LPCWSTR szDiskPrompt); // Disk Prompt of the disk |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskW | | #define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskW |
#else | | #else |
#define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskA | | #define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Remove an existing source for the specified product or patch instance | | // Remove an existing source for the specified product or patch instance |
| | |
UINT WINAPI MsiSourceListClearSourceA( | | UINT WINAPI MsiSourceListClearSourceA( |
|
LPCSTR szProductCodeOrPatchCode, // Source will be cleared for this produ | | __in LPCSTR szProductCodeOrPatchCode, // Source will be cleared for this |
ct or patch | | product or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/patch in |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | stance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
LPCSTR szSource); // source to be removed | | instance |
| | __in DWORD dwOptions, // Additional qualifiers |
| | __in LPCSTR szSource); // source to be removed |
UINT WINAPI MsiSourceListClearSourceW( | | UINT WINAPI MsiSourceListClearSourceW( |
|
LPCWSTR szProductCodeOrPatchCode, // Source will be cleared for this prod | | __in LPCWSTR szProductCodeOrPatchCode, // Source will be cleared for this |
uct or patch | | product or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/patch i |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | nstance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
LPCWSTR szSource); // source to be removed | | instance |
| | __in DWORD dwOptions, // Additional qualifiers |
| | __in LPCWSTR szSource); // source to be removed |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListClearSource MsiSourceListClearSourceW | | #define MsiSourceListClearSource MsiSourceListClearSourceW |
#else | | #else |
#define MsiSourceListClearSource MsiSourceListClearSourceA | | #define MsiSourceListClearSource MsiSourceListClearSourceA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Remove an existing registered disk under the media source for the specified p
roduct or | | // Remove an existing registered disk under the media source for the specified p
roduct or |
// patch instance | | // patch instance |
| | |
UINT WINAPI MsiSourceListClearMediaDiskA( | | UINT WINAPI MsiSourceListClearMediaDiskA( |
|
LPCSTR szProductCodeOrPatchCode, // Disk will be cleared for this product | | __in LPCSTR szProductCodeOrPatchCode, // Disk will be cleared for this pr |
or patch | | oduct or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/patch in |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | stance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
DWORD dwDiskId); // DiskID to be removed | | instance |
| | __in DWORD dwOptions, // Additional qualifiers |
| | __in DWORD dwDiskId); // DiskID to be removed |
UINT WINAPI MsiSourceListClearMediaDiskW( | | UINT WINAPI MsiSourceListClearMediaDiskW( |
|
LPCWSTR szProductCodeOrPatchCode, // Disk will be cleared for this produc | | __in LPCWSTR szProductCodeOrPatchCode, // Disk will be cleared for this p |
t or patch | | roduct or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/patch i |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | nstance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
DWORD dwDiskId); // DiskID to be removed | | instance |
| | __in DWORD dwOptions, // Additional qualifiers |
| | __in DWORD dwDiskId); // DiskID to be removed |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskW | | #define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskW |
#else | | #else |
#define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskA | | #define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Remove all existing sources of the given source type for the specified produc
t or patch | | // Remove all existing sources of the given source type for the specified produc
t or patch |
// instance | | // instance |
| | |
UINT WINAPI MsiSourceListClearAllExA( | | UINT WINAPI MsiSourceListClearAllExA( |
|
LPCSTR szProductCodeOrPatchCode, // All sources will be cleared for this | | __in LPCSTR szProductCodeOrPatchCode, // All sources will be cleared for |
product or patch | | this product or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/patch in |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | stance |
DWORD dwOptions); // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
| | instance |
| | __in DWORD dwOptions); // Additional qualifiers |
UINT WINAPI MsiSourceListClearAllExW( | | UINT WINAPI MsiSourceListClearAllExW( |
|
LPCWSTR szProductCodeOrPatchCode, // All sources will be cleared for this | | __in LPCWSTR szProductCodeOrPatchCode, // All sources will be cleared for |
product or patch | | this product or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/patch i |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | nstance |
DWORD dwOptions); // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
| | instance |
| | __in DWORD dwOptions); // Additional qualifiers |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListClearAllEx MsiSourceListClearAllExW | | #define MsiSourceListClearAllEx MsiSourceListClearAllExW |
#else | | #else |
#define MsiSourceListClearAllEx MsiSourceListClearAllExA | | #define MsiSourceListClearAllEx MsiSourceListClearAllExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Forces the installer to reevaluate the list of sources the next time that | | // Forces the installer to reevaluate the list of sources the next time that |
// the specified product or patch instance needs a source. | | // the specified product or patch instance needs a source. |
| | |
UINT WINAPI MsiSourceListForceResolutionExA( | | UINT WINAPI MsiSourceListForceResolutionExA( |
|
LPCSTR szProductCodeOrPatchCode, // Source Resolution will be forced for | | __in LPCSTR szProductCodeOrPatchCode, // Source Resolution will be force |
this product or patch | | d for this product or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/patch i |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | nstance |
DWORD dwOptions); // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
| | instance |
| | __in DWORD dwOptions); // Additional qualifiers |
UINT WINAPI MsiSourceListForceResolutionExW( | | UINT WINAPI MsiSourceListForceResolutionExW( |
|
LPCWSTR szProductCodeOrPatchCode, // Source Resolution will be forced fo | | __in LPCWSTR szProductCodeOrPatchCode, // Source Resolution will be forc |
r this product or patch | | ed for this product or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/patch |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | instance |
DWORD dwOptions); // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
| | instance |
| | __in DWORD dwOptions); // Additional qualifiers |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExW | | #define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExW |
#else | | #else |
#define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExA | | #define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Set the source list property to the provided value for the specified product
or patch instance | | // Set the source list property to the provided value for the specified product
or patch instance |
| | |
UINT WINAPI MsiSourceListSetInfoA( | | UINT WINAPI MsiSourceListSetInfoA( |
|
LPCSTR szProductCodeOrPatchCode, // Source Info will be set for this prod | | __in LPCSTR szProductCodeOrPatchCode, // Source Info will be set for this |
uct or patch | | product or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/patch in |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | stance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
LPCSTR szProperty, // Property being set/modified | | instance |
LPCSTR szValue); // Value to be set | | __in DWORD dwOptions, // Additional qualifiers |
| | __in LPCSTR szProperty, // Property being set/modified |
| | __in LPCSTR szValue); // Value to be set |
UINT WINAPI MsiSourceListSetInfoW( | | UINT WINAPI MsiSourceListSetInfoW( |
|
LPCWSTR szProductCodeOrPatchCode, // Source Info will be set for this pro | | __in LPCWSTR szProductCodeOrPatchCode, // Source Info will be set for thi |
duct or patch | | s product or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/patch i |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | nstance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product/patch |
LPCWSTR szProperty, // Property being set/modified | | instance |
LPCWSTR szValue); // Value to be set | | __in DWORD dwOptions, // Additional qualifiers |
| | __in LPCWSTR szProperty, // Property being set/modified |
| | __in LPCWSTR szValue); // Value to be set |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListSetInfo MsiSourceListSetInfoW | | #define MsiSourceListSetInfo MsiSourceListSetInfoW |
#else | | #else |
#define MsiSourceListSetInfo MsiSourceListSetInfoA | | #define MsiSourceListSetInfo MsiSourceListSetInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Query the given source list property for the specified product or patch insta
nce | | // Query the given source list property for the specified product or patch insta
nce |
| | |
UINT WINAPI MsiSourceListGetInfoA( | | UINT WINAPI MsiSourceListGetInfoA( |
|
LPCSTR szProductCodeOrPatchCode, // Source Info will be queried for this | | __in LPCSTR szProductCodeOrPatchCode, // Source Info will be queri |
produt or patch | | ed for this produt or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this product/p |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | atch instance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product |
LPCSTR szProperty, // Property being queried | | /patch instance |
LPSTR szValue, // Buffer to get the value | | __in DWORD dwOptions, // Additional qualifiers |
LPDWORD pcchValue); // in/out character count of szValue | | __in LPCSTR szProperty, // Property being queried |
| | __out_ecount_opt(*pcchValue) LPSTR szValue, // Buffer to get the value |
| | __inout_opt LPDWORD pcchValue); // in/out character count |
| | of szValue |
UINT WINAPI MsiSourceListGetInfoW( | | UINT WINAPI MsiSourceListGetInfoW( |
|
LPCWSTR szProductCodeOrPatchCode, // Source Info will be queried for this | | __in LPCWSTR szProductCodeOrPatchCode, // Source Info will be quer |
produt or patch | | ied for this produt or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this product/ |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | patch instance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this product |
LPCWSTR szProperty, // Property being queried | | /patch instance |
LPWSTR szValue, // Buffer to get the value | | __in DWORD dwOptions, // Additional qualifiers |
LPDWORD pcchValue); // in/out character count of szValue | | __in LPCWSTR szProperty, // Property being queried |
| | __out_ecount_opt(*pcchValue) LPWSTR szValue, // Buffer to get the value |
| | __inout_opt LPDWORD pcchValue); // in/out character count |
| | of szValue |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListGetInfo MsiSourceListGetInfoW | | #define MsiSourceListGetInfo MsiSourceListGetInfoW |
#else | | #else |
#define MsiSourceListGetInfo MsiSourceListGetInfoA | | #define MsiSourceListGetInfo MsiSourceListGetInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Enumerate all sources for the specified product or patch instance | | // Enumerate all sources for the specified product or patch instance |
| | |
UINT WINAPI MsiSourceListEnumSourcesA( | | UINT WINAPI MsiSourceListEnumSourcesA( |
|
LPCSTR szProductCodeOrPatchCode, // Sources will be enumerated for this p | | __in LPCSTR szProductCodeOrPatchCode, // Sources will be enum |
roduct or patch | | erated for this product or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of this prod |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | uct/patch instance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this pr |
DWORD dwIndex, // Index value for enumeration | | oduct/patch instance |
LPSTR szSource, // Buffer to receive the enumerated source | | __in DWORD dwOptions, // Additional qualifi |
LPDWORD pcchSource); // in/out character count of szSource | | ers |
| | __in DWORD dwIndex, // Index value for en |
| | umeration |
| | __out_ecount_opt(*pcchSource) LPSTR szSource, // Buffer to receive th |
| | e enumerated source |
| | __inout_opt LPDWORD pcchSource); // in/out character c |
| | ount of szSource |
UINT WINAPI MsiSourceListEnumSourcesW( | | UINT WINAPI MsiSourceListEnumSourcesW( |
|
LPCWSTR szProductCodeOrPatchCode, // Sources will be enumerated for this | | __in LPCWSTR szProductCodeOrPatchCode, // Sources will be enu |
product or patch | | merated for this product or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of this pro |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | duct/patch instance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context of this pr |
DWORD dwIndex, // Index value for enumeration | | oduct/patch instance |
LPWSTR szSource, // Buffer to receive the enumerated source | | __in DWORD dwOptions, // Additional qualifi |
LPDWORD pcchSource); // in/out character count of szSource | | ers |
| | __in DWORD dwIndex, // Index value for en |
| | umeration |
| | __out_ecount_opt(*pcchSource) LPWSTR szSource, // Buffer to receive t |
| | he enumerated source |
| | __inout_opt LPDWORD pcchSource); // in/out character c |
| | ount of szSource |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListEnumSources MsiSourceListEnumSourcesW | | #define MsiSourceListEnumSources MsiSourceListEnumSourcesW |
#else | | #else |
#define MsiSourceListEnumSources MsiSourceListEnumSourcesA | | #define MsiSourceListEnumSources MsiSourceListEnumSourcesA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// Enumerate all registered media disks for the specified product or patch insta
nce | | // Enumerate all registered media disks for the specified product or patch insta
nce |
| | |
UINT WINAPI MsiSourceListEnumMediaDisksA( | | UINT WINAPI MsiSourceListEnumMediaDisksA( |
|
LPCSTR szProductCodeOrPatchCode, // Disks will be enumerated for this pro | | __in LPCSTR szProductCodeOrPatchCode, // Disks will |
duct or patch | | be enumerated for this product or patch |
LPCSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCSTR szUserSid, // Account of |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | this product/patch instance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context o |
DWORD dwIndex, // Index value for enumeration | | f this product/patch instance |
LPDWORD pdwDiskId, // ID of the disk being enumerated | | __in DWORD dwOptions, // Additiona |
LPSTR szVolumeLabel, // Volume label of the disk being enumerated | | l qualifiers |
LPDWORD pcchVolumeLabel, // in/out character count of szVolumeLabel | | __in DWORD dwIndex, // Index val |
LPSTR szDiskPrompt, // DiskPrompt of the disk being enumerated | | ue for enumeration |
LPDWORD pcchDiskPrompt); // in/out character count of szDiskPrompt | | __out_opt LPDWORD pdwDiskId, // ID of the |
| | disk being enumerated |
| | __out_ecount_opt(*pcchVolumeLabel) LPSTR szVolumeLabel, // Volume labe |
| | l of the disk being enumerated |
| | __inout_opt LPDWORD pcchVolumeLabel, // in/out ch |
| | aracter count of szVolumeLabel |
| | __out_ecount_opt(*pcchDiskPrompt) LPSTR szDiskPrompt, // DiskPrompt |
| | of the disk being enumerated |
| | __inout_opt LPDWORD pcchDiskPrompt); // in/out ch |
| | aracter count of szDiskPrompt |
UINT WINAPI MsiSourceListEnumMediaDisksW( | | UINT WINAPI MsiSourceListEnumMediaDisksW( |
|
LPCWSTR szProductCodeOrPatchCode, // Disks will be enumerated for this pr | | __in LPCWSTR szProductCodeOrPatchCode, // Disks will |
oduct or patch | | be enumerated for this product or patch |
LPCWSTR szUserSid, // Account of this product/patch instance | | __in_opt LPCWSTR szUserSid, // Account of |
MSIINSTALLCONTEXT dwContext, // Context of this product/patch instance | | this product/patch instance |
DWORD dwOptions, // Additional qualifiers | | __in MSIINSTALLCONTEXT dwContext, // Context o |
DWORD dwIndex, // Index value for enumeration | | f this product/patch instance |
LPDWORD pdwDiskId, // ID of the disk being enumerated | | __in DWORD dwOptions, // Additiona |
LPWSTR szVolumeLabel, // Volume label of the disk being enumerated | | l qualifiers |
LPDWORD pcchVolumeLabel, // in/out character count of szVolumeLabel | | __in DWORD dwIndex, // Index val |
LPWSTR szDiskPrompt, // DiskPrompt of the disk being enumerated | | ue for enumeration |
LPDWORD pcchDiskPrompt); // in/out character count of szDiskPrompt | | __out_opt LPDWORD pdwDiskId, // ID of the |
| | disk being enumerated |
| | __out_ecount_opt(*pcchVolumeLabel) LPWSTR szVolumeLabel, // Volume lab |
| | el of the disk being enumerated |
| | __inout_opt LPDWORD pcchVolumeLabel, // in/out ch |
| | aracter count of szVolumeLabel |
| | __out_ecount_opt(*pcchDiskPrompt) LPWSTR szDiskPrompt, // DiskPrompt |
| | of the disk being enumerated |
| | __inout_opt LPDWORD pcchDiskPrompt); // in/out ch |
| | aracter count of szDiskPrompt |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksW | | #define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksW |
#else | | #else |
#define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksA | | #define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 300) | | #endif //(_WIN32_MSI >= 300) |
| | |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
// Utility functions | | // Utility functions |
// -------------------------------------------------------------------------- | | // -------------------------------------------------------------------------- |
| | |
// Give the version string and language for a specified file | | // Give the version string and language for a specified file |
| | |
UINT WINAPI MsiGetFileVersionA( | | UINT WINAPI MsiGetFileVersionA( |
|
LPCSTR szFilePath, // path to the file | | __in LPCSTR szFilePath, // path to |
LPSTR lpVersionBuf, // returned version string | | the file |
DWORD *pcchVersionBuf, // in/out buffer byte count | | __out_ecount_opt(*pcchVersionBuf) LPSTR lpVersionBuf, // returne |
LPSTR lpLangBuf, // returned language string | | d version string |
DWORD *pcchLangBuf); // in/out buffer byte count | | __inout_opt LPDWORD pcchVersionBuf, // in/ou |
| | t buffer byte count |
| | __out_ecount_opt(*pcchLangBuf) LPSTR lpLangBuf, // returne |
| | d language string |
| | __inout_opt LPDWORD pcchLangBuf); // in/ou |
| | t buffer byte count |
UINT WINAPI MsiGetFileVersionW( | | UINT WINAPI MsiGetFileVersionW( |
|
LPCWSTR szFilePath, // path to the file | | __in LPCWSTR szFilePath, // path t |
LPWSTR lpVersionBuf, // returned version string | | o the file |
DWORD *pcchVersionBuf, // in/out buffer byte count | | __out_ecount_opt(*pcchVersionBuf) LPWSTR lpVersionBuf, // return |
LPWSTR lpLangBuf, // returned language string | | ed version string |
DWORD *pcchLangBuf); // in/out buffer byte count | | __inout_opt LPDWORD pcchVersionBuf, // in/ou |
| | t buffer byte count |
| | __out_ecount_opt(*pcchLangBuf) LPWSTR lpLangBuf, // return |
| | ed language string |
| | __inout_opt LPDWORD pcchLangBuf); // in/ou |
| | t buffer byte count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetFileVersion MsiGetFileVersionW | | #define MsiGetFileVersion MsiGetFileVersionW |
#else | | #else |
#define MsiGetFileVersion MsiGetFileVersionA | | #define MsiGetFileVersion MsiGetFileVersionA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_MSI >= 150) | | #if (_WIN32_MSI >= 150) |
| | |
UINT WINAPI MsiGetFileHashA( | | UINT WINAPI MsiGetFileHashA( |
|
LPCSTR szFilePath, // path to the file | | __in LPCSTR szFilePath, // path to the file |
DWORD dwOptions, // options | | __in DWORD dwOptions, // options |
PMSIFILEHASHINFO pHash); // returned file hash info | | __inout PMSIFILEHASHINFO pHash); // returned file hash info |
UINT WINAPI MsiGetFileHashW( | | UINT WINAPI MsiGetFileHashW( |
|
LPCWSTR szFilePath, // path to the file | | __in LPCWSTR szFilePath, // path to the file |
DWORD dwOptions, // options | | __in DWORD dwOptions, // options |
PMSIFILEHASHINFO pHash); // returned file hash info | | __inout PMSIFILEHASHINFO pHash); // returned file hash info |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetFileHash MsiGetFileHashW | | #define MsiGetFileHash MsiGetFileHashW |
#else | | #else |
#define MsiGetFileHash MsiGetFileHashA | | #define MsiGetFileHash MsiGetFileHashA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 150) | | #endif //(_WIN32_MSI >= 150) |
| | |
#if (_WIN32_MSI >= 150) | | #if (_WIN32_MSI >= 150) |
#ifndef _MSI_NO_CRYPTO | | #ifndef _MSI_NO_CRYPTO |
| | |
HRESULT WINAPI MsiGetFileSignatureInformationA( | | HRESULT WINAPI MsiGetFileSignatureInformationA( |
|
LPCSTR szSignedObjectPath, // path to the signed object | | __in LPCSTR szSignedObjectPath, // path to the signed |
DWORD dwFlags, // special extra error case flags | | object |
PCCERT_CONTEXT *ppcCertContext, // returned signer cert context | | __in DWORD dwFlags, // special extra er |
BYTE *pbHashData, // returned hash buffer, NULL if not | | ror case flags |
desired | | __deref_out PCCERT_CONTEXT *ppcCertContext, // returned signer |
DWORD *pcbHashData); // in/out buffer byte count | | cert context |
| | __out_bcount_opt(*pcbHashData) LPBYTE pbHashData, // returned hash bu |
| | ffer, NULL if not desired |
| | __inout_opt LPDWORD pcbHashData); // in/out buffer by |
| | te count |
HRESULT WINAPI MsiGetFileSignatureInformationW( | | HRESULT WINAPI MsiGetFileSignatureInformationW( |
|
LPCWSTR szSignedObjectPath, // path to the signed object | | __in LPCWSTR szSignedObjectPath, // path to the signe |
DWORD dwFlags, // special extra error case flags | | d object |
PCCERT_CONTEXT *ppcCertContext, // returned signer cert context | | __in DWORD dwFlags, // special extra er |
BYTE *pbHashData, // returned hash buffer, NULL if not | | ror case flags |
desired | | __deref_out PCCERT_CONTEXT *ppcCertContext, // returned signer |
DWORD *pcbHashData); // in/out buffer byte count | | cert context |
| | __out_bcount_opt(*pcbHashData) LPBYTE pbHashData, // returned hash bu |
| | ffer, NULL if not desired |
| | __inout_opt LPDWORD pcbHashData); // in/out buffer by |
| | te count |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetFileSignatureInformation MsiGetFileSignatureInformationW | | #define MsiGetFileSignatureInformation MsiGetFileSignatureInformationW |
#else | | #else |
#define MsiGetFileSignatureInformation MsiGetFileSignatureInformationA | | #define MsiGetFileSignatureInformation MsiGetFileSignatureInformationA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
// By default, when only requesting the certificate context, an invalid hash | | // By default, when only requesting the certificate context, an invalid hash |
// in the digital signature is not a fatal error. Set this flag in the dwFlags | | // in the digital signature is not a fatal error. Set this flag in the dwFlags |
// parameter to make the TRUST_E_BAD_DIGEST error fatal. | | // parameter to make the TRUST_E_BAD_DIGEST error fatal. |
#define MSI_INVALID_HASH_IS_FATAL 0x1 | | #define MSI_INVALID_HASH_IS_FATAL 0x1 |
| | |
#endif// _MSI_NO_CRYPTO | | #endif// _MSI_NO_CRYPTO |
#endif //(_WIN32_MSI >= 150) | | #endif //(_WIN32_MSI >= 150) |
| | |
#if (_WIN32_MSI >= 110) | | #if (_WIN32_MSI >= 110) |
| | |
// examine a shortcut, and retrieve its descriptor information | | // examine a shortcut, and retrieve its descriptor information |
// if available. | | // if available. |
| | |
UINT WINAPI MsiGetShortcutTargetA( | | UINT WINAPI MsiGetShortcutTargetA( |
|
LPCSTR szShortcutPath, // full file path for the shortcut | | __in LPCSTR szShortcutPath, // fu |
LPSTR szProductCode, // returned product code - GUID | | ll file path for the shortcut |
LPSTR szFeatureId, // returned Feature Id. | | __out_ecount_opt(MAX_GUID_CHARS+1) LPSTR szProductCode, // re |
LPSTR szComponentCode); // returned component code - GUID | | turned product code - GUID |
| | __out_ecount_opt(MAX_FEATURE_CHARS+1) LPSTR szFeatureId, // re |
| | turned Feature Id. |
| | __out_ecount_opt(MAX_GUID_CHARS+1) LPSTR szComponentCode); // re |
| | turned component code - GUID |
UINT WINAPI MsiGetShortcutTargetW( | | UINT WINAPI MsiGetShortcutTargetW( |
|
LPCWSTR szShortcutPath, // full file path for the shortcut | | __in LPCWSTR szShortcutPath, // f |
LPWSTR szProductCode, // returned product code - GUID | | ull file path for the shortcut |
LPWSTR szFeatureId, // returned Feature Id. | | __out_ecount_opt(MAX_GUID_CHARS+1) LPWSTR szProductCode, // r |
LPWSTR szComponentCode); // returned component code - GUID | | eturned product code - GUID |
| | __out_ecount_opt(MAX_FEATURE_CHARS+1) LPWSTR szFeatureId, // r |
| | eturned Feature Id. |
| | __out_ecount_opt(MAX_GUID_CHARS+1) LPWSTR szComponentCode); // r |
| | eturned component code - GUID |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiGetShortcutTarget MsiGetShortcutTargetW | | #define MsiGetShortcutTarget MsiGetShortcutTargetW |
#else | | #else |
#define MsiGetShortcutTarget MsiGetShortcutTargetA | | #define MsiGetShortcutTarget MsiGetShortcutTargetA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 110) | | #endif //(_WIN32_MSI >= 110) |
| | |
#if (_WIN32_MSI >= 110) | | #if (_WIN32_MSI >= 110) |
| | |
// checks to see if a product is managed | | // checks to see if a product is managed |
// checks per-machine if called from system context, per-user if from | | // checks per-machine if called from system context, per-user if from |
// user context | | // user context |
UINT WINAPI MsiIsProductElevatedA( | | UINT WINAPI MsiIsProductElevatedA( |
|
LPCSTR szProduct, // product code | | __in LPCSTR szProduct, // product code |
BOOL *pfElevated); // result | | __out BOOL *pfElevated); // result |
// checks to see if a product is managed | | // checks to see if a product is managed |
// checks per-machine if called from system context, per-user if from | | // checks per-machine if called from system context, per-user if from |
// user context | | // user context |
UINT WINAPI MsiIsProductElevatedW( | | UINT WINAPI MsiIsProductElevatedW( |
|
LPCWSTR szProduct, // product code | | __in LPCWSTR szProduct, // product code |
BOOL *pfElevated); // result | | __out BOOL *pfElevated); // result |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiIsProductElevated MsiIsProductElevatedW | | #define MsiIsProductElevated MsiIsProductElevatedW |
#else | | #else |
#define MsiIsProductElevated MsiIsProductElevatedA | | #define MsiIsProductElevated MsiIsProductElevatedA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif //(_WIN32_MSI >= 110) | | #endif //(_WIN32_MSI >= 110) |
| | |
#if (_WIN32_MSI >= 310) | | #if (_WIN32_MSI >= 310) |
| | |
// Caller notifies us of a user who's been moved and results in a sid change. | | // Caller notifies us of a user who's been moved and results in a sid change. |
| | |
|
UINT WINAPI MsiNotifySidChangeA(LPCSTR pOldSid, | | UINT WINAPI MsiNotifySidChangeA(__in LPCSTR pOldSid, |
LPCSTR pNewSid); | | __in LPCSTR pNewSid); |
UINT WINAPI MsiNotifySidChangeW(LPCWSTR pOldSid, | | UINT WINAPI MsiNotifySidChangeW(__in LPCWSTR pOldSid, |
LPCWSTR pNewSid); | | __in LPCWSTR pNewSid); |
#ifdef UNICODE | | #ifdef UNICODE |
#define MsiNotifySidChange MsiNotifySidChangeW | | #define MsiNotifySidChange MsiNotifySidChangeW |
#else | | #else |
#define MsiNotifySidChange MsiNotifySidChangeA | | #define MsiNotifySidChange MsiNotifySidChangeA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#else // _WIN32_MSI < 310 | | #else // _WIN32_MSI < 310 |
| | |
#endif // (_WIN32_MSI >= 310) | | #endif // (_WIN32_MSI >= 310) |
| | |
| | |
skipping to change at line 2057 | | skipping to change at line 2091 |
// LOCALIZE BEGIN: | | // LOCALIZE BEGIN: |
#define ERROR_INSTALL_SOURCE_ABSENT 1612L // The installation source for this p
roduct is not available. Verify that the source exists and that you can access
it. | | #define ERROR_INSTALL_SOURCE_ABSENT 1612L // The installation source for this p
roduct is not available. Verify that the source exists and that you can access
it. |
// LOCALIZE END | | // LOCALIZE END |
#define ERROR_PRODUCT_UNINSTALLED 1614L // Product is uninstalled. | | #define ERROR_PRODUCT_UNINSTALLED 1614L // Product is uninstalled. |
#define ERROR_BAD_QUERY_SYNTAX 1615L // SQL query syntax invalid or unsupp
orted. | | #define ERROR_BAD_QUERY_SYNTAX 1615L // SQL query syntax invalid or unsupp
orted. |
#define ERROR_INVALID_FIELD 1616L // Record field does not exist. | | #define ERROR_INVALID_FIELD 1616L // Record field does not exist. |
#endif | | #endif |
| | |
// LOCALIZE BEGIN: | | // LOCALIZE BEGIN: |
#ifndef ERROR_INSTALL_SERVICE_FAILURE | | #ifndef ERROR_INSTALL_SERVICE_FAILURE |
|
#define ERROR_INSTALL_SERVICE_FAILURE 1601L // The Windows Installer Servic
e could not be accessed. This can occur if you are running Windows in safe mode,
or if the Windows Installer is not correctly installed. Contact your support pe
rsonnel for assistance. | | #define ERROR_INSTALL_SERVICE_FAILURE 1601L // The Windows Installer Servic
e could not be accessed. This can occur if the Windows Installer is not correctl
y installed. Contact your support personnel for assistance. |
#define ERROR_INSTALL_PACKAGE_VERSION 1613L // This installation package ca
nnot be installed by the Windows Installer service. You must install a Windows
service pack that contains a newer version of the Windows Installer service. | | #define ERROR_INSTALL_PACKAGE_VERSION 1613L // This installation package ca
nnot be installed by the Windows Installer service. You must install a Windows
service pack that contains a newer version of the Windows Installer service. |
|
#define ERROR_INSTALL_ALREADY_RUNNING 1618L // Another installation is alre
ady in progress. Complete that installation before proceeding with this install
. | | #define ERROR_INSTALL_ALREADY_RUNNING 1618L // Another program is being ins
talled. Please wait until that installation is complete, and then try installing
this software again. |
#define ERROR_INSTALL_PACKAGE_OPEN_FAILED 1619L // This installation package co
uld not be opened. Verify that the package exists and that you can access it, o
r contact the application vendor to verify that this is a valid Windows Installe
r package. | | #define ERROR_INSTALL_PACKAGE_OPEN_FAILED 1619L // This installation package co
uld not be opened. Verify that the package exists and that you can access it, o
r contact the application vendor to verify that this is a valid Windows Installe
r package. |
#define ERROR_INSTALL_PACKAGE_INVALID 1620L // This installation package co
uld not be opened. Contact the application vendor to verify that this is a vali
d Windows Installer package. | | #define ERROR_INSTALL_PACKAGE_INVALID 1620L // This installation package co
uld not be opened. Contact the application vendor to verify that this is a vali
d Windows Installer package. |
#define ERROR_INSTALL_UI_FAILURE 1621L // There was an error starting
the Windows Installer service user interface. Contact your support personnel. | | #define ERROR_INSTALL_UI_FAILURE 1621L // There was an error starting
the Windows Installer service user interface. Contact your support personnel. |
#define ERROR_INSTALL_LOG_FAILURE 1622L // Error opening installation l
og file. Verify that the specified log file location exists and is writable. | | #define ERROR_INSTALL_LOG_FAILURE 1622L // Error opening installation l
og file. Verify that the specified log file location exists and is writable. |
#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623L // This language of this instal
lation package is not supported by your system. | | #define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623L // This language of this instal
lation package is not supported by your system. |
#define ERROR_INSTALL_PACKAGE_REJECTED 1625L // The system administrator has
set policies to prevent this installation. | | #define ERROR_INSTALL_PACKAGE_REJECTED 1625L // The system administrator has
set policies to prevent this installation. |
// LOCALIZE END | | // LOCALIZE END |
| | |
#define ERROR_FUNCTION_NOT_CALLED 1626L // Function could not be execut
ed. | | #define ERROR_FUNCTION_NOT_CALLED 1626L // Function could not be execut
ed. |
#define ERROR_FUNCTION_FAILED 1627L // Function failed during execu
tion. | | #define ERROR_FUNCTION_FAILED 1627L // Function failed during execu
tion. |
| | |
skipping to change at line 2187 | | skipping to change at line 2221 |
#define ERROR_INVALID_PATCH_XML 1650L // The XML patch data is inval
id. | | #define ERROR_INVALID_PATCH_XML 1650L // The XML patch data is inval
id. |
#endif | | #endif |
// LOCALIZE END | | // LOCALIZE END |
| | |
// LOCALIZE BEGIN: | | // LOCALIZE BEGIN: |
#ifndef ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT | | #ifndef ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT |
#define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT 1651L // Windows Installer does n
ot permit patching of managed advertised products. At least one feature of the p
roduct must be installed before applying the patch. | | #define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT 1651L // Windows Installer does n
ot permit patching of managed advertised products. At least one feature of the p
roduct must be installed before applying the patch. |
#endif | | #endif |
// LOCALIZE END | | // LOCALIZE END |
| | |
|
| | // The following error codes are returned from MSI 4.0 and later |
| | |
| | // LOCALIZE BEGIN: |
| | #ifndef ERROR_INSTALL_SERVICE_SAFEBOOT |
| | #define ERROR_INSTALL_SERVICE_SAFEBOOT 1652L // The Windows Installer servic |
| | e is not accessible in Safe Mode. Please try again when your computer is not in |
| | Safe Mode or you can use System Restore to return your machine to a previous goo |
| | d state. |
| | #endif |
| | // LOCALIZE END |
| | |
#endif // _MSI_H_ | | #endif // _MSI_H_ |
| | |
End of changes. 163 change blocks. |
758 lines changed or deleted | | 1141 lines changed or added |
|