2012-04-27 16 views
22

Después de leer this answer sobre el enfoque de "un archivo por componente" al usar WiX, tenía curiosidad por saber cuáles son las mejores prácticas al usar el atributo KeyPath en otros elementos, incluyendo Component, Directory, Registry etc, etc.Wix: Uso de KeyPath en componentes, directorios, archivos, registro, etc.

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

  • Si tengo un directorio vacío que necesita para crear instalador debería I establecer KeyPath="yes" en Directory o su padre Component? ¿Qué pasa si es no está vacío?
  • Si un archivo tiene KeyPath="yes" en un escenario de archivo por componente, ¿es necesario o una buena práctica configurarlo en su componente principal?
  • He leído en alguna parte que en lugar de establecer KeyPath en un archivo, una debe utilizar una clave de registro para cada archivo y establecer KeyPath="yes" en elemento de registro ... ¿Es realmente cierto/necesario?

Gracias!

editar # 1 - Aclaración Re: Directory

yo era consciente de Directorio no tener KeyPath, pero no fue explícito/detallada en mi pregunta. Principalmente, tenía curiosidad sobre el uso de KeyPath en un componente cuando se debe crear un directorio vacío. Estoy viendo que KeyPath = "yes" está en ese caso en el Componente principal. ¿Pero es eso suficiente para que el instalador detecte/repare la carpeta vacía que falta? ¿O debería usarse junto con la entrada de registro? Fragmentos de ejemplo:

<Directory Id="LOGS" Name="Logs"> 
    <Component Id="LogsDir" Guid="*" KeyPath="yes"> 
    <CreateFolder Directory="LOGS" /> 
    </Component> 
</Directory> 

Respuesta

24

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

puntos este valor a un archivo o carpeta que pertenece al componente que el instalador usa para detectar el componente.

Por lo tanto, si crea 1 archivo por componente, no se encontrará con la situación cuando eliminó accidentalmente un archivo y la reparación no lo devolvió. Si crea N archivos por componente, de todos modos seleccionará uno de ellos como KeyPath (y los documentos de WiX lo alentarán a hacerlo explícitamente), o agregará una entrada de registro adicional y dejará que sea el KeyPath.

Volver a sus preguntas:

Si tengo un directorio vacío que necesita para crear instalador debería establecer KeyPath = "sí" en Directory o

Directory elemento no tiene un atributo KeyPath.

si un archivo ha KeyPath = "sí" en un escenario archivo-por-componente, es que práctica necesaria o bien para ponerlo en su matriz de componentes?

No, básicamente, esto no tiene sentido. Si un Component tiene KeyPath="yes", el directorio al que está instalado este componente se convierte en una ruta clave. Cuando lo configura en un File explícitamente, entonces obviamente el archivo es una ruta clave.

leí en alguna parte que en lugar de establecer KeyPath en un archivo, se debe usar una clave de registro para cada archivo y establecer KeyPath = "sí" en el Registro elemento ... Es eso realmente cierto/necesario?

Esto suena a tonterías. Nuevamente, base en la necesidad general de KeyPath - detectar el componente. ¿Por qué necesita una entrada de registro adicional para detectar si un archivo está allí en un sistema de archivos? Puede tener sentido para N archivos por escenario de componente, cuando crea 1 entrada de registro por componente (es decir, N archivos) y deja 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 una ruta clave para ayudar al instalador a rastrear una carpeta vacía. Es suficiente si agrega KeyPath='yes' al componente primario.

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

+9

Hay un caso en el que se recomienda utilizar una entrada de registro adicional ya que se recomienda la ruta clave: cuando se tiene un componente que no contiene ningún otro recurso que pueda servir como keypath. El ejemplo típico es un componente que instala un acceso directo. –

+0

@WimCoenen, gracias, ¡es una nota valiosa! –

+0

@Yan Sklyarenko Gracias por la respuesta detallada. Sabía que Directory no tiene KeyPath, pero actualicé mi pregunta para aclarar el contexto en el que estaba relacionado con KeyPath. Por cierto, tiene razón al decir que Win Installer es complejo, y mi objetivo era asegurarme de no complicar mis instalaciones. Es por eso que hice la pregunta :) El tutorial sobre WiX es bastante bueno, pero no pude encontrar una fuente de "mejores prácticas" que incluyera consejos útiles (como un Wim Coenen publicado en su comentario) – zam6ak

Cuestiones relacionadas