Función MsiGetTargetPathA (msiquery.h)

La función MsiGetTargetPath devuelve la ruta de acceso de destino completa de una carpeta de la tabla Directory.

Sintaxis

UINT MsiGetTargetPathA(
  [in]      MSIHANDLE hInstall,
  [in]      LPCSTR    szFolder,
  [out]     LPSTR     szPathBuf,
  [in, out] LPDWORD   pcchPathBuf
);

Parámetros

[in] hInstall

Identificador de la instalación proporcionada a una acción personalizada de DLL o obtenida a través de MsiOpenPackage, MsiOpenPackageEx o MsiOpenProduct.

[in] szFolder

Cadena terminada en NULL que especifica un registro de la tabla Directory. Si el directorio es un directorio raíz, puede ser un valor de la columna DefaultDir. De lo contrario, debe ser un valor de la columna Directorio.

[out] szPathBuf

Puntero al búfer que recibe la ruta de acceso de destino completa terminada en null. No intente determinar el tamaño del búfer pasando un valor NULL (value=0) para szPathBuf. Puede obtener el tamaño del búfer pasando una cadena vacía (por ejemplo, ""). A continuación, la función devuelve ERROR_MORE_DATA y pcchPathBuf contiene el tamaño de búfer necesario en TCHAR, no incluido el carácter nulo de terminación. Al devolver ERROR_SUCCESS, pcchPathBuf contiene el número de TCHAR escritos en el búfer, sin incluir el carácter nulo de terminación.

[in, out] pcchPathBuf

Puntero a la variable que especifica el tamaño, en TCHAR, del búfer al que apunta la variable szPathBuf Cuando la función devuelve ERROR_SUCCESS, esta variable contiene el tamaño de los datos copiados en szPathBuf, no incluido el carácter nulo de terminación. Si szPathBuf no es lo suficientemente grande, la función devuelve ERROR_MORE_DATA y almacena el tamaño necesario, sin incluir el carácter nulo de terminación, en la variable a la que apunta pcchPathBuf.

Valor devuelto

La función MsiGetTargetPath devuelve los valores siguientes:

Comentarios

Si se devuelve ERROR_MORE_DATA, el parámetro que es un puntero proporciona el tamaño del búfer necesario para contener la cadena. Si se devuelve ERROR_SUCCESS, proporciona el número de caracteres escritos en el búfer de cadenas. Por lo tanto, puede obtener el tamaño del búfer pasando una cadena vacía (por ejemplo, "") para el parámetro que especifica el búfer. No intente determinar el tamaño del búfer pasando un valor Null (value=0).

Antes de llamar a esta función, el instalador debe ejecutar primero la acción CostInitialize, la acción FileCost y la acción CostFinalize. Para obtener más información, vea Llamar a funciones de base de datos desde programas.

MsiGetTargetPath devuelve la ruta de acceso predeterminada del directorio de destino creado en el paquete si la ubicación actual del destino no está disponible para una instalación. Por ejemplo, si durante una instalación de mantenimiento , un directorio de destino en una ubicación de red no está disponible, el instalador restablece las rutas de acceso del directorio de destino a sus valores predeterminados. Para obtener la ruta de acceso real del directorio de destino en este caso, llame a MsiProvideComponent para un componente que se sabe que se ha instalado previamente en el directorio buscado y establezca dwInstallMode en INSTALLMODE_NODETECTION.

Para obtener más información, vea Llamar a funciones de base de datos desde programas.

Si se produce un error en la función, puede obtener información de error extendida mediante MsiGetLastErrorRecord.

Nota:

El encabezado msiquery.h define MsiGetTargetPath como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 en Windows Server 2008 o Windows Vista. Windows Installer en Windows Server 2003 o Windows XP
Plataforma de destino Windows
Encabezado msiquery.h
Library Msi.lib
Archivo DLL Msi.dll

Consulte también

Funciones de ubicación del instalador

Pasar null como argumento de las funciones de Windows Installer