2009-10-21 22 views
60

¿Debo envolver todos los archivos que deseo instalar en componentes individuales? ¿Cuál es la ventaja de poner varios archivos en un componente?Wix: ¿un archivo por componente o varios archivos por componente?

+0

Ciertos ensamblados ** .NET ** son ** archivos múltiples **, pero deben incluirse en el mismo componente MSI porque deben estar instalados como una "** unidad atómica **". En otras palabras, siempre deben instalarse y desinstalarse juntos como un paquete. –

+0

Además de los ensamblados .NET de múltiples archivos, siempre uso un archivo por componente, ya que evita todo tipo de problemas de actualización y despliegue. –

Respuesta

75

Una razón para "un archivo por componente" es resiliency. Cuando se inicia una aplicación, Windows Installer puede verificar si falta el keypath de cualquier componente. Si falta la ruta clave, el componente se reinstala/repara.

Si un componente tiene varios archivos, entonces solo un archivo puede ser el keypath. En wix, indique esto configurando KeyPath=yes en un elemento File. Los otros archivos no estarán completamente protegidos por la resiliencia de Windows Installer. Solo se reinstalarán si el archivo keypath se pierde.

Otro motivo para tener "un archivo por componente" es cuando instala archivos en ubicaciones donde es posible que ya estén presentes (por ejemplo, una actualización de la aplicación o al instalar en c:\windows\system32). El instalador de Windows determina si un componente necesita ser instalado comprobando el keypath. Si keypath es un archivo y el archivo ya está allí (con la misma versión o más), entonces el componente es no instalado. Eso es un problema si el otros archivos en el componente realmente necesitaban instalarse/actualizarse.

+7

Esta es una gran respuesta, pero no dice por qué es útil lo contrario. Lo cual es razonable, ya que solo conozco una ventaja: ahorra tiempo de registro durante la instalación, ya que cada componente está registrado, pero cada uno de sus archivos no lo está. En general, esto no es una buena solución de compromiso, ya que mata la capacidad de recuperación y dificulta las actualizaciones, así que preste más atención a las recomendaciones de wcoenen. –

+0

@Wim Coenen Cuando se utiliza un enfoque de "archivo por componente", uno debe poner KeyPath = "yes" en File, pero ¿qué pasa con su componente? ¿Es necesario agregar el mismo KeyPath = "yes" en el componente primario del archivo? Además, ¿qué pasa con el Directorio? ¿Cuál es la mejor práctica con los directorios (vacíos y no vacíos)? ¿Hay una buena guía sobre esto? ¡¡¡Gracias!!! – zam6ak

+0

@ zam6ak: los comentarios no son el mejor lugar para hacer nuevas preguntas, ya que reciben solo una atención limitada y no pueden dar respuestas completas. ¡Publique una pregunta por separado en lugar de un comentario! –

Cuestiones relacionadas