tag modificar metaetiqueta encabezado código code agrega wix windows-installer wix3

modificar - wix head tag



¿Cambiar mi GUID de componente en wix? (3)

¿Cuándo debería cambiar o no mi GUID de componente en WIX? La información de Microsoft SDK es confusa .

Edición de Glytzhkof : para aclarar, la pregunta se refiere a cuándo se debe cambiar un GUID de componente para un componente de MSI. Un componente puede cambiar con aspectos tales como: ruta de destino modificada, adición o eliminación de archivos a / desde el mismo componente, adición de datos de registro, etc. Esto causa problemas con respecto a la llamada referencia de componentes, es decir, la mejor práctica para creando componentes en MSI.


Eche un vistazo al Tutorial de WiX, The Files Inside , para obtener una explicación detallada de las reglas de los componentes. Básicamente, dice que nunca se cambia el GUID de un componente, ya que eso significa orfanar el componente anterior y crear un nuevo componente.


El concepto general de MSI es que existe una correspondencia 1: 1 entre un GUID de componente (identificador único) y una ruta absoluta (ubicación de instalación / ruta de clave). La ruta completa, incluido el nombre del archivo, si corresponde. Consulte la actualización a continuación para ver una nueva característica de Wix para manejar esto de manera auto-mágica.

Utilizo algunas reglas simples para lidiar con las reglas de los componentes demasiado complejas y sin sentido:

  • Utilice siempre un componente separado por archivo (incluso para archivos no binarios). Esto evita todo tipo de problemas. Hay algunas excepciones:
    • Los ensamblados .NET de archivos múltiples deberían estar todos en un componente, ya que siempre deberían instalarse / desinstalarse como una sola unidad.
    • Algunos otros tipos de archivos generales vienen en "pares coincidentes" : pertenecen juntos. A menudo estos son archivos de contenido e índice. Como ejemplo, considere los archivos de ayuda de Microsoft:
      • Los archivos .HLP y .CNT van juntos.
      • Los archivos .CHM y .CHI pertenecen juntos.
    • Es probable que haya varios tipos de archivos de este tipo que pertenezcan juntos y, por lo tanto, deben colocarse en el mismo componente para que se instalen / desinstalen juntos. Sospecho que ciertos archivos de certificados son candidatos. Es difícil encontrar una lista definitiva. Simplemente pregúntese: "¿estos archivos siempre van juntos?" , De modo que siempre aparecen en pares cada vez que hay una nueva versión. En caso afirmativo, instálelos a través del mismo componente. Establezca el archivo versionado, si lo hay, como archivo de clave.
  • Recuerde que una vez que ha asignado un GUID para un componente, está escrito en piedra para la ruta clave de ese componente (ruta absoluta). Si mueve el archivo a una nueva ubicación o cambia el nombre del archivo, dele un nuevo GUID de componente (dado que la ruta absoluta es diferente, efectivamente es una nueva identidad).
  • En resumen, los GUID de los componentes están vinculados a una ubicación de instalación absoluta, y no a un archivo específico. El GUID no sigue el archivo si se mueve . La referencia GUID cuenta una ubicación absoluta, no el archivo per se.
  • No agregue ni elimine archivos de un componente existente. Todo tipo de problemas de actualización y reparación resultan. Es por eso que me gusta un archivo por componente como regla general.
  • Hay mucho más para referenciar componentes, pero lo dejo para una "descripción general".

Algunas muestras:

  • Cambia el nombre del archivo C: / Program Files / MyCompany / MyApp / MyFile.exe a C: / Program Files / MyCompany / MyApp / MyFile_NEW.exe . ¿Qué significa esto para la creación de componentes? Esta es una nueva ruta de instalación absoluta, por lo que genera un nuevo GUID para el componente de alojamiento, O agrega un nuevo componente y elimina el anterior (que tiene el mismo efecto).
  • Su MSI actualizado ofrece una nueva versión de MyFile.exe. La ubicación es la misma que antes, esto significa que el GUID del componente no debe cambiar. Es el mismo archivo (identidad), solo en una versión diferente.

ACTUALIZACIÓN : WIX ahora tiene una nueva característica de GUID de componente de generación automática que calcula un GUID siempre que la ruta de destino permanezca igual. No he probado esto para ser sincero, pero muchos parecen usarlo sin problemas, y Rob Mensching (autor de Wix) afirma que es seguro para el uso normal . Como concepto, lo recomiendo mucho, ya que cuenta con algo de auto-magia y te protege de cierta complejidad.

También tenga en cuenta que puede omitir muchos atributos de origen de su archivo Wix xml y confiar en los valores predeterminados de Wix en lugar de valores de codificación difíciles.


Nunca cambia el Componente / @ Guid. Tampoco cambia nunca el conjunto de recursos (Archivo, Clave de registro, Acceso directo, Límite de línea, etc.) en el Componente. Cuando tiene un nuevo recurso, debe crear un nuevo componente con un nuevo @Guid. La parte realmente complicada es que el nuevo Componente no puede superponerse (piense en la ruta del archivo, o en la ruta de la clave de registro, o typelib, etc.) con el Componente anterior.

Estas son básicamente las Reglas de Componente, visita: http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101 .