wix - para - Incluyendo todas las dependencias
metaetiqueta wix (6)
Estoy empezando con WiX ya que necesito poder automatizar la construcción de una MSI en nuestro servidor de CI. ¿Hay alguna forma de incluir automáticamente todas las dependencias de un proyecto?
En mi experiencia, Wix sigue siendo un proceso muy manual. Tienes que agregar cada dependencia individualmente. Creo que la idea era construir el instalador Wix al mismo tiempo que estás construyendo tu proyecto y agregar cada elemento al agregarlo en el código. De esta manera, parece menos intimidante que tener que regresar y hacer una retrospectiva del proyecto. ¡Sin duda sería una gran sugerencia para una mejora!
No he visto algo en WIX que pueda hacer eso, se supone que debes conocer todas las dependencias que tu solución / proyecto requiere. Lee este blog , adentro hay una cita:
Mantenga su fuente cerca y sus dependencias más cerca (se disculpa Sun-tzu).
La mejor manera que encontré para asegurarme de que no se olvidó nada en el MSI fue probar el instalador en una PC virtual instalada y limpia.
Lo más cerca que he visto, por algo que quieres es el blog de este tipo.
Por ahora, estamos trabajados para hacerlo a mano.
Acabo de comenzar con WIX y creo que WixEdit ( http://wixedit.sourceforge.net/ ) se inclina por agregar múltiples archivos / dlls, resolvió mi frustración con Wix de obtener los archivos fácilmente. Simplemente mantenga sus archivos organizados y luego use la función de importar carpeta. Por supuesto, no es compatible con las nuevas recomendaciones 3.0 de tener un componente por archivo.
El calor también es bueno y admite un componente por archivo. El siguiente en mi lista es obtener algo de automatización para que estos archivos se actualicen automáticamente en un estudio visual.
También comencé con WIX e hice un truco rápido y sucio para agregar referencias automáticamente. La idea es escanear todo .dll en la carpeta de salida del proyecto que desea empaquetar.
En preconstrucción de su proyecto WIX, agregue
call "$(ProjectDir)GenerateDependency.bat" "$(SolutionDir)" "$(ProjectDir)Dependencies.wxs"
Agregue un archivo GenerateDependency.bat en su proyecto WIX que contenga
@echo off
set SOLUTIONDIR=%1
set OUTPUTFILE=%2
echo Starting Dependency check...
echo ^<?xml version="1.0" encoding="UTF-8"?^> > %OUTPUTFILE%
echo ^<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"^> >> %OUTPUTFILE%
echo ^<Fragment^> >> %OUTPUTFILE%
echo ^<ComponentGroup Id="MesDependance" Directory="INSTALLFOLDER"^> >> %OUTPUTFILE%
for %%F in (%SOLUTIONDIR%WixServiceInstallerExample/bin/Debug/*.dll) do (
echo "-- Adding %%~nxF"
echo ^<Component Id="%%~nF"^> >> %OUTPUTFILE%
echo ^<File Id="%%~nF" Name="%%~nxF" Source="%%~dpnxF" Vital="yes" KeyPath="yes" DiskId="1"/^> >> %OUTPUTFILE%
echo ^</Component^> >> %OUTPUTFILE%
)
echo ^</ComponentGroup^> >> %OUTPUTFILE%
echo ^</Fragment^> >> %OUTPUTFILE%
echo ^</Wix^> >> %OUTPUTFILE%
echo Dependency check done.
Modifique el "WixServiceInstallerExample / bin / Debug" según su necesidad. Esta alma es la carpeta de salida del proyecto que desea empaquetar
Nota: Tenga en cuenta que a menudo VisualStudio se complica con la codificación. Mejor edite este archivo con Notepad ++ y asegúrese de que esté en ANSI, no en UTF8.
Esto generará Dependencies.wxs que puede incluir en su proyecto. Si está bajo el control de la fuente, excluirlo de ella.
Cada compilación volverá a analizar .dll y reconstruirá Dependencies.wxs antes de crear realmente el paquete.
Echa un vistazo a la parafina , de Wintellect.
La extensión "proj" de heat.exe está mejorando. El calor no está listo para ser utilizado para la producción de manera automatizada. Es una forma muy razonable de armar la estructura inicial pero no hace lo correcto con ejecuciones repetidas (por ejemplo, los Component / @ Guids no son estables, sin embargo ...).
Cuando los problemas anteriores se resuelven en heat.exe, incorporarlo a su proceso de construcción ciertamente salvará todos los problemas mencionados anteriormente. Está en nuestra lista para mejorar después de que los errores más notorios se arreglan en el conjunto de herramientas del núcleo.