que - Wix: uso de KeyPath en componentes, directorios, archivos, registro, etc., etc.
wix ayuda (1)
En general, debe basar su decisión en la idea principal de la opción KeyPath
. Desde MSDN :
Este valor apunta a un archivo o carpeta que pertenece al componente que el instalador utiliza para detectar el componente .
Por lo tanto, si crea 1 archivo por componente, no enfrentará la situación cuando borre accidentalmente un archivo y la reparación no lo devuelva. Si KeyPath
archivos N por componente, de todos modos, seleccionará uno de ellos para que sea un KeyPath
(y los documentos de WiX lo alientan a hacerlo explícitamente), o agrega una entrada de registro adicional y deja que sea el KeyPath
.
De vuelta a sus preguntas:
Si tengo un directorio vacío que el instalador necesita crear, debo configurar KeyPath = "yes" en el Directorio o
Directory elemento de Directory no tiene un atributo KeyPath
.
Si un archivo tiene KeyPath = "sí" en un escenario de archivo por componente, ¿es necesario o es recomendable establecerlo en su componente principal?
No, básicamente, esto no tiene sentido. Si un Component tiene KeyPath="yes"
, entonces el directorio en el que se instala este componente se convierte en una ruta de acceso clave. Cuando lo configura en un File explícitamente, obviamente el archivo es una ruta clave.
Leí en algún lugar que, en lugar de configurar KeyPath en un archivo, uno debería usar una clave de registro para cada archivo y establecer KeyPath = "sí" en el elemento de registro ... ¿Es eso realmente cierto / necesario?
Esto suena como una tontería. Nuevamente, se basa 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 escenario de componente, cuando usted crea 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 tiene que introducir una entrada de registro solo para que sirva como ruta de acceso clave para ayudar al instalador a rastrear una carpeta vacía. Es suficiente si agrega KeyPath=''yes''
al componente principal.
No compliques las cosas. Windows Installer es bastante complejo como es. :) Espero que esto ayude.
Después de leer esta respuesta en el enfoque de "un archivo por componente" al usar WiX, tuve curiosidad por averiguar cuáles son las mejores prácticas al usar el atributo KeyPath
en otros elementos, incluidos Component
, Directory
, Registry
, etc.
Me interesa cualquier sugerencia general, pero aquí hay un par de preguntas concretas:
- Si tengo un directorio vacío que el instalador necesita crear, ¿debo configurar
KeyPath="yes"
en elDirectory
o en suComponent
principal? ¿Y si no está vacío? - Si un archivo tiene
KeyPath="yes"
en un escenario de archivo por componente, ¿es necesario o es recomendable establecerlo en su componente principal? - Leí en algún lugar que, en lugar de configurar
KeyPath
en un archivo, uno debería usar una clave de registro para cada archivo y establecerKeyPath="yes"
en el elemento de registro ... ¿Es eso realmente cierto / necesario?
¡Gracias!
Edición # 1 - Aclaración de: Directory
Era consciente de que Directory no tenía KeyPath, pero no estaba explícito / detallado en mi pregunta. Principalmente, tenía curiosidad por el uso de KeyPath en un componente cuando se tiene que crear un directorio vacío. Estoy viendo que KeyPath = "sí" está en tal caso establecido en el componente principal. ¿Pero es eso suficiente para que el instalador detecte / repare la carpeta vacía que falta? ¿O debería ser usado junto con la entrada de registro? Fragmento de ejemplo:
<Directory Id="LOGS" Name="Logs">
<Component Id="LogsDir" Guid="*" KeyPath="yes">
<CreateFolder Directory="LOGS" />
</Component>
</Directory>