📄 msi.h
字号:
DWORD *pcchValueBuf); // in/out buffer character count
#ifdef UNICODE
#define MsiGetProductProperty MsiGetProductPropertyW
#else
#define MsiGetProductProperty MsiGetProductPropertyA
#endif // !UNICODE
// Determine whether a file is a package
// Returns ERROR_SUCCESS if file is a package.
UINT WINAPI MsiVerifyPackageA(
LPCSTR szPackagePath); // location of package
UINT WINAPI MsiVerifyPackageW(
LPCWSTR szPackagePath); // location of package
#ifdef UNICODE
#define MsiVerifyPackage MsiVerifyPackageW
#else
#define MsiVerifyPackage MsiVerifyPackageA
#endif // !UNICODE
// Provide descriptive information for product feature: title and description.
// Returns the install level for the feature, or -1 if feature is unknown.
// 0 = feature is not available on this machine
// 1 = highest priority, feature installed if parent is installed
// >1 = decreasing priority, feature installation based on InstallLevel property
UINT WINAPI MsiGetFeatureInfoA(
MSIHANDLE hProduct, // product handle obtained from MsiOpenProduct
LPCSTR szFeature, // feature name
DWORD *lpAttributes, // attribute flags for the feature, using INSTALLFEATUREATTRIBUTE
LPSTR lpTitleBuf, // returned localized name, NULL if not desired
DWORD *pcchTitleBuf, // in/out buffer character count
LPSTR lpHelpBuf, // returned description, NULL if not desired
DWORD *pcchHelpBuf); // in/out buffer character count
UINT WINAPI MsiGetFeatureInfoW(
MSIHANDLE hProduct, // product handle obtained from MsiOpenProduct
LPCWSTR szFeature, // feature name
DWORD *lpAttributes, // attribute flags for the feature, using INSTALLFEATUREATTRIBUTE
LPWSTR lpTitleBuf, // returned localized name, NULL if not desired
DWORD *pcchTitleBuf, // in/out buffer character count
LPWSTR lpHelpBuf, // returned description, NULL if not desired
DWORD *pcchHelpBuf); // in/out buffer character count
#ifdef UNICODE
#define MsiGetFeatureInfo MsiGetFeatureInfoW
#else
#define MsiGetFeatureInfo MsiGetFeatureInfoA
#endif // !UNICODE
// --------------------------------------------------------------------------
// Functions to access or install missing components and files.
// These should be used as a last resort.
// --------------------------------------------------------------------------
// Install a component unexpectedly missing, provided only for error recovery
// This would typically occur due to failue to establish feature availability
// The product feature having the smallest incremental cost is installed
UINT WINAPI MsiInstallMissingComponentA(
LPCSTR szProduct, // product code
LPCSTR szComponent, // component Id, string GUID
INSTALLSTATE eInstallState); // local/source/default, absent invalid
UINT WINAPI MsiInstallMissingComponentW(
LPCWSTR szProduct, // product code
LPCWSTR szComponent, // component Id, string GUID
INSTALLSTATE eInstallState); // local/source/default, absent invalid
#ifdef UNICODE
#define MsiInstallMissingComponent MsiInstallMissingComponentW
#else
#define MsiInstallMissingComponent MsiInstallMissingComponentA
#endif // !UNICODE
// Install a file unexpectedly missing, provided only for error recovery
// This would typically occur due to failue to establish feature availability
// The missing component is determined from the product's File table, then
// the product feature having the smallest incremental cost is installed
UINT WINAPI MsiInstallMissingFileA(
LPCSTR szProduct, // product code
LPCSTR szFile); // file name, without path
UINT WINAPI MsiInstallMissingFileW(
LPCWSTR szProduct, // product code
LPCWSTR szFile); // file name, without path
#ifdef UNICODE
#define MsiInstallMissingFile MsiInstallMissingFileW
#else
#define MsiInstallMissingFile MsiInstallMissingFileA
#endif // !UNICODE
// Return full path to an installed component without a product code
// This function attempts to determine the product using MsiGetProductCode
// but is not guaranteed to find the correct product for the caller.
// MsiGetComponentPath should always be called when possible.
INSTALLSTATE WINAPI MsiLocateComponentA(
LPCSTR szComponent, // component Id, string GUID
LPSTR lpPathBuf, // returned path
DWORD *pcchBuf); // in/out buffer character count
INSTALLSTATE WINAPI MsiLocateComponentW(
LPCWSTR szComponent, // component Id, string GUID
LPWSTR lpPathBuf, // returned path
DWORD *pcchBuf); // in/out buffer character count
#ifdef UNICODE
#define MsiLocateComponent MsiLocateComponentW
#else
#define MsiLocateComponent MsiLocateComponentA
#endif // !UNICODE
#if (_WIN32_MSI >= 110)
// --------------------------------------------------------------------------
// Functions used to manage the list of valid sources.
// --------------------------------------------------------------------------
// 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
// the user name indicates the per-machine install.
UINT WINAPI MsiSourceListClearAllA(
LPCSTR szProduct, // product code
LPCSTR szUserName, // user name or NULL/empty for per-machine
DWORD dwReserved); // reserved - must be 0
UINT WINAPI MsiSourceListClearAllW(
LPCWSTR szProduct, // product code
LPCWSTR szUserName, // user name or NULL/empty for per-machine
DWORD dwReserved); // reserved - must be 0
#ifdef UNICODE
#define MsiSourceListClearAll MsiSourceListClearAllW
#else
#define MsiSourceListClearAll MsiSourceListClearAllA
#endif // !UNICODE
// 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
// value for the user name indicates the per-machine install.
UINT WINAPI MsiSourceListAddSourceA(
LPCSTR szProduct, // product code
LPCSTR szUserName, // user name or NULL/empty for per-machine
DWORD dwReserved, // reserved - must be 0
LPCSTR szSource); // new source
UINT WINAPI MsiSourceListAddSourceW(
LPCWSTR szProduct, // product code
LPCWSTR szUserName, // user name or NULL/empty for per-machine
DWORD dwReserved, // reserved - must be 0
LPCWSTR szSource); // new source
#ifdef UNICODE
#define MsiSourceListAddSource MsiSourceListAddSourceW
#else
#define MsiSourceListAddSource MsiSourceListAddSourceA
#endif // !UNICODE
// Forces the installer to reevaluate the list of sources the next time that
// the specified product needs a source.
UINT WINAPI MsiSourceListForceResolutionA(
LPCSTR szProduct, // product code
LPCSTR szUserName, // user name or NULL/empty for per-machine
DWORD dwReserved); // reserved - must be 0
UINT WINAPI MsiSourceListForceResolutionW(
LPCWSTR szProduct, // product code
LPCWSTR szUserName, // user name or NULL/empty for per-machine
DWORD dwReserved); // reserved - must be 0
#ifdef UNICODE
#define MsiSourceListForceResolution MsiSourceListForceResolutionW
#else
#define MsiSourceListForceResolution MsiSourceListForceResolutionA
#endif // !UNICODE
#endif //(_WIN32_MSI >= 110)
// --------------------------------------------------------------------------
// Utility functions
// --------------------------------------------------------------------------
// Give the version string and language for a specified file
UINT WINAPI MsiGetFileVersionA(
LPCSTR szFilePath, // path to the file
LPSTR lpVersionBuf, // returned version string
DWORD *pcchVersionBuf, // in/out buffer byte count
LPSTR lpLangBuf, // returned language string
DWORD *pcchLangBuf); // in/out buffer byte count
UINT WINAPI MsiGetFileVersionW(
LPCWSTR szFilePath, // path to the file
LPWSTR lpVersionBuf, // returned version string
DWORD *pcchVersionBuf, // in/out buffer byte count
LPWSTR lpLangBuf, // returned language string
DWORD *pcchLangBuf); // in/out buffer byte count
#ifdef UNICODE
#define MsiGetFileVersion MsiGetFileVersionW
#else
#define MsiGetFileVersion MsiGetFileVersionA
#endif // !UNICODE
#ifdef __cplusplus
}
#endif
// --------------------------------------------------------------------------
// Error codes for installer access functions - until merged to winerr.h
// --------------------------------------------------------------------------
#ifndef ERROR_INSTALL_FAILURE
#define ERROR_INSTALL_USEREXIT 1602L // User cancel installation.
#define ERROR_INSTALL_FAILURE 1603L // Fatal error during installation.
#define ERROR_INSTALL_SUSPEND 1604L // Installation suspended, incomplete.
#define ERROR_UNKNOWN_PRODUCT 1605L // This action is only valid for products that are currently installed.
#define ERROR_UNKNOWN_FEATURE 1606L // Feature ID not registered.
#define ERROR_UNKNOWN_COMPONENT 1607L // Component ID not registered.
#define ERROR_UNKNOWN_PROPERTY 1608L // Unknown property.
#define ERROR_INVALID_HANDLE_STATE 1609L // Handle is in an invalid state.
#define ERROR_BAD_CONFIGURATION 1610L // The configuration data for this product is corrupt. Contact your support personnel.
#define ERROR_INDEX_ABSENT 1611L // Component qualifier not present.
#define ERROR_INSTALL_SOURCE_ABSENT 1612L // The installation source for this product is not available. Verify that the source exists and that you can access it.
#define ERROR_PRODUCT_UNINSTALLED 1614L // Product is uninstalled.
#define ERROR_BAD_QUERY_SYNTAX 1615L // SQL query syntax invalid or unsupported.
#define ERROR_INVALID_FIELD 1616L // Record field does not exist.
#endif
#ifndef ERROR_INSTALL_SERVICE_FAILURE
#define ERROR_INSTALL_SERVICE_FAILURE 1601L // The Windows Installer service could not be accessed. Contact your support personnel to verify that the Windows Installer service is properly registered.
#define ERROR_INSTALL_PACKAGE_VERSION 1613L // This installation package cannot 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 already in progress. Complete that installation before proceeding with this install.
#define ERROR_INSTALL_PACKAGE_OPEN_FAILED 1619L // This installation package could not be opened. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.
#define ERROR_INSTALL_PACKAGE_INVALID 1620L // This installation package could not be opened. Contact the application vendor to verify that this is a valid 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_LOG_FAILURE 1622L // Error opening installation log file. Verify that the specified log file location exists and is writable.
#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623L // This language of this installation 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_FUNCTION_NOT_CALLED 1626L // Function could not be executed.
#define ERROR_FUNCTION_FAILED 1627L // Function failed during execution.
#define ERROR_INVALID_TABLE 1628L // Invalid or unknown table specified.
#define ERROR_DATATYPE_MISMATCH 1629L // Data supplied is of wrong type.
#define ERROR_UNSUPPORTED_TYPE 1630L // Data of this type is not supported.
#define ERROR_CREATE_FAILED 1631L // The Windows Installer service failed to start. Contact your support personnel.
#endif
#ifndef ERROR_INSTALL_TEMP_UNWRITABLE
#define ERROR_INSTALL_TEMP_UNWRITABLE 1632L // The Temp folder is on a drive that is full or is inaccessible. Free up space on the drive or verify that you have write permission on the Temp folder.
#endif
#ifndef ERROR_INSTALL_PLATFORM_UNSUPPORTED
#define ERROR_INSTALL_PLATFORM_UNSUPPORTED 1633L // This installation package is not supported by this processor type. Contact your product vendor.
#endif
#ifndef ERROR_INSTALL_NOTUSED
#define ERROR_INSTALL_NOTUSED 1634L // Component not used on this machine
#endif
#ifndef ERROR_INSTALL_TRANSFORM_FAILURE
#define ERROR_INSTALL_TRANSFORM_FAILURE 1624L // Error applying transforms. Verify that the specified transform paths are valid.
#endif
#ifndef ERROR_PATCH_PACKAGE_OPEN_FAILED
#define ERROR_PATCH_PACKAGE_OPEN_FAILED 1635L // This patch package could not be opened. Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package.
#define ERROR_PATCH_PACKAGE_INVALID 1636L // This patch package could not be opened. Contact the application vendor to verify that this is a valid Windows Installer patch package.
#define ERROR_PATCH_PACKAGE_UNSUPPORTED 1637L // This patch package cannot be processed by the Windows Installer service. You must install a Windows service pack that contains a newer version of the Windows Installer service.
#endif
#ifndef ERROR_PRODUCT_VERSION
#define ERROR_PRODUCT_VERSION 1638L // Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.
#endif
#ifndef ERROR_INVALID_COMMAND_LINE
#define ERROR_INVALID_COMMAND_LINE 1639L // Invalid command line argument. Consult the Windows Installer SDK for detailed command line help.
#endif
// The following three error codes are not returned from MSI version 1.0
#ifndef ERROR_INSTALL_REMOTE_DISALLOWED
#define ERROR_INSTALL_REMOTE_DISALLOWED 1640L // Configuration of this product is not permitted from remote sessions. Contact your administrator.
#endif
#ifndef ERROR_SUCCESS_REBOOT_INITIATED
#define ERROR_SUCCESS_REBOOT_INITIATED 1641L // The requested operation completed successfully. The system will be restarted so the changes can take effect.
#endif
#ifndef ERROR_PATCH_TARGET_NOT_FOUND
#define ERROR_PATCH_TARGET_NOT_FOUND 1642L // The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch.
#endif
#pragma option pop /*P_O_Pop*/
#endif // _MSI_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -