Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not find required file 'setup.bin'

I'm unable to build a Setup Project in VS2010, for a Windows Service project. It fails with this error:

Could not find required file 'setup.bin' in 'C:\MyProject\Engine'.

My environment is Windows 7 Professional x64 with Visual Studio 2010 Version 10.0.40219.1 SP1Rel

I've downloaded Microsoft Windows SDK for Windows 7 and .NET Framework 4, repaired, then rebooted, then installed the unchecked components except Visual C++ compiler, then installed KB2519277.

These are the existing registry entries:

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\

These are the existing files:

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

An existing workaround is to copy the Engine directory to the project directory, however this has to be done every time you make a new project.

How can this be fixed properly?

like image 503
user247702 Avatar asked Jun 21 '12 13:06

user247702


4 Answers

With Process Monitor I found that, right before trying to access the path, a DLL is used to retrieve this path. The following may be borderline legal, but I'd like to share my findings anyway.

The DLL is located at C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll and the class being used is Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder. Using your favourite disassembly tool, you can find that ultimately three attempts are made at retrieving the path.

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

I'm unsure why it says 11.0, as far as I can remember VS 2012 has not been installed on this machine before.

So there's a bug in the SDK installer or there's a bug in the DLL. Either way, creating the 11.0 registry key and adding the value resolves this issue. Note: Visual Studio must be restarted, because after attempting to retrieve the path, it is cached.

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\\"
like image 138
user247702 Avatar answered Nov 17 '22 14:11

user247702


Before going down the rabbit hole, verify that you need the bootstrapper. If you do not, then you can turn it off by doing one of the following. This will also resolve the error.

The GUI way:

  1. Right Click on the Project
  2. Click Properties
  3. Click the Publish Tab on the left
  4. Click the Prerequisites... button
  5. Uncheck Create setup program to install prerequisite components

Project Properties

This answer came from this post.

The manually edit csproj file way:

  1. Add <BootstrapperEnabled>false</BootstrapperEnabled> to the bottom of the first <PropertyGroup> element
like image 19
Ryan Gates Avatar answered Nov 17 '22 12:11

Ryan Gates


This solution worked for me (VS 2013): http://www.codewrecks.com/blog/index.php/2014/05/31/error-msb3147-could-not-find-required-file-setup-bin-in/

Change the PATH of the msbuild.exe to: C:\Program Files (x86)\MsBuild\12.0\Bin\msbuild.EXE

like image 6
teocomi Avatar answered Nov 17 '22 14:11

teocomi


I had the same problem with a TFS build.

You can resolve the problem by setting the visual studio version in the MSBuild arguments of the definition build:

/property:VisualStudioVersion=12.0;

MSBuild arguments in build definition

like image 6
Troopers Avatar answered Nov 17 '22 14:11

Troopers