Pregunta

¿Cuándo debo cambiar o no cambiar el GUID de mi componente en WIX? La información del SDK de Microsoft es confusa .

Glytzhkof edit : para aclarar, la pregunta trata sobre cuándo se debe cambiar un GUID de componente para un componente de MSI. Un componente puede cambiar con aspectos 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 las mejores prácticas para crear componentes en MSI.

¿Fue útil?

Solución

  

El concepto general de MSI es que hay una asignación 1: 1 entre   un GUID de componente (identificador único) y una ruta absoluta   (instalar la ubicación / ruta de acceso clave). La ruta completa, incluido el nombre del archivo si   ninguna. Ver actualización a continuación para una nueva característica de Wix para tratar de forma automática.   con esto.

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

  • Siempre use un componente separado por archivo (incluso para no binarios). Esto evita todo tipo de problemas. Hay algunas excepciones:
    • Los ensamblados .NET de varios archivos deben estar todos en un componente, ya que siempre deben 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 pertenecen juntos.
      • Los archivos .CHM y .CHI pertenecen juntos.
    • Es probable que haya varios tipos de archivos de este tipo que deben estar juntos y, por lo tanto, deben colocarse en el mismo componente para que se instalen / desinstalen juntos. Es difícil llegar a una lista definitiva. Simplemente pregúntese " ¿estos archivos siempre van de la mano " , por lo que siempre aparecen en pares cada vez que hay una nueva versión? Si es así, instálalos a través del mismo componente. Configure el archivo versionado, si lo hay, como archivo clave.
    • Quiero agregar archivos de controlador como ejemplo de un grupo de archivos que siempre pertenecen juntos: SampleDriver.cat , < código> SampleDriver.inf , SampleDriver.sys , SampleDriver.cer . Todos deben coincidir como una " unidad " para la implementación.
  • Recuerde que una vez que haya asignado un GUID para un componente, se establece en piedra para la ruta clave de ese componente (ruta absoluta). Si mueve el archivo a una nueva ubicación o le cambia el nombre, déle un GUID de componente nuevo (ya que la ruta absoluta es diferente, en realidad es una nueva identidad).
  • En resumen, los GUID de 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 de GUID cuenta una ubicación absoluta, no el archivo en sí.
  • No agregue ni elimine archivos de un componente existente. Todo tipo de problemas de actualización y parches resultan. Por eso me gusta un archivo por componente como regla general.
  • Hay muchas más referencias a los componentes, pero lo dejaré así para una " visión general " ;.

Algunas muestras:

  • Cambia el nombre del archivo C: \ Archivos de programa \ MyCompany \ MyApp \ MyFile.exe a C: \ Archivos de programa \ 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 hospedaje, O agrega un nuevo componente y elimina el anterior (que tiene el mismo efecto).
  • Su MSI actualizado entrega 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 un nuevo la función GUID del componente de generación automática que calcula un GUID mientras la ruta objetivo permanezca igual. No he probado esto para ser honesto, pero muchos parecen usarlo sin problemas, y Rob Mensching (autor de Wix) declara que es seguro para el uso normal . Como concepto, lo recomiendo ampliamente ya que presenta algo de auto-magia y lo protege de cierta complejidad.

También tenga en cuenta que puede omitir muchos atributos de origen de su archivo Wix xml y confíe en los valores predeterminados de Wix en lugar de los valores de codificación rígidos.

Otros consejos

Nunca cambias el componente / @ Guid. También nunca cambia el conjunto de Recursos (Archivo, RegistryKey, Shortcut, TypeLib, 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 del registro, o en la biblioteca de tipos, etc.) con el componente antiguo.

Estas son básicamente las Reglas de los componentes, echa un vistazo a http: //robmensching.com/blog/posts/2003/10/18/Component-Rules-101 .

Eche un vistazo a la Tutorial de WiX, Los archivos Dentro , para una explicación detallada sobre las reglas de los componentes. Básicamente, dice que nunca cambias el GUID de un componente, ya que eso significa dejar huérfano al componente anterior y crear un nuevo componente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top