Wix: Uso de la ruta de acceso en Componentes, Directorios, Archivos, Registro, etc, etc


Después de leer esta respuesta sobre el enfoque de" un archivo por componente " al usar WiX, tenía curiosidad por averiguar cuáles son las mejores prácticas al usar el atributo KeyPath en otros elementos, incluidos Component, Directory, Registry etc, etc.

Estoy interesado en cualquier sugerencia general, pero aquí hay un par de preguntas concretas:

  • Si tengo un directorio vacío que el instalador necesita crear debería conjunto KeyPath="yes" en Directory o su padre Component? ¿Y si lo es ni ¿vacío?
  • Si un archivo tiene KeyPath="yes" en un escenario de archivo por componente, es ¿es necesario o es una buena práctica establecerlo en su componente principal?
  • Leí en alguna parte que en lugar de establecer KeyPath en un Archivo, uno debe usar una clave de Registro para cada archivo y establecer KeyPath="yes" en Secretaría element...Is ¿eso es realmente cierto/necesario?

Gracias!

Editar #1-Aclaración re: Directory

Yo era consciente de que el directorio no tenía la ruta del teclado, pero no era explícito/detallado en mi pregunta. Principalmente, tenía curiosidad sobre el uso de la ruta de teclado en un Componente cuando se tiene que crear un directorio vacío. Estoy viendo que KeyPath= " yes " está en tal caso siendo establecido en el componente padre. Pero, ¿es suficiente para que el instalador detecte / repare la carpeta vacía que falta? ¿O debería usarse junto con la entrada del registro? Fragmento de ejemplo:

<Directory Id="LOGS" Name="Logs">
  <Component Id="LogsDir" Guid="*" KeyPath="yes">
    <CreateFolder Directory="LOGS" />
  </Component>
</Directory>
Author: Community, 2012-04-28

1 answers

En general, debe basar su decisión en la idea principal de la opción KeyPath. De MSDN :

Este valor apunta a un archivo o carpeta perteneciente al componente que el instalador utiliza para detectar el componente.

Por lo tanto, si es autor de 1 archivo por componente, no se enfrentará a la situación cuando borró accidentalmente un archivo y la reparación no lo devolvió. Si crea N archivos por componente, de todos modos seleccionará uno de ellos para que sea un KeyPath (y Wix docs lo anima a hacer esto explícitamente), o agrega una entrada adicional del registro y deja que sea el KeyPath.

Volver a sus preguntas:

Si tengo un directorio vacío que el instalador necesita crear debería establecer KeyPath= " yes " en el directorio o

El elemento Directory no tiene un atributo KeyPath.

Si un archivo tiene KeyPath="yes" en un escenario de archivo por componente, ¿es necesaria o buena práctica para ponerlo en su ¿componente de padres?

No, básicamente, esto no tiene sentido. Si un componente tiene KeyPath="yes", entonces el directorio en el que se instala este componente se convierte en una ruta de acceso de clave. Cuando lo establece en un archivo explícitamente, entonces obviamente el archivo es una ruta de acceso de clave.

Leí en alguna parte que en lugar de establecer la ruta de acceso en un archivo, uno debería utilice una clave de Registro para cada archivo y establezca KeyPath= " yes " en el Registro element...Is que realmente verdadero/necesario?

Esto suena como una tontería. De nuevo, basándonos en la necesidad general de KeyPath - detectar el componente. ¿Por qué necesita una entrada de registro adicional para detectar si hay un archivo en un sistema de archivos? Podría tener sentido para N archivos por componente, cuando cree 1 entrada de registro por componente (es decir, N archivos) y deje que Windows Installer juzgue por esa entrada de registro si el componente se considera "no roto".

ACTUALIZACIÓN: No tienes que introduzca una entrada del registro solo para servir como una ruta de acceso clave para ayudar al instalador a rastrear una carpeta vacía. Basta con añadir KeyPath='yes' al componente padre.

No compliques las cosas. Windows Installer es bastante complejo como es. :) Espero que esto ayude.

 24
Author: Yan Sklyarenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-03 07:11:34