No se pudo encontrar el archivo requerido ‘setup.bin’

No puedo construir un proyecto de instalación en VS2010, para un proyecto de servicio de Windows. Falla con este error:

No se pudo encontrar el archivo requerido ‘setup.bin’ en ‘C: \ MyProject \ Engine’.

Mi entorno es Windows 7 Professional x64 con Visual Studio 2010 versión 10.0.40219.1 SP1Rel

He descargado Microsoft Windows SDK para Windows 7 y .NET Framework 4 , reparado, luego reiniciado, luego instalé los componentes no comprobados excepto el comstackdor de Visual C ++, luego instalé KB2519277 .

Estas son las entradas de registro existentes:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\GenericBootstrapper\3.5 Path = c:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\ HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\GenericBootstrapper\4.0 Path = c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\ 

Estos son los archivos existentes:

 C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine\setup.bin C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Engine\setup.bin 

Una solución existente es copiar el directorio del motor al directorio del proyecto, sin embargo, esto tiene que hacerse cada vez que realice un nuevo proyecto.

¿Cómo se puede arreglar esto correctamente?

Con Process Monitor descubrí que, justo antes de intentar acceder a la ruta, se usa una DLL para recuperar esta ruta. Lo siguiente puede ser legal en el límite, pero me gustaría compartir mis hallazgos de todos modos.

El archivo DLL se encuentra en C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll y la clase que se utiliza es Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder . Usando su herramienta de desensamblaje favorita, puede encontrar que en última instancia se realizan tres bashs para recuperar la ruta.

  1. HKLM \ Software \ Microsoft \ GenericBootstrapper \ 11.0 \ Path
  2. HKLM \ Software \ Wow6432Node \ Microsoft \ GenericBootstrapper \ 11.0 \ Path
  3. Environment.CurrentDirectory

No estoy seguro de por qué dice 11.0 , por lo que puedo recordar, VS 2012 no se ha instalado en esta máquina antes.

Entonces, hay un error en el instalador de SDK o hay un error en la DLL. De cualquier forma, crear la clave de registro 11.0 y agregar el valor resuelve este problema. Nota: Visual Studio debe reiniciarse porque, después de intentar recuperar la ruta, se almacena en caché.

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GenericBootstrapper\11.0] "Path"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bootstrapper\\" 
 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\GenericBootstrapper\11.0] "Path"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bootstrapper\\" 

Antes de bajar por el agujero del conejo, verifica que necesites el arranque. Si no lo hace, puede apagarlo haciendo uno de los siguientes. Esto también resolverá el error.

La forma de GUI:

  1. Haga clic derecho en el proyecto
  2. Haga clic en Properties
  3. Haga clic en la pestaña Publish a la izquierda
  4. Haga clic en el botón Prerequisites...
  5. Desmarque Create setup program to install prerequisite components

Propiedades del proyecto

Esta respuesta vino de esta publicación .

La forma de editar manualmente el archivo csproj :

  1. Agregue false a la parte inferior del primer elemento

Esta solución funcionó para mí (VS 2013): http://www.codewrecks.com/blog/index.php/2014/05/31/error-msb3147-could-not-find-required-file-setup-bin- en/

Cambie la RUTA de msbuild.exe a: C:\Program Files (x86)\MsBuild\12.0\Bin\msbuild.EXE

Tuve el mismo problema con una comstackción TFS.

Puede resolver el problema configurando la versión de Visual Studio en los argumentos de MSBuild de la construcción de definición:

 /property:VisualStudioVersion=12.0; 

Argumentos de MSBuild en la definición de compilación

Es una solución de varios pasos.

Primero asegúrese de tener instalados los .Net SDK.

A continuación, asegúrese de que existe la siguiente entrada de registro: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\GenericBootstrapper\11.0

Debe contener una entrada ‘Ruta’ con el valor que apunta a la ubicación del progtwig de arranque: C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\

El siguiente script de PowerShell lo hace por usted:

 $registryPath = "Registry::HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\GenericBootstrapper\11.0" $registryValue = "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\" function CreateRegistryValues { if(-not (Test-Path $registryPath ) ) { Push-Location Set-Location -Path Registry::HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\GenericBootstrapper # First add the registry item New-Item -Name '11.0' -Value $registryValue #Then add a property on it for 'Path' and the folder in bootstrapper that contains the 'Engine' folder New-ItemProperty ` -Path $registryPath ` -Name 'Path' ` -PropertyType String ` -Value $registryValue Pop-Location }else{ Write-Warning "You already have the registry key ($registryPath) set. `r`n No action was taken `r`n " } } 

Finalmente, debe copiar el contenido de la carpeta ‘Engine’ incluida como parte de las herramientas de Visual Studio en la ubicación que figura en el valor del registro:

 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\" 

MI SOLUCIÓN AL PROBLEMA: no se puede publicar, porque no se puede encontrar setup.bin

Al usar el asistente PUBLISH en vs2008, la aplicación no se puede publicar porque no se puede encontrar setup.bin.


La respuesta corta es:

Pegue la carpeta del engine en la ubicación que se indica en el mensaje ERROR en el IDE vs2008.

La carpeta del engine se puede encontrar en la carpeta Microsoft SDKs .


La respuesta larga es:

En mi caso, vs2008 buscaba setup.bin en C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\engine\ .

Esta ubicación se indicó en el error dentro del IDE vs2008.

La carpeta del engine no existía en la ubicación anterior, porque la carpeta del engine no estaba allí.

La carpeta del engine estaba, de hecho, en C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine .

Esta ubicación de la carpeta del engine se encontró buscando en el registro una ocurrencia de setup.bin

Copié la carpeta del engine carpeta Microsoft SDKs y la pegué en la carpeta Microsoft Visual Studio 9.0 .

Esta copia de la carpeta resolvió el problema y me permitió publicar una aplicación.

Estos son los pasos específicos que tomé:

  1. Busque en el registro para setup.bin

  2. Cuando se encuentra setup.bin en el registro, inspeccione la clave y observe la ubicación de la carpeta de setup.bin (en mi caso esto fue C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine )

  3. En el IDE VS2008, busque en la ventana ERROR y observe la ubicación de la carpeta para el error setup.bin (en mi caso esto fue C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\engine\ )

  4. El IDE vs2008 esperaba que setup.bin estuviera en C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\engine\ , pero esta carpeta de engine no existía

  5. Copie la carpeta del engine de C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine y pegue esta carpeta en la carpeta IDE en C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\