web-dev-qa-db-fra.com

Impossible de trouver le fichier requis 'setup.bin'

Je ne parviens pas à créer un projet d'installation dans VS2010 pour un projet de service Windows. Il échoue avec cette erreur:

Impossible de trouver le fichier requis 'setup.bin' dans 'C:\MyProject\Engine'.

Mon environnement est Windows 7 Professionnel x64 avec Visual Studio 2010 Version 10.0.40219.1 SP1Rel.

J'ai téléchargé SDK Microsoft Windows pour Windows 7 et .NET Framework 4 , réparé, puis redémarré, puis installé les composants non vérifiés à l'exception du compilateur Visual C++, puis installé KB2519277 .

Voici les entrées de registre existantes:

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\

Ce sont les fichiers existants:

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

Une solution de contournement existante consiste à copier le répertoire Engine dans le répertoire du projet. Toutefois, cette opération doit être effectuée chaque fois que vous créez un nouveau projet.

Comment cela peut-il être corrigé correctement?

27
Stijn

Avec Process Monitor, j'ai constaté que juste avant d'essayer d'accéder au chemin, un DLL est utilisé pour récupérer ce chemin. Ce qui suit est peut-être légal, mais j'aimerais quand même partager mes découvertes.

La DLL est située à C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll et la classe utilisée est Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder. En utilisant votre outil de désassemblage préféré, vous pouvez constater qu’en fin de compte trois tentatives sont effectuées pour récupérer le chemin.

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

Je ne sais pas pourquoi il est écrit 11.0 , pour autant que je sache, VS 2012 n’a pas été installé sur cette machine auparavant.

Donc, il y a un bogue dans le programme d'installation du SDK ou il y a un bogue dans la DLL. Quoi qu'il en soit, la création de la clé 11.0 registry et l'ajout de la valeur résolvent ce problème. Remarque: Visual Studio doit être redémarré, car après avoir tenté de récupérer le chemin, il est mis en cache.

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\\"
22
Stijn

Avant de descendre dans le terrier du lapin, vérifiez que vous avez besoin du bootstrapper. Si vous ne le faites pas, vous pouvez le désactiver en effectuant l’une des opérations suivantes. Cela résoudra également l'erreur.

La manière de l'interface graphique:

  1. Clic droit sur le projet
  2. Cliquez sur Properties
  3. Cliquez sur l'onglet Publish à gauche
  4. Cliquez sur le bouton Prerequisites...
  5. Décocher Create setup program to install prerequisite components

 Project Properties

Cette réponse provient de ce post .

Le fichier csproj édité manuellement:

  1. Ajoutez <BootstrapperEnabled>false</BootstrapperEnabled> au bas du premier élément <PropertyGroup>
15
Ryan Gates

J'ai eu le même problème avec une construction TFS.

Vous pouvez résoudre le problème en définissant la version de Visual Studio dans les arguments MSBuild de la génération de définition:

/property:VisualStudioVersion=12.0;

 MSBuild arguments in build definition

5
Troopers

Cette solution a fonctionné pour moi (VS 2013): http://www.codewrecks.com/blog/index.php/2014/05/31/error-msb3147-could-not-find-required-file-setup- bin-in/

Remplacez le PATH du fichier msbuild.exe par: C:\Program Files (x86)\MsBuild\12.0\Bin\msbuild.EXE

5
teocomi

C'est une solution multi-étapes.

Tout d’abord, assurez-vous que les SDK .Net sont installés. 

Assurez-vous ensuite que l’entrée de registre suivante existe: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\GenericBootstrapper\11.0

Il doit contenir une entrée 'Path' avec la valeur pointant vers l'emplacement du programme d'amorçage: C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\

Le script Powershell suivant le fait pour vous: 

$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 "
    }
}

Enfin, vous devez copier le contenu du dossier 'Engine' inclus dans les outils Visual Studio à l'emplacement indiqué dans la valeur de registre: 

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

MA SOLUTION AU PROBLÈME: impossible de publier, car setup.bin est introuvable

Lors de l'utilisation de l'assistant de publication dans vs2008, l'application ne peut pas être publiée car setup.bin est introuvable.


La réponse courte est:

Collez le dossier engine à l’emplacement indiqué dans le message ERROR de l’EDI vs2008.

Le dossier engine se trouve dans le dossier Microsoft SDKs.


La réponse longue est:

Dans mon cas, vs2008 cherchait setup.bin dans C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\engine\.

Cet emplacement était indiqué dans l'erreur dans l'EDI vs2008.

Le dossier engine n'existait pas à l'emplacement ci-dessus, car le dossier engine n'y était pas.

Le dossier engine était en fait à C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine.

Cet emplacement de dossier engine a été trouvé en recherchant dans le registre une occurrence de setup.bin.

J'ai copié le dossier engine à partir du dossier Microsoft SDKs et l'ai collé dans le dossier Microsoft Visual Studio 9.0.

Cette copie de dossier a résolu le problème et m'a permis de publier une application.

Voici les étapes spécifiques que j'ai prises:

  1. Rechercher dans le registre pour setup.bin

  2. Lorsque setup.bin est trouvé dans le registre, inspectez la clé et notez l'emplacement du dossier de setup.bin (dans mon cas, c'était C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine)

  3. Dans l'EDI VS2008, recherchez dans la fenêtre ERREUR et notez l'emplacement du dossier de l'erreur setup.bin (dans mon cas, il s'agissait de C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\engine\).

  4. Vs2008 IDE s'attendait à ce que setup.bin soit dans C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\engine\, mais Ce dossier engine n'existait pas

  5. Copiez le dossier engine à partir de C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine et collez ce dossier dans le dossier IDE à C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\.

0
microstoc