Creación de tablas de directorios de módulos de combinación
Se puede aplicar un módulo de combinación a un archivo .msi para agregar directorios a la instalación, pero no se pueden reemplazar ni eliminar los directorios existentes. La tabla Directory especifica el diseño de los directorios que el módulo de combinación proporciona a la instalación de destino. Todos los módulos de combinación deben tener una tabla Directory.
Siga las instrucciones que se proporcionan a continuación al crear la tabla Directory en un módulo de combinación. Para más información, consulte Tabla Directory y Uso de la tabla Directory.
La estructura de directorios que agrega el módulo de combinación debe tener un único directorio raíz. El directorio raíz debe denominarse TARGETDIR. El usuario puede cambiar el valor de TARGETDIR durante la combinación para especificar dónde adjuntar la estructura de directorios del módulo en el árbol de directorios del destino.
Las tablas del módulo de combinación que no sean la tabla Directory no deben hacer referencia directamente a las ubicaciones de directorio en TARGETDIR. La ubicación de esta referencia cambia si el usuario modifica el valor de TARGETDIR.
Las tablas del módulo de combinación deben hacer referencia a la ubicación de un directorio secundario de TARGETDIR o a otro directorio del árbol del módulo de combinación. Realice los pasos que se indican a continuación para especificar TARGETDIR como elemento principal de un directorio en el módulo de combinación. Escriba el directorio en la columna Directory y escriba TARGETDIR en la columna Directory_Parent. Use la notación "." en la columna DefaultDir para indicar que este directorio se encuentra en TARGETDIR y no tiene ningún subdirectorio. Para más información, consulte Uso de la tabla Directory.
Los nombres de directorios agregados por el módulo de combinación deben usar las convenciones de nomenclatura descritas en Asignación de nombres a las claves principales de las bases de datos del módulo de combinación. Aquí se incluyen directorios predefinidos por propiedades como la propiedad SystemFolder y la propiedad ProgramFilesFolder.
Anexe un GUID a cada entrada de la tabla Directory (excepto TARGETDIR). Aquí se incluyen las entradas de la tabla Directory que especifican las propiedades SystemFolder de Windows Installer, por ejemplo, SystemFolder.00000000_0000_0000_0000_000000000000. La biblioteca Mergemod.dll agrega acciones personalizadas para establecer la propiedad SystemFolder.
Cuando se incluye un directorio predefinido en un módulo de combinación, la herramienta de combinación agrega automáticamente un tipo de acción personalizada 51 a la base de datos de destino. El autor del módulo de combinación debe asegurarse de que también se incluye una tabla CustomAction. La tabla CustomAction puede estar vacía, pero es necesario que exista en la base de datos de destino y garantiza que los directorios predefinidos modificados se escriben en las ubicaciones correctas. Por ejemplo, cuando se incluye un directorio del sistema en un módulo de combinación, el autor del módulo de combinación debe asegurarse de que existe una tabla CustomAction.
Tenga en cuenta que el algoritmo coincidente para la generación de estas acciones personalizadas del tipo 51 solo comprueba que el nombre del directorio comienza por una de las propiedades SystemFolder predefinidas. No comprueba que el nombre del directorio coincida exactamente con la propiedad de directorio. Cualquier directorio que comience con uno de estos nombres de carpeta estándar obtiene una acción personalizada del tipo 51, aunque el resto del nombre no sea un identificador único global. Los autores deben tener cuidado de que esto no genere falsas coincidencias positivas ni acciones personalizadas no deseadas en claves principales derivadas que comiencen por una de las propiedades SystemFolder.
A continuación, se muestra un ejemplo de una tabla Directory en un módulo de combinación y los directorios resueltos esperados.
Directorio | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | TARGETDIR | .:MMM_Prog |
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | TARGETDIR | MMM_Sys |
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | Dir00.BC82E350_ C7FC_11d1_ A848_006097ABDE17 | MFC_OCX |
Se espera que cualquier módulo de combinación con la tabla Directory anterior dé como resultado la siguiente estructura de directorios.
Directorio | Destino | Source |
---|---|---|
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [Punto de instalación de módulo de combinación]\ | [Punto de origen de módulo de combinación]\MMM_Prog |
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [SystemFolder]\ | [Punto de origen de módulo de combinación]\MMM_Sys |
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [Punto de instalación de módulo de combinación]\MFC_OCX | [Punto de origen de módulo de combinación]\MMM_Prog\MFC_OCX |