2011-01-04 30 views
11

Estoy tratando de usar MSBuild (en CruiseControl) para compilar la instalación de mi aplicación .NET 4. La compilación de instalación debe crear un boostrapper para instalar el prerrequisito (.NET 4 y Windows Installer 4.5 en este caso), esto se hace usando el GenerateBootstrapper Task.MSBuild: error MSB3147: No se pudo encontrar el archivo requerido 'setup.bin'

Corriendo MSBuild.exe project.msbuild.xml desde la línea de comando en una máquina de desarrollo, que tiene VS 2010 instalado, funciona bien. Que se ejecuta en la máquina de construcción, que sólo cuenta con la última 7 SDK de Windows, se produce el error:

(ProductDistributions target) -> bootstrapper.xml(236,5): error MSB3147: 
Could not find required file 'setup.bin' in '<project path>\ProductDistributions\Engine'. 

En las máquinas dev, tengo una carpeta C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Engine que contiene un archivo setup.bin, sino en la máquina de construcción no hay Bootstrapper carpeta dentro de C:\Program Files\Microsoft SDKs\Windows\v7.1 (el 7.1 vs 7.0A es aparentemente porque VS2010 instala 7.0A, pero el SDK independiente es 7.1).

Además, en la máquina de construcción no hay ninguna clave 4.0 Registro en el interior HKLM\Software\Microsoft\GenericBootstrapper\, pero las máquinas dev ¿Tiene uno que contiene una cadena de ruta con un valor de c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\

Parece que hay algo que necesito para instalar en el construir máquina para agregar la carpeta Bootstrapper a "Microsoft SDKs \ Windows \ v7.1" (y configurar las claves de registro), pero no estoy seguro de qué es eso. ¿Alguna idea de lo que necesito obtener?

¿O hay algo más que necesito para que funcione mi instalación?

Actualizado: esto he trabajando en el momento copiando manualmente la carpeta de programa previo 7.0a de una máquina del revelador en la máquina de construcción, y añadiendo manualmente ese camino a la tecla HKLM\Software\Microsoft\GenericBootstrapper\4.0 registro. Lo cual parece funcionar, pero parece que esto no puede ser lo que se supone que debo hacer para solucionar el problema. Así que apreciaría si alguien tiene una solución menos hacky para esto.

+0

El cambio anterior de copiar el arranque de 7.0A y agregar manualmente la clave de registro solucionó el problema que tenía. Todavía estoy buscando una solución menos hacky, – IndigoDelta

+2

¿Por casualidad instalaste el .Net 4.5 beta en esa máquina? Tuve algunos problemas similares en mi estación de trabajo hasta que desinstalé por completo 4.5 (todo lo que hace referencia a 4.5 y VS11 en programas de agregar/quitar) y reinstalé 4.0 desde MSDN. –

+0

No, esta pregunta fue de enero de 2011, por lo que antes de 4.5 beta estaba disponible. – Wilka

Respuesta

4

Según t his blog entry, los archivos bootstrapper se instalan durante la instalación de .NET Framework SDK. También muestra las entradas de registro que se buscan para buscar el directorio bootstrapper.

Puede intentar instalar .NET Framework SDK o configurarlo manualmente copiando los archivos y agregando las entradas de registro.

+1

Hmmm, la máquina de compilación ya tenía .NET SDK y Windows SDK (que también debería instalarlo), pero traté de reinstalar de todos modos y no solucionó el problema.Consideré simplemente copiar los archivos, pero no estaba seguro si eso causaría otros problemas: todas las máquinas de desarrollo tienen 7.0A y las máquinas de compilación son 7.1, por lo que copiar 7.0A podría no funcionar. Supongo que solo veré qué pasa. – Wilka

+1

Parece que funciona, pero parece una solución incorrecta. Esperaré un poco antes de aceptar esta respuesta en caso de que alguien presente una solución menos hacky. Gracias, sin embargo, ahora tengo instalaciones construyendo nuevamente. – Wilka

+0

Para una futura referencia: [este blog] (http://jake.ginnivan.net/clickonce-bootstrapping-errors/) muestra que de alguna manera Windows pierde su referencia al archivo. Por lo tanto, agregar la clave de registro y copiar la carpeta del motor a la carpeta del proyecto resuelve este problema. –

2

Estoy teniendo el mismo problema pero no he intentado copiar manualmente los archivos y hackear el registro aunque también he escuchado de otros que también han tenido éxito al hacerlo.

Con el fin de obtener una solución más real para esto, he creado un feature request on the Connect.Microsoft.com site para implementar algún tipo de instalación mínima de Visual Studio con el fin de proporcionar una forma más fácil de configurar un Build Server con los archivos de desarrollo necesarios. Vota y/o comenta sobre la solicitud de función para ayudar a llamar la atención sobre este tema.

Cuestiones relacionadas