Pregunta

Me he encontrado con varias fuentes que indican dividir un archivo de instalación de WiX en partes separadas (variables, componentes, etc.) usando archivos de inclusión (.wxi). Tiene mucho sentido para mí, así que tomé el & Lt; components & Gt; nodos del archivo .wxs y los coloco en un archivo separado, pero cuando intento compilar el proyecto en Visual Studio 2008 obtengo un error para cada < ComponentRef > indicando que es una " Referencia sin resolver al símbolo '...' en la sección 'Producto: {...}' " ;.

He intentado usar <? include " Filename "? > etiqueta en mi archivo Product.wxs, pero eso parece romper la validación del esquema. Si esa es la forma de incluirlo, where ¿tiene que ir?

Los archivos que tengo son los siguientes.

Product.wxs

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product ...>
    <Package .../>
    <Media .../>
    <Directory Id="TARGETDIR" Name="SourceDir">
    </Directory>
    <Feature Id="MainProgram" Level="1">
      <ComponentRef Id="ProductComponent" />
      <Feature Id="ContextMenu" Level="2">
        <ComponentRef Id="ContextMenuComponent" />
      </Feature>
    </Feature>
  </Product>
</Wix>

Components.wxi

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <Fragment>
    <Component Id="ProductComponent" ...>
      <File .../>
    </Component>
    <Component Id="ContextMenuComponent" ...>
      <RegistryKey .../>
    </Component>
  </Fragment>
</Include>

¿Cómo consigo que se cree en Visual Studio? Crear una secuencia de comandos para la compilación parece más simple, pero todavía no es un problema mío.

¿Fue útil?

Solución

Los archivos de inclusión deben considerarse como archivos de encabezado, realmente solo desea usarlos para declarar variables comunes, etc. que necesita compartir entre múltiples archivos de .wxs.

Mi proyecto utiliza ~ 10 archivos .wxs y un solo .wxi en el que defino el código del producto, el código de actualización, etc. en.

Para una mejor idea de lo que estoy hablando, echa un vistazo a las preguntas SO Wix Tricks < !> amp; Mejores prácticas y WiX incluye vs. Fragmentos también, como siempre, la documentación en Wix.chm

Otros consejos

Intente usar la extensión WXS en lugar de WXI. Rompí el mío y usé WXS como extensión, y simplemente funcionó. El wixproj pasa todos los archivos WXS del proyecto al compilador wix.

Encontré esta pregunta buscando mi problema y pensé que agregaría mi solución en caso de que alguien viniera de donde yo lo hice.

Si está utilizando un archivo wixproj para compilar desde Visual Studio, parece que este tipo de proyecto no admite enlaces de archivos (Agregar elemento existente ... Agregar como enlace). Terminará con los enlaces en su proyecto, pero cuando lo compile se quejará de que hay símbolos sin resolver.

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