|
|
/*****************************************************************************\
* * * msip.h - - Interface for internal access to Installer Service * * * * Version 2.0 * * * * NOTES: All buffers sizes are TCHAR count, null included only on input * * Return argument pointers may be null if not interested in value * * * * Copyright (c) 1996-2001, Microsoft Corp. All rights reserved. * * * \*****************************************************************************/
#ifndef _MSIP_H_
#define _MSIP_H_
#ifndef _WIN32_MSI
#if (_WIN32_WINNT >= 0x0501)
#define _WIN32_MSI 200
#elif (_WIN32_WINNT >= 0x0500)
#define _WIN32_MSI 110
#else
#define _WIN32_MSI 100
#endif //_WIN32_WINNT
#endif // !_WIN32_MSI
#if (_WIN32_MSI >= 150)
#define INSTALLMODE_NODETECTION_ANY (INSTALLMODE)-4 // provide any, if available, supported internally for MsiProvideAssembly
#endif
#if (_WIN32_MSI >= 150)
typedef enum tagMIGRATIONOPTIONS { migQuiet = 1 << 0, migMsiTrust10PackagePolicyOverride = 1 << 1, } MIGRATIONOPTIONS; #endif
#define INSTALLPROPERTY_ADVTFLAGS __TEXT("AdvertiseFlags")
#ifdef __cplusplus
extern "C" { #endif
// Return a product code for a product installed from an installer package
UINT WINAPI MsiGetProductCodeFromPackageCodeA( LPCSTR szPackageCode, // package code
LPSTR lpProductBuf39); // buffer for product code string GUID, 39 chars
UINT WINAPI MsiGetProductCodeFromPackageCodeW( LPCWSTR szPackageCode, // package code
LPWSTR lpProductBuf39); // buffer for product code string GUID, 39 chars
#ifdef UNICODE
#define MsiGetProductCodeFromPackageCode MsiGetProductCodeFromPackageCodeW
#else
#define MsiGetProductCodeFromPackageCode MsiGetProductCodeFromPackageCodeA
#endif // !UNICODE
// --------------------------------------------------------------------------
// Functions accepting a component descriptor, consisting of
// a product code concatenated with a feature ID and component ID.
// For efficiency, feature and component may be omitted if unambiguous
// --------------------------------------------------------------------------
// Return full component path given a fully-qualified component descriptor
// separates the tokens from the descriptor and calls MsiProvideComponent
UINT WINAPI MsiProvideComponentFromDescriptorA( LPCSTR szDescriptor, // product,feature,component info
LPSTR lpPathBuf, // returned path, NULL if not desired
DWORD *pcchPathBuf, // in/out buffer character count
DWORD *pcchArgsOffset); // returned offset of args in descriptor
UINT WINAPI MsiProvideComponentFromDescriptorW( LPCWSTR szDescriptor, // product,feature,component info
LPWSTR lpPathBuf, // returned path, NULL if not desired
DWORD *pcchPathBuf, // in/out buffer character count
DWORD *pcchArgsOffset); // returned offset of args in descriptor
#ifdef UNICODE
#define MsiProvideComponentFromDescriptor MsiProvideComponentFromDescriptorW
#else
#define MsiProvideComponentFromDescriptor MsiProvideComponentFromDescriptorA
#endif // !UNICODE
// Force the installed state for a product feature from a descriptor
UINT WINAPI MsiConfigureFeatureFromDescriptorA( LPCSTR szDescriptor, // product and feature, component ignored
INSTALLSTATE eInstallState); // local/source/default/absent
UINT WINAPI MsiConfigureFeatureFromDescriptorW( LPCWSTR szDescriptor, // product and feature, component ignored
INSTALLSTATE eInstallState); // local/source/default/absent
#ifdef UNICODE
#define MsiConfigureFeatureFromDescriptor MsiConfigureFeatureFromDescriptorW
#else
#define MsiConfigureFeatureFromDescriptor MsiConfigureFeatureFromDescriptorA
#endif // !UNICODE
// Reinstall product or feature using a descriptor as the specification
UINT WINAPI MsiReinstallFeatureFromDescriptorA( LPCSTR szDescriptor, // product and feature, component ignored
DWORD szReinstallMode); // one or more REINSTALLMODE modes
UINT WINAPI MsiReinstallFeatureFromDescriptorW( LPCWSTR szDescriptor, // product and feature, component ignored
DWORD szReinstallMode); // one or more REINSTALLMODE modes
#ifdef UNICODE
#define MsiReinstallFeatureFromDescriptor MsiReinstallFeatureFromDescriptorW
#else
#define MsiReinstallFeatureFromDescriptor MsiReinstallFeatureFromDescriptorA
#endif // !UNICODE
// Query a feature's state using a descriptor as the specification
INSTALLSTATE WINAPI MsiQueryFeatureStateFromDescriptorA( LPCSTR szDescriptor); // product and feature, component ignored
INSTALLSTATE WINAPI MsiQueryFeatureStateFromDescriptorW( LPCWSTR szDescriptor); // product and feature, component ignored
#ifdef UNICODE
#define MsiQueryFeatureStateFromDescriptor MsiQueryFeatureStateFromDescriptorW
#else
#define MsiQueryFeatureStateFromDescriptor MsiQueryFeatureStateFromDescriptorA
#endif // !UNICODE
UINT WINAPI MsiDecomposeDescriptorA( LPCSTR szDescriptor, LPSTR szProductCode, LPSTR szFeatureId, LPSTR szComponentCode, DWORD* pcchArgsOffset); UINT WINAPI MsiDecomposeDescriptorW( LPCWSTR szDescriptor, LPWSTR szProductCode, LPWSTR szFeatureId, LPWSTR szComponentCode, DWORD* pcchArgsOffset); #ifdef UNICODE
#define MsiDecomposeDescriptor MsiDecomposeDescriptorW
#else
#define MsiDecomposeDescriptor MsiDecomposeDescriptorA
#endif // !UNICODE
// Load a string resource, preferring a specified language
// Behaves like LoadString if 0 passed as language
// Truncates string as necessary to fit into buffer (like LoadString)
// Returns the codepage of the string, or 0 if string is not found
UINT WINAPI MsiLoadStringA( HINSTANCE hInstance, // handle of module containing string resource
UINT uID, // resource identifier
LPSTR lpBuffer, // address of buffer for resource
int nBufferMax, // size of buffer
WORD wLanguage); // preferred resource language
UINT WINAPI MsiLoadStringW( HINSTANCE hInstance, // handle of module containing string resource
UINT uID, // resource identifier
LPWSTR lpBuffer, // address of buffer for resource
int nBufferMax, // size of buffer
WORD wLanguage); // preferred resource language
#ifdef UNICODE
#define MsiLoadString MsiLoadStringW
#else
#define MsiLoadString MsiLoadStringA
#endif // !UNICODE
// MessageBox implementation that allows language information to be specified
// MB_SYSTEMMODAL and MB_TASKMODAL are not supported, modality handled by parent hWnd
// If no parent window is specified, the current context window will be used,
// which is itself parented to the window set by SetInternalUI.
int WINAPI MsiMessageBoxA( HWND hWnd, // parent window handle, 0 to use that of current context
LPCSTR lpText, // message text
LPCSTR lpCaption, // caption, must be neutral or in system codepage
UINT uiType, // standard MB types, icons, and def buttons
UINT uiCodepage, // codepage of message text, used to set font charset
LANGID iLangId); // language to use for button text
int WINAPI MsiMessageBoxW( HWND hWnd, // parent window handle, 0 to use that of current context
LPCWSTR lpText, // message text
LPCWSTR lpCaption, // caption, must be neutral or in system codepage
UINT uiType, // standard MB types, icons, and def buttons
UINT uiCodepage, // codepage of message text, used to set font charset
LANGID iLangId); // language to use for button text
#ifdef UNICODE
#define MsiMessageBox MsiMessageBoxW
#else
#define MsiMessageBox MsiMessageBoxA
#endif // !UNICODE
#if (_WIN32_MSI >= 150)
// Creates the %systemroot%\Installer directory with secure ACLs
// Verifies the ownership of the %systemroot%\Installer directory if it exists
// If ownership is not system or admin, the directory is deleted and recreated
// dwReserved is for future use and must be 0
UINT WINAPI MsiCreateAndVerifyInstallerDirectory(DWORD dwReserved);
#endif //(_WIN32_MSI >= 150)
#if (_WIN32_MSI >= 150)
// Caller notifies us of a user who's been moved and results sid change. This
// internal API is only called by LoadUserProfile.
UINT WINAPI MsiNotifySidChangeA(LPCSTR pOldSid, LPCSTR pNewSid); UINT WINAPI MsiNotifySidChangeW(LPCWSTR pOldSid, LPCWSTR pNewSid); #ifdef UNICODE
#define MsiNotifySidChange MsiNotifySidChangeW
#else
#define MsiNotifySidChange MsiNotifySidChangeA
#endif // !UNICODE
#endif //(_WIN32_MSI >= 150)
#if (_WIN32_MSI >= 150)
// Called by DeleteProfile to clean up MSI data when cleaning up a user's
// profile.
UINT WINAPI MsiDeleteUserDataA(LPCSTR pSid, LPCSTR pComputerName, LPVOID pReserved); UINT WINAPI MsiDeleteUserDataW(LPCWSTR pSid, LPCWSTR pComputerName, LPVOID pReserved); #ifdef UNICODE
#define MsiDeleteUserData MsiDeleteUserDataW
#else
#define MsiDeleteUserData MsiDeleteUserDataA
#endif // !UNICODE
#endif //(_WIN32_MSI >= 150)
#if (_WIN32_MSI >= 150)
DWORD WINAPI Migrate10CachedPackagesA( LPCSTR szProductCode, // Product Code GUID to migrate
LPCSTR szUser, // Domain\User to migrate packages for
LPCSTR szAlternativePackage, // Package to cache if one can't be automatically found - recommended
const MIGRATIONOPTIONS migOptions); // Options for re-caching.
DWORD WINAPI Migrate10CachedPackagesW( LPCWSTR szProductCode, // Product Code GUID to migrate
LPCWSTR szUser, // Domain\User to migrate packages for
LPCWSTR szAlternativePackage, // Package to cache if one can't be automatically found - recommended
const MIGRATIONOPTIONS migOptions); // Options for re-caching.
#ifdef UNICODE
#define Migrate10CachedPackages Migrate10CachedPackagesW
#else
#define Migrate10CachedPackages Migrate10CachedPackagesA
#endif // !UNICODE
#endif //(_WIN32_MSI >= 150)
#ifdef __cplusplus
} #endif
#endif // _MSIP_H_
|