MsiOpenPackageEx Function

Windows Installer

MsiOpenPackageEx Function

The MsiOpenPackageEx function opens a package to use with functions that access the product database. The MsiCloseHandle function must be called with the handle when the handle is no longer needed.

Note  Initialize COM on the same thread before calling the MsiOpenPackage, MsiOpenPackageEx, or MsiOpenProduct function.

Syntax

C++UINT WINAPI MsiOpenPackageEx(
  __in   LPCTSTR szPackagePath,
  __in   DWORD dwOptions,
  __out  MSIHANDLE *hProduct
);

Parameters

szPackagePath [in]

The path to the package.

dwOptions [in]

The bit flags to indicate whether or not to ignore the computer state. Pass in 0 (zero) to use MsiOpenPackage behavior.

Constant Meaning
MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE
1

Ignore the computer state when creating the product handle.

 

hProduct [out]

A pointer to a variable that receives the product handle.

Return Value

Value Meaning
ERROR_BAD_CONFIGURATION

The configuration information is corrupt.

ERROR_INSTALL_FAILURE

The product could not be opened.

ERROR_INSTALL_REMOTE_PROHIBITED

Windows Installer does not permit installation from a remote desktop connection.

ERROR_INVALID_PARAMETER

An invalid parameter is passed to the function.

ERROR_SUCCESS

The function completes successfully.

 

If this function fails, it may return a system error code. For more information, see System Error Codes.

Remarks

To create a restricted product handle that is independent of the current machine state and incapable of changing the current machine state, use MsiOpenPackageEx with MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE set in dwOptions.

Note that if dwOptions is MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE or 1, MsiOpenPackageEx ignores the current machine state when creating the product handle. If the value of dwOptions is 0, MsiOpenPackageEx is the same as MsiOpenPackage and creates a product handle that is dependent upon whether the package specified by szPackagePath is already installed on the computer.

The restricted handle created by using MsiOpenPackageEx with MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE only permits execution of dialogs, a subset of the standard actions, and custom actions that set properties ( Custom Action Type 35, Custom Action Type 51, and Custom Action Type 19). The restricted handle prevents the use of custom actions that run Dynamic-Link Libraries, Executable Files or Scripts.

You can call MsiDoAction on the following standard actions using the restricted handle. All other actions return ERROR_FUNCTION_NOT_CALLED if called with the restricted handle.

The MsiCloseHandle function must be called when the handle is not needed.

Requirements

VersionWindows Installer 5.0 on Windows Server 2008 R2 or Windows 7. Windows Installer 4.0 or Windows Installer 4.5 on Windows Server 2008 or Windows Vista. Windows Installer on Windows Server 2003, Windows XP, and Windows 2000. See the Windows Installer Run-Time Requirements for information about the minimum Windows service pack that is required by a Windows Installer version.
HeaderMsi.h
LibraryMsi.lib
DLLMsi.dll
Unicode and ANSI namesMsiOpenPackageExW (Unicode) and MsiOpenPackageExA (ANSI)

Send comments about this topic to Microsoft

Build date: 8/13/2009

© 2009 Microsoft Corporation. All rights reserved.