visual tutorial toolset studio wix preprocessor build-automation wix3 votive

tutorial - wix toolset



WiX variable de preprocesador indefinido (1)

Estoy empezando a usar WiX para hacer compilaciones automatizadas para crear msi''s de mis proyectos c # y estoy experimentando el error "Variable de preprocesador no definida ''$ (var.MyProject.TargetDir)''"

Estoy usando la última versión de WiX v3.0.5419. Dentro de mi archivo wxs estoy tratando de usar las variables de preprocesador que se enumeran en esta página web ( http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor-variables.aspx )

<Component Id="MyId" Guid="MyGuid"> <File Id="MyId" Name="MyName" KeyPath="yes" Source="$(var.MyProject.TargetDir)/MyName.dll" /> </Component>

He agregado la referencia para MyProject a .wixproj y si la abro en el Bloc de notas puedo ver la referencia.

<ItemGroup> <ProjectReference Include="../MyProject.csproj"> <Name>MyProject</Name> <Project>{guid}</Project> <Private>True</Private> </ProjectReference> </ItemGroup>

Este es mi script de compilación nant que utilizo para crear el msi. Tal vez sea porque el .wixproj conoce la referencia del proyecto que no se usa en la compilación.

<exec basedir="${tools.wix}" managed="true" program="candle.exe"> <arg line=''-out "${tools.wix.objfile}"'' /> <arg value="../MySetup.wxs" /> </exec>

¿Alguien puede iluminarme sobre esto por favor?


Como ya comentó, su secuencia de comandos de compilación wixproj no está usando el archivo wixproj en absoluto.

Estás mezclando dos formas diferentes de construir una configuración wix aquí:

  1. Puede usar las herramientas de línea de comandos candle.exe y light.exe directamente. Esto ignora el archivo .wixproj . Esto es lo que estás haciendo en tu script de compilación nant. Para pasar valores para las variables del preprocesador como $(var.MyProject.TargetDir) , use opciones como -dMyProject.TargetDir=c:/foo .

  2. Puede crear un archivo .wixproj con votive (el complemento de estudio visual para wix). Al igual que todos los archivos de proyectos de Visual Studio, un archivo wixproj es en realidad un archivo msbuild que puede compilarse con msbuild.exe . Variables como $(var.MyProject.TargetDir) son configuradas automáticamente por las tareas de msbuild para construir configuraciones de wix si existe la referencia correcta del proyecto.

Le recomiendo que genere el archivo wixproj con la <msbuild> . Esto asegura que su compilación de nant haga lo mismo que cuando construye la configuración manualmente desde Visual Studio.