2012-08-16 9 views
6

Me pregunto cómo incluir una salida de proyecto dependiente de la configuración en el proyecto de configuración de WiX. Por ejemplo, veamos la solución de Visual Studio con una aplicación .NET y un Proyecto de configuración de Wix.Cómo incluir una salida de proyecto dependiente de la configuración en WiX 3.6

He añadido una referencia a la aplicación .NET en el proyecto de instalación y el componente creado en el origen de la instalación:

<Component Guid="EB0CBC32-5AE5-41B3-A343-FEBE044AC30A"> 
    <File Source="$(var.MyApp.TargetPath)" KeyPath="yes"/> 
    </Component> 

Así que, espero, que WiX incluirá una versión liberación MIAPL en su lanzamiento setup msi, y la versión de depuración en debug msi respectivamente. De lo contrario, la referencia a la salida del proyecto no tiene sentido para mí.

Pero siempre hay una versión de depuración. ¿Qué estoy haciendo mal?

ACTUALIZACIÓN.

Aquí es símbolo del sistema de la vela de la ventana de salida VS:

------ Volver a generar todo comenzó: Proyecto: MySetup, Configuración: x86 lanzamiento ------
C: \ Archivos de programa \ WiX Toolset v3.6 \ bin \ candle.exe -d "DevEnvDir = C: \ Archivos de programa \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \" -dSolutionDir = D: \ Projects \ Research \ Wix_ProjectOutput \ -dSolutionExt = .sln -dSolutionFileName = Wix_ProjectOutput.sln -dSolutionName = Wix_ProjectOutput -dSolutionPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Wix_ProjectOutput.sln -dConfiguration = Lanzamiento -dOutDir = .. \ Release \ -dPlatform = x86 -dProjectD ir = D: \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ -dProjectExt = .wixproj -dProjectFileName = MySetup.wixproj -dProjectName = MySetup -dProjectPath = D: \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ MySetup.wixproj -dTargetDir = D: \ Proyectos \ Investigación \ Wix_ProjectOutput \ Release \ -dTargetExt = .msi -dTargetFileName = MySetup.msi -dTargetName = MySetup -dTargetPath = D: \ Proyectos \ Investigación \ Wix_ProjectOutput \ Release \ MySetup.msi -dMyApplication.Configuration = depuración -d "MyApplication.FullConfiguration = Debug | x86" -dMyApplication.Platform = x86 -dMyApplication.ProjectDir = D: \ Projects \ Research \ Wix_ProjectOutput \ MyApplication \ -dMyApplication.ProjectExt = .csproj -dMyApplication.ProjectFileName = MyApplication.csproj -dMyApplication .ProjectName = MyApplication -dMyApplication.ProjectPath = D: \ Projects \ Research \ Wix_ProjectOutput \ MyApplication \ MyApplication.csproj -dMyApplication.TargetDir = D: \ Projects \ Research \ Wix_ProjectOutput \ Debug \ -dMyApp lication.TargetExt = .exe -dMyApplication.TargetFileName = MyApplication.exe -dMyApplication.TargetName = MyApplication -dMyApplication.TargetPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Debug \ MyApplication.exe -out obj \ Release \ -arch x86 Product. wxs

por qué se utilizó para la liberación acumulación de MySetup depuración de configuración de MyApplication ??

ACTUALIZACIÓN 2.

Y aquí es símbolo del sistema de la vela, cuando se utiliza msbuild desde la línea de comandos:

%windir%\Microsoft.NET\Framework\v4.0.30319\MsBuild.exe /verbosity:d /t:rebuild /fileLogger /p:Configuration=Release Wix_ProjectOutput.sln 

En msbuild.log:

C: \ Archivos de programa \ WiX conjunto de herramientas v3.6 \ bin \ vela.exe -d "DevEnvDir = Indefinido si no está compilando desde Visual Studio" -DSolutionDir = D: \ Projects \ Research \ Wix_ProjectOutput \ -dSolutionExt = .sln -dSolutionFileName = Wix_ProjectOutput.sln -dSolutionName = Wix_ProjectOutput -dSolutionPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Wix_ProjectOutput.sln -dConfiguration = Release -dOutDir = .. \ Release \ -dPlatform = x86 -dProjectDir = D: \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ -dProjectExt = .wixproj -dProjectFileName = MySetup.wixproj -dProjectName = MySetup -dProjectPath = D: \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ MySetup.wixproj -dTargetDir = D: \ Projects \ Research \ Wix_ProjectOutput \ Release \ -dTargetExt = .msi -dTargetFileName = MySetup.msi -dTargetName = MySetup -dTargetPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Release \ MySetup.msi -dMyApplication.Configuration = Versión -d "MyApplication.FullConfiguration = Versión | x86" -dMyApplication.Platform = x86 -dMyApplication.ProjectDir = D: \ Projects \ Research \ Wix_ProjectOutput \ MyApplication \ -dMyApplication.ProjectExt = .csproj -dMyApplication.ProjectFileName = MyApplication.csproj -dMyApplication.ProjectName = MyApplication -dMyApplication.ProjectPath = D: \ Projects \ Research \ Wix_ProjectOutput \ MyApplication \ MyApplication.csproj -dMyApplication.TargetDir = D: \ Projects \ Research \ Wix_ProjectOutput \ Release \ -dMyApplication.TargetExt = .exe -dMyApplication.TargetFileName = MyApplication.exe -dMyApplication.TargetName = MyApplication -dMyApplication.TargetPath = D : \ Proyectos \ Investigación \ Wix_ProjectOutput \ Release \ MyApplication.exe salida privado obj \ Release \ x86 -arch Product.wxs

Así, bajo msbuild todo está bien.

ACTUALIZACIÓN 3.

Parece que WiX usa configuración activa (vea el cuadro combinado en la barra de herramientas VS).
Es decir, si se selecciona Debug allí, los proyectos de WiX incluirán la salida de depuración de los proyectos a los que se hace referencia. Si se selecciona Release, los proyectos de WiX incluirán salida de lanzamiento.

Este comportamiento no es correcto desde mi punto de vista. El instalador Debug debe incluir depurar salida de proyectos referenciados. Release instalador - lanzamiento salida.

Error publicado here, pero ahora está cerrado sin ninguna explicación.

¿Alguna idea?

Respuesta

0

trate de añadir una variable de MyApplication.Configuration y la puso a Release siguiendo los pasos:

  1. Haga clic derecho en el nodo Referencias del proyecto en el Explorador de soluciones y seleccione Agregar referencia ...
  2. En el cuadro de diálogo Agregar referencia de biblioteca de WiX, haga clic en la pestaña Proyectos.
  3. Seleccione el (los) proyecto (s) deseado (s) y haga clic en el botón Agregar, luego haga clic en Aceptar para cerrar el cuadro de diálogo.

Detalles here.

+0

Esta variable ya está definido, y su valor es 'Debug' . He publicado un error en el rastreador de WiX, pero ahora está cerrado sin ninguna explicación. Actualizado mi pregunta. – Dennis

0

Como hago exactamente lo que está intentando regularmente con éxito, sospecho que confunde la configuración de la solución con la configuración del proyecto. Una configuración de solución de foo puede usar una configuración de proyecto de bar - solo son nombres y no tienen que coincidir.Verifique el administrador de configuración (BUILD → Configuration Manager ... en VS2012) y verifique que cuando la configuración de su solución sea "Liberar", la configuración de su proyecto también será "Liberar".

7

Es posible utilizar $ (var.Configuration), que se fija a la configuración de la solución (depuración, liberación, etc ...):

<File Id="MyApp.exe" KeyPath="yes" Source="..\MyApp\$(var.Configuration)\MyApp.exe" /> 
Cuestiones relacionadas