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?
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.
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\\"
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:
Properties
Publish
à gauchePrerequisites...
Create setup program to install prerequisite components
Cette réponse provient de ce post .
Le fichier csproj
édité manuellement:
<BootstrapperEnabled>false</BootstrapperEnabled>
au bas du premier élément <PropertyGroup>
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
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\"
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:
Rechercher dans le registre pour setup.bin
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
)
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\
).
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
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\
.