com.sun.jna.platform.win32.Msi Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jna-platform Show documentation
Show all versions of jna-platform Show documentation
Java Native Access Platform
/*
* The contents of this file is dual-licensed under 2
* alternative Open Source/Free licenses: LGPL 2.1 or later and
* Apache License 2.0. (starting with JNA version 4.0.0).
*
* You can freely decide which license you want to apply to
* the project.
*
* You may obtain a copy of the LGPL License at:
*
* http://www.gnu.org/licenses/licenses.html
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "LGPL2.1".
*
* You may obtain a copy of the Apache License at:
*
* http://www.apache.org/licenses/
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "AL2.0".
*/
package com.sun.jna.platform.win32;
import com.sun.jna.Native;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
/**
* Provides access to the w32 MSI installer library.
*/
public interface Msi extends StdCallLibrary {
Msi INSTANCE = Native.loadLibrary("msi", Msi.class, W32APIOptions.DEFAULT_OPTIONS);
/**
* The component being requested is disabled on the computer.
*/
int INSTALLSTATE_NOTUSED = -7;
/**
* The configuration data is corrupt.
*/
int INSTALLSTATE_BADCONFIG = -6;
/**
* The installation is suspended or in progress.
*/
int INSTALLSTATE_INCOMPLETE = -5;
/**
* The feature must run from the source, and the source is unavailable.
*/
int INSTALLSTATE_SOURCEABSENT = -4;
/**
* The return buffer is full.
*/
int INSTALLSTATE_MOREDATA = -3;
/**
* An invalid parameter was passed to the function.
*/
int INSTALLSTATE_INVALIDARG = -2;
/**
* An unrecognized product or feature was specified.
*/
int INSTALLSTATE_UNKNOWN = -1;
/**
* The feature is broken.
*/
int INSTALLSTATE_BROKEN = 0;
/**
* The advertised feature.
*/
int INSTALLSTATE_ADVERTISED = 1;
/**
* The component is being removed.
*/
int INSTALLSTATE_REMOVED = 1;
/**
* The feature was uninstalled.
*/
int INSTALLSTATE_ABSENT = 2;
/**
* The feature was installed on the local drive.
*/
int INSTALLSTATE_LOCAL = 3;
/**
* The feature must run from the source, CD-ROM, or network.
*/
int INSTALLSTATE_SOURCE = 4;
/**
* The feature is installed in the default location: local or source.
*/
int INSTALLSTATE_DEFAULT = 5;
/**
* The MsiGetComponentPath function returns the full path to an installed component. If the key path for the
* component is a registry key then the registry key is returned.
*
* @param szProduct
* Specifies the product code for the client product.
*
* @param szComponent
* Specifies the component ID of the component to be located.
*
* @param lpPathBuf
* Pointer to a variable that receives the path to the component. This parameter can be null. If the component is
* a registry key, the registry roots are represented numerically. If this is a registry subkey path, there is a
* backslash at the end of the Key Path. If this is a registry value key path, there is no backslash at the end.
* For example, a registry path on a 32-bit operating system of HKEY_CURRENT_USER\SOFTWARE\Microsoft is returned
* as "01:\SOFTWARE\Microsoft\".
*
* @param pcchBuf
* Pointer to a variable that specifies the size, in characters, of the buffer pointed to by the lpPathBuf
* parameter. On input, this is the full size of the buffer, including a space for a terminating null character.
* If the buffer passed in is too small, the count returned does not include the terminating null character.
*
* If lpPathBuf is null, pcchBuf can be null.
*
* @return
* The MsiGetComponentPath function returns the following values.
* INSTALLSTATE_NOTUSED - The component being requested is disabled on the computer.
* INSTALLSTATE_ABSENT - The component is not installed.
* INSTALLSTATE_INVALIDARG - One of the function parameters is invalid.
* INSTALLSTATE_LOCAL - The component is installed locally.
* INSTALLSTATE_SOURCE - The component is installed to run from source.
* INSTALLSTATE_SOURCEABSENT - The component source is inaccessible.
* INSTALLSTATE_UNKNOWN - The product code or component ID is unknown.
*/
int MsiGetComponentPath(String szProduct, String szComponent, char[] lpPathBuf, IntByReference pcchBuf);
/**
* The MsiLocateComponent function returns the 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.
*
* @param szComponent
* Specifies the component ID of the component to be located.
*
* @param lpPathBuf
* Pointer to a variable that receives the path to the component. The variable includes the terminating null
* character.
*
* @param pcchBuf
* Pointer to a variable that specifies the size, in characters, of the buffer pointed to by the lpPathBuf
* parameter. On input, this is the full size of the buffer, including a space for a terminating null character.
* Upon success of the MsiLocateComponent function, the variable pointed to by pcchBuf contains the count of
* characters not including the terminating null character. If the size of the buffer passed in is too small, the
* function returns INSTALLSTATE_MOREDATA.
*
* If lpPathBuf is null, pcchBuf can be null.
*
* @return
* The MsiGetComponentPath function returns the following values.
* INSTALLSTATE_NOTUSED - The component being requested is disabled on the computer.
* INSTALLSTATE_ABSENT - The component is not installed.
* INSTALLSTATE_INVALIDARG - One of the function parameters is invalid.
* INSTALLSTATE_LOCAL - The component is installed locally.
* INSTALLSTATE_MOREDATA - The buffer provided was too small.
* INSTALLSTATE_SOURCE - The component is installed to run from source.
* INSTALLSTATE_SOURCEABSENT - The component source is inaccessible.
* INSTALLSTATE_UNKNOWN - The product code or component ID is unknown.
*/
int MsiLocateComponent(String szComponent, char[] lpPathBuf, IntByReference pcchBuf);
/**
* The MsiGetProductCode function returns the product code of an application by using the component code of an
* installed or advertised component of the application. During initialization, an application must determine under
* which product code it has been installed or advertised.
*
* @param szComponent
* This parameter specifies the component code of a component that has been installed by the application. This
* will be typically the component code of the component containing the executable file of the application.
*
* @param lpProductBuf
* Pointer to a buffer that receives the product code. This buffer must be 39 characters long. The first 38
* characters are for the GUID, and the last character is for the terminating null character.
*
* @return
* ERROR_BAD_CONFIGURATION - The configuration data is corrupt.
* ERROR_INSTALL_FAILURE - The product code could not be determined.
* ERROR_INVALID_PARAMETER - An invalid parameter was passed to the function.
* ERROR_SUCCESS - The function completed successfully.
* ERROR_UNKNOWN_COMPONENT - The specified component is unknown.
*/
int MsiGetProductCode(String szComponent, char[] lpProductBuf);
/**
* The MsiEnumComponents function enumerates the installed components for all products. This function retrieves one
* component code each time it is called.
*
* @param iComponentIndex
* Specifies the index of the component to retrieve. This parameter should be zero for the first call to the
* MsiEnumComponents function and then incremented for subsequent calls. Because components are not ordered, any
* new component has an arbitrary index. This means that the function can return components in any order.
*
* @param lpComponentBuf
* Pointer to a buffer that receives the component code. This buffer must be 39 characters long. The first 38
* characters are for the GUID, and the last character is for the terminating null character.
*
* @return
* ERROR_BAD_CONFIGURATION - The configuration data is corrupt.
* ERROR_INVALID_PARAMETER - An invalid parameter was passed to the function.
* ERROR_NO_MORE_ITEMS - There are no components to return.
* ERROR_NOT_ENOUGH_MEMORY - The system does not have enough memory to complete the operation. Available with
* Windows Server 2003.
* ERROR_SUCCESS - A value was enumerated.
*/
int MsiEnumComponents(WinDef.DWORD iComponentIndex, char[] lpComponentBuf);
}