2008-11-19 17 views
17

Estoy empezando con WiX ya que necesito poder automatizar la creación de una MSI en nuestro servidor de CI. ¿Hay alguna forma de incluir automáticamente todas las dependencias de un proyecto?Incluyendo todas las dependencias

Respuesta

10

La extensión "proj" de heat.exe está mejorando. Heat 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 ahorrará 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.

+0

Descubrió el calor hace unos 10 minutos. Tengo la lista de dependencia ahora, así que no tengo que escribirla. Parece prometedor: D –

+0

Esta es una respuesta anterior, pero espero que ya no sea cierta y heat.exe se ha hecho lo suficientemente estable para el uso de producción ... :) – ostati

0

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!

0

No he visto algo en WIX que pueda hacer eso, se supone que debe conocer todas las dependencias que requiere su solución/proyecto. Lea este blog, el interior es una cita:

Mantenga su fuente cercana y sus dependencias más cercanas (. Apologías Sun-Tzu)

La mejor manera que encontré para asegurarse de que nada se olvida en el MSI, debía probar el Instalador en una PC virtual instalada limpia.

Lo más cercano que he visto, para algo que quieres es blog de este tipo.

Por ahora, estamos trabajados para hacerlo a mano.

0

Acabo de comenzar con WIX y creo que WixEdit (http://wixedit.sourceforge.net/) oscila para 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.

1

Eche un vistazo a paraffin, de Wintellect.

3

Acabo de comenzar con WIX también 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 el pre-construcción de su proyecto WIX, añadir

call "$(ProjectDir)GenerateDependency.bat" "$(SolutionDir)" "$(ProjectDir)Dependencies.wxs" 

añadir un archivo GenerateDependency.bat en su proyecto WIX contiene

@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 tu necesidad.Esta alma es la carpeta de salida del proyecto que desea empaquetar

Nota: Tenga en cuenta que VisualStudio suele perder el tiempo con la codificación. Mejor edite este archivo con Notepad ++ y asegúrese de que esté en ANSI, no en UTF8.

Esto generará una 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 realizar realmente el paquete.

Cuestiones relacionadas