2011-09-07 12 views
9

Estoy usando la última votiva (Wix v3.5) y creé un proyecto simple de instalación de Wix VS 2010. Agregué la referencia de mi sitio web y configuré la opción Harvest como true.Cosechar archivos lleva a error LGHT0231

Ahora ya mis INSTALLDIR apunta a una carpeta bajo IISROOT, me sale este error light.exe:

[filepath]: error LGHT0231: The component 'cmp93982C4086FF8C75F07339DD7CEA8152' has a key file with path 'TARGETDIR\webdir...[filename].xml'. Since this path is not rooted in one of the standard directories (like ProgramFilesFolder), this component does not fit the criteria for having an automatically generated guid. (This error may also occur if a path contains a likely standard directory such as nesting a directory with name "Common Files" under ProgramFilesFolder.)

Si bien entiendo la razón de este error, no necesariamente de acuerdo con su racional (tal vez No entiendo el funcionamiento innato de la generación de Wix MSI).

¿Cómo puedo resolver este error?


Para proporcionar algún contexto:

Estoy tratando de instalar esto en conjunto con el equipo de construcción. Puedo utilizar el formato heredado y ejecutar la tarea Heat/Harvest contra una carpeta para eludir este problema, pero no quiero ir a la ruta heredada.

No he jugado lo suficiente con la nueva definición de compilación basada en el flujo de trabajo, por lo que no estoy seguro de cómo puedo incorporar esta tarea personalizada.

Necesito ejecutar la recolección cada vez que se crea el proyecto de instalación porque no quiero hacer un seguimiento de cientos de archivos manualmente.

+0

Tengo el mismo problema; Estoy tratando de establecer C: \ Inetpub \ wwwroot \ MyProject \ como la ubicación de instalación predeterminada, pero WiX no lo escuchará. –

+0

¿Has encontrado alguna solución? Gracias –

+0

@SanjaMelnichuk: Desafortunadamente no. No he invertido más tiempo allí también cuando me mudé a otros proyectos, pero supongo que lo que estoy tratando de hacer allí requeriría algo de conocimiento de XAML y familiaridad con los flujos de trabajo de TFS. – Mrchief

Respuesta

9

El problema se debe a que el componente está rooteado en TARGETDIR, que WiX no puede usar para generar automáticamente un guid. Puede agregar Directory/@ComponentGuidGenerationSeed a un directorio sobre este componente para evitar el problema. Al agregar este atributo, ahora debe asumir la responsabilidad de garantizar que el componente no se instale en dos directorios diferentes en las actualizaciones.

En Windows Installer, los componentes deben tener un guid que no cambie entre parches, actualizaciones menores y actualizaciones importantes. Para su comodidad, WiX puede generar un version 5 UUID para usted utilizando la jerarquía de directorios del componente como semilla. Pero, TARGETDIR no es elegible para esto.

Creo que la razón es que TARGETDIR cambia en las instalaciones (se establece en la unidad que tiene más espacio libre). Una de las reglas del componente es "each component must be stored in a single folder". Si TARGETDIR cambió entre las principales actualizaciones, entonces podría terminar tratando de instalar el mismo componente en una segunda carpeta.

+0

No fue hasta que estaba escribiendo otro proyecto Wix que me encontré con esto de nuevo y luego recordé su solución. Lo siento, me tomó tanto tiempo para aceptarlo! :) – Mrchief

Cuestiones relacionadas