263 lines
10 KiB
C
263 lines
10 KiB
C
|
|
||
|
/*****************************************************************************\
|
||
|
* *
|
||
|
* 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_
|