6

Ich habe kürzlich vs2012 installiert und ich habe meine ClickOnce-Anwendung aktualisiert. Um genau zu sein, das erste Mal, dass ich meine C++ project geöffnet habe (auf der hängt mein primäres C# -Projekt) Ich habe es nicht aktualisiert und alles hat gut funktioniert. VS 2012 konnte weiterhin die Visual C++ 2010-Voraussetzung erkennen. Später habe ich mein Projekt aktualisiert, indem ich das Platform Toolset auf "Visual Studio 2012 (v110)" unter Properties->Configuration Properties->General änderte.Fehlende Voraussetzungen für Visual C++ in Visual Studio 2012

In der Zwischenzeit habe ich sogar andere software installiert und jetzt habe ich festgestellt, dass ich nicht mehr die Visual C++ - Voraussetzung für das ClickOnce-Publishing zu meinem Projekt hinzufügen kann. Die Visual C++ 2010 Runtime Libraries (x64) Voraussetzung ist mit einem gelben Dreieck markiert und es fehlt. Im Idealfall möchte ich auf Visual C++ 2012 Runtime Libraries x64 (and x86) aktualisieren, aber selbst diese Voraussetzung fehlt.

Ich denke, es ist aufgrund der Tatsache, dass in dem Ordner C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages das entsprechende Paket (vcredist_x64) ist leer. Ich habe auch bemerkt, dass in der Liste der installierten Programme in der Systemsteuerung ich Microsoft Visual C++ 2010 x64 und x86 installiert hatte, sowohl die Redistributable-Version und die Runtime-Version (ich denke, sie wurden zuvor mit Visual Studio 2010 installiert), während ich das Visual fehlte C++ 2012 Dateien. Daher argumentiere ich, dass Visual C++ 2012 nicht mit Visual Studio 2012 zusammen gekommen ist, oder? Ich habe sogar versucht, die Visual C++ 2012 Redistributable x64 Pakete zu installieren, indem Sie sie herunterladen, und jetzt sind sie in meinen installierten Programmen 8nur die Redistributable, nicht die Runtime-Version aufgelistet).

Die Voraussetzung fehlt jedoch noch. Wie kann ich das lösen? Ich habe sogar darüber nachgedacht, manuell das Bootstrapper-Paket für Visual C++ 2010 im Ordner ... \v7.0A\Bootstrapper\Packages zu kopieren und es manuell für C++ 2012 zu ändern, aber ich weiß nicht, was ich in product.xml unter <MsiProductCheck Property="VCRedistInstalled" Product=?> schreiben sollte. Es scheint, dass die Produkt-GUID zum Einfügen dieser Informationen mit Bootstrapper Manager erhalten werden kann, aber dieses Programm wirft eine Menge Ausnahme und ich weiß nicht, wie es geht. Als eine zweite Lösung ist es sicher, das Paket für Visual C++ 2010 von \\v7.0A\Bootstrapper\Packages\Bootstrapper\Packages to \v8.0A\Bootstrapper\Packages einfach zu kopieren?

Antwort

3

Gehen Sie zu \ v8.0A \ Bootstrapper \ Packages und vergewissern Sie sich, dass Sie den Ordner vcredist_x86 haben.

In diesem Ordner sollten Sie ein "en" Ordner, die dort bleiben sollten, werden Sie

  1. product.xml
  2. vcredist_x86.exe

fehlt Sie können die erforderlichen .exe von http://go.microsoft.com/fwlink/?LinkID=266495&clcid=0x409

Was die product.xml

<?xml version="1.0" encoding="utf-8" ?> 

    <Product 
     xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" 
     ProductCode="Microsoft.Visual.C++.11.0.x86" 
    > 

     <!-- Defines list of files to be copied on build --> 
     <PackageFiles> 
     <PackageFile Name="vcredist_x86.exe" HomeSite="VCRedistExe"/> 
     </PackageFiles> 
     <InstallChecks> 
     <MsiProductCheck Property="VCRedistInstalled" Product="{6C772996-BFF3-3C8C-860B-B3D48FF05D65}"/> 
     </InstallChecks> 

     <!-- Defines how to invoke the setup for the Visual C++ 11.0 redist --> 
     <!-- TODO: Needs EstrimatedTempSpace, LogFile, and an update of EstimatedDiskSpace --> 
     <Commands Reboot="Defer"> 
     <Command PackageFile="vcredist_x86.exe" 
      Arguments=' /q:a ' 
      > 

      <!-- These checks determine whether the package is to be installed --> 
      <InstallConditions> 
      <BypassIf Property="VCRedistInstalled" Compare="ValueGreaterThanOrEqualTo" Value="3"/> 
      <!-- Block install if user does not have admin privileges --> 
      <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/> 

      <!-- Block install on Win95 --> 
      <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/> 

      <!-- Block install on NT 4 or less --> 
      <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.00" String="InvalidPlatformWinNT"/> 

      </InstallConditions> 

      <ExitCodes> 
      <ExitCode Value="0" Result="Success"/> 
      <ExitCode Value="3010" Result="SuccessReboot"/> 
      <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> 
      </ExitCodes> 

     </Command> 
     </Commands> 
    </Product> 
+0

Dank ist, wie etwa vcredist_x64.exe? – Berezh

+0

Noam's Antwort ist korrekt, außer dass msbuild zwei Kopien der "xml version ..." Zeile nicht mag. Ich entfernte einen und ich konnte msbuild auf einem Skript ausführen, um eine Setup-Datei zu erstellen. –

1

Für diejenigen, die eine ähnliche Antwort für die 2012 x64 Vcredist suchen, hier ist eine, die ich zusammengeschustert, das scheint zu arbeiten. Beachten Sie den Download-Link http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe

<?xml version="1.0" encoding="utf-8" ?> 

<Product 
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" 
    ProductCode="Microsoft.Visual.C++.11.0.x64" 
> 

    <!-- Defines list of files to be copied on build --> 
    <PackageFiles> 
    <PackageFile Name="vcredist_x64.exe" HomeSite="VCRedistExe"/> 
    </PackageFiles> 
    <InstallChecks> 
    <MsiProductCheck Property="VCRedistInstalled" Product="{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}"/> 
    </InstallChecks> 

    <!-- Defines how to invoke the setup for the Visual C++ 11.0 redist --> 
    <!-- TODO: Needs EstimatedTempSpace, LogFile, and an update of EstimatedDiskSpace --> 
    <Commands Reboot="Defer"> 
    <Command PackageFile="vcredist_x64.exe" 
     Arguments=' /q:a ' 
     > 

     <!-- These checks determine whether the package is to be installed --> 
     <InstallConditions> 
     <BypassIf Property="VCRedistInstalled" Compare="ValueGreaterThanOrEqualTo" Value="3"/> 
     <!-- Block install if user does not have admin privileges --> 
     <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/> 

     <!-- Block install on any platform other than x64 --> 
     <FailIf Property="ProcessorArchitecture" Value="AMD64" Compare="ValueNotEqualTo" String="InvalidOS"/> 

     <!-- Block install on Vista or below --> 
     <FailIf Property="VersionNT" Compare="VersionLessThan" Value="6.00" String="InvalidPlatformWinNT"/> 

     </InstallConditions> 

     <ExitCodes> 
     <ExitCode Value="0" Result="Success"/> 
     <ExitCode Value="3010" Result="SuccessReboot"/> 
     <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> 
     </ExitCodes> 

    </Command> 
    </Commands> 
</Product> 
Verwandte Themen