Compartir a través de


Función MsiFormatRecordA (msiquery.h)

La función MsiFormatRecord da formato a las propiedades y los datos de campo de registro mediante una cadena de formato.

Sintaxis

UINT MsiFormatRecordA(
  [in]      MSIHANDLE hInstall,
  [in]      MSIHANDLE hRecord,
  [out]     LPSTR     szResultBuf,
  [in, out] LPDWORD   pcchResultBuf
);

Parámetros

[in] hInstall

Controle la instalación. Esto se puede omitir, en cuyo caso solo se procesan los parámetros del campo de registro y las propiedades no están disponibles para la sustitución.

[in] hRecord

Identificador del registro al que se va a dar formato. La cadena de plantilla debe almacenarse en el campo de registro 0 seguido de parámetros de datos a los que se hace referencia.

[out] szResultBuf

Puntero al búfer que recibe la cadena con formato null terminada. No intente determinar el tamaño del búfer pasando un valor NULL (value=0) para szResultBuf. 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 pcchResultBuf contiene el tamaño de búfer necesario en TCHAR, sin incluir el carácter nulo de terminación. Al devolver ERROR_SUCCESS, pcchResultBuf contiene el número de TCHARescritos en el búfer, no incluido el carácter nulo de terminación.

[in, out] pcchResultBuf

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

Valor devuelto

La función MsiFormatRecord devuelve uno de los siguientes valores:

Observaciones

La función MsiFormatRecord usa el siguiente proceso de formato.

Los parámetros que se van a con formato se incluyen entre corchetes [...]. Los corchetes se pueden iterar porque las sustituciones se resuelven desde el interior hacia fuera.

Si una parte de la cadena se incluye entre llaves { } y no contiene corchetes, se deja sin cambios, incluidas las llaves.

Si una parte de la cadena se incluye entre llaves { } y contiene uno o más nombres de propiedad y, si se encuentran todas las propiedades, se muestra el texto (con las sustituciones resueltas) sin las llaves. Si no se encuentra alguna de las propiedades, se quita todo el texto de las llaves y las llaves.

Tenga en cuenta que, en el caso de acciones personalizadas de ejecución diferida, msiFormatRecord solo admite propiedades CustomActionData y ProductCode. Para obtener más información, vea Obtener información de contexto para acciones personalizadas de ejecución diferida.

Los pasos siguientes describen cómo dar formato a las cadenas mediante la función MsiFormatRecord:

Para dar formato a cadenas mediante la función MsiFormatRecord

  1. Los parámetros numéricos se sustituyen reemplazando el marcador por el valor del campo de registro correspondiente, con valores que faltan o que no producen texto.
  2. La cadena resultante se procesa reemplazando los parámetros no record por los valores correspondientes, que se describen a continuación.
    • Si se encuentra una subcadena del formulario "[propertyname]", se reemplaza por el valor de la propiedad .
    • Si se encuentra una subcadena del formulario "[%environmentvariable]", se sustituye el valor de la variable de entorno.
    • Si se encuentra una subcadena del formulario" [#filekey]", se reemplaza por la ruta de acceso completa del archivo, por el valor filekey usado como clave en la tabla archivo . El valor de "[#filekey]" permanece en blanco y no se reemplaza por una ruta de acceso hasta que el instalador ejecute la acción CostInitialize, acción FileCosty acción CostFinalize. El valor de "[#filekey]" depende del estado de instalación del componente al que pertenece el archivo. Si el componente se ejecuta desde el origen, el valor es la ruta de acceso a la ubicación de origen del archivo. Si el componente se ejecuta localmente, el valor es la ruta de acceso a la ubicación de destino del archivo después de la instalación. Si el componente no está presente, la ruta de acceso está en blanco. Para obtener más información sobre cómo comprobar el estado de instalación de los componentes, vea Comprobación de la instalación de características, componentes, archivos.
    • Si se encuentra una subcadena del formulario "[$componentkey]", se reemplaza por el directorio de instalación del componente, por el valor componentkey usado como clave en la tabla componente de . El valor de "[$componentkey]" permanece en blanco y no se reemplaza por un directorio hasta que el instalador ejecute la acción CostInitialize, acción FileCosty acción CostFinalize. El valor de "[$componentkey]" depende del estado de instalación del componente. Si el componente se ejecuta desde el origen, el valor es el directorio de origen del archivo. Si el componente se ejecuta localmente, el valor es el directorio de destino después de la instalación. Si el componente no está presente, el valor se deja en blanco. Para obtener más información sobre cómo comprobar el estado de instalación de los componentes, vea Comprobación de la instalación de características, componentes, archivos.
    • Tenga en cuenta que si un componente ya está instalado y no se vuelve a instalar, quita o mueve durante la instalación actual, el estado de acción del componente es NULL y, por tanto, la cadena "[$componentkey]" se evalúa como Null.
    • Si se encuentra una subcadena de la forma "[\c]", se reemplaza por el carácter sin ningún procesamiento adicional. Solo se mantiene el primer carácter después de la barra diagonal inversa; todo lo demás se quita.
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 (valor=0).

Nota

El encabezado msiquery.h define MsiFormatRecord 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido 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.
de la plataforma de destino de Windows
encabezado de msiquery.h
biblioteca de Msi.lib
DLL de Msi.dll

Consulte también

pasar null como argumento de funciones de Windows Installer