Frage

Ich habe eine Frage sehr ähnlich href="https://stackoverflow.com/questions/203195/how-to-detect-vc-2008-redistributable"> diese eine

Software Ich bin Beibehaltung der Einrichtung für auf VC hängt ++ 2008 (SP1, genau), so muss ich eine Lösung finden VCRedist zu installieren, wenn noch nicht installiert. Ich verstehe die richtige Art und Weise msi mit Mergemodulen zu bauen wäre, aber es ist nicht auf meine Hände.

Die Antwort der doppelten Frage, die ich (die akzeptierte ein) beziehen mich nicht für mich arbeiten, weil jede kleine Release (zB 9.0.30729.01 vs 9.0.30729.17) proper GUIDs hat, die ich nicht in der Lage bin zu erraten oder vorhersagen für zukünftige Versionen. Außerdem rechne ich, dass dies nicht von Visual Studios erkennen würde und somit unnötig das VCRedist Paket installieren, wenn es bereits auf einer Entwickler-Maschine. Ich will nicht zu Bug jemand mit diesem, sicherlich jemand nicht, die bereits eine DevStudio installiert ist.

Nun eine andere Antwort sagt, dass ich in der WinSxS-Ordner wie $WINDIR\WinSxS\x86_Microsoft.VC80.CRT_ aussehen sollte, aber dies wird (noch) nicht helfen mir SP1 zu bedeuten, oder ist es etwas, was ich an dieser Stelle bin fehlt? Gibt es eine Tabelle irgendwo mit der internen und „externen“ Versionsnummern, so konnte ich eine bestimmte Nebenversionsnummer bedeuten?

Ich kann nicht glauben, dass es nichts von Microsoft für dieses Szenario vorgesehen ist, aber die interwebs Suche viel zu für bereits lange jetzt bringt mich zurück zu guten alten SO:)

War es hilfreich?

Lösung

Sie können die empfohlene Ansatz directx für die Installation: immer die verteilbare laufen. Da es erforderlich ist und der Versand erfolgen du es schon es gibt keinen Schaden im Inneren läuft, auch wenn es bereits installiert ist.

Andere Tipps

Für Visual Studio C ++ 2010 bekam die Dinge ein wenig einfacher .

  

Im Gegensatz zu den Visual C ++ 2005 und 2008 verteilbaren Pakete gibt es Registrierungsschlüssel, die verwendet werden können, um das Vorhandensein des Visual C ++ 2010 Redistributable zu erkennen.

     

Visual C ++ 2010 Redistributable Erkennungsregistrierungswerte

     

Visual C ++ 2010 Redistributable Package (x86)

     

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Visualstudio \ 10.0 \ VC \ VCRedist \ x86]   Installierte = 1 (REG_DWORD)

     

Visual C ++ 2010 Redistributable Package (x64)

     

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Visualstudio \ 10.0 \ VC \ VCRedist \ x64]   Installierte = 1 (REG_DWORD)

     

Visual C ++ 2010 Redistributable (ia64)

     

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Visualstudio \ 10.0 \ VC \ VCRedist \ ia64]   Installierte = 1 (REG_DWORD)

Hinweis : Sie müssen unter Wow6432Node auf einem 64-Bit-Betriebssystem überprüfen. (HKLM \ Software \ Wow6432Node \ Microsoft ....)

Wenn Sie die ältere Version mögen, hier sind die GUIDs

Visual C ++ 2010 Redistributable Produktcodes

  • Visual C ++ 2010 Redistributable Package (x86) - {196BB40D-1578-3D01-B289-BEFC77A11A1E}
  • Visual C ++ 2010 Redistributable Package (x64) - {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}
  • Visual C ++ 2010 Redistributable (ia64) - {C1A35166-4301-38E9-BA67-02823AD72A1B}

Visual C ++ 2010 SP1 Redistributable Produktcodes

  • Visual C ++ 2010 SP1 Redistributable Package (x86) - {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
  • Visual C ++ 2010 SP1 Redistributable Package (x64) - {1D8E6291-B0D5-35EC-8441-6616F567A0F7}
  • Visual C ++ 2010 SP1 Redistributable (ia64) - {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}

sieht aus wie es eine andere Lösung Vorschlag ein Microsoft-Entwickler unter Verwendung von MsiQueryProductState API leider auch auf der GUIDs unter Berufung .

Update : Der Code Live gestern ging und scheint gut zu funktionieren. Hier ist das, was getan wird gerade: Es wird geprüft, für die neueste bekannt-to-me-GUID und die path² to-wo-es-ist-soll-zu-sein-installiert. Wenn beide fehlschlägt, wird es installiert. Dies scheint gut zu funktionieren.

Darüber hinaus ist es mit den Befehlszeilenargumenten „/ qb“ installiert, die „unbeaufsichtigt aber nicht unsichtbar“ bedeutet. Siehe dieser anderen Blog-Post über diese params.

FWIW, GUIDs für Microsoft Visual C ++ 2008 / VC90 SP1 Redistributable - x86 9.0.30729

  • 64bit 30.729,17: 8220EEFE-38CD-377E-8595-13398D740ACE
  • 32bit 30.729,17: 9A25302D-30C0-39D9-BD6F-21E6EC160475
  • 32bit 30.729,01: 6AFCA4E1-9B78-3640-8F72-A7BF33448200

² Der Weg: $WINDIR\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729*

I Open-Source , die für ++ verteilbare DLLs VC prüft speziell und machte sie unter der Apache-2.0-Lizenz zur Verfügung.

Es verfügt über drei verschiedene Methoden zur Überprüfung der Verfügbarkeit von VC ++ 9 und VC ++ 10 Runtimes:

  1. Prüft die MsiQueryProductState APIs;
  2. Überprüfen Sie den Inhalt des Ordners WinSxS für Produktverzeichnisse übereinstimmt; und
  3. Prüft das aktuelle Arbeitsverzeichnis für alle lokalen Versionen der VC ++ 9 und VC ++ 10 Runtimes (und überprüft dessen Inhalt.)

Hier ist ein Beispiel, was mit es tatsächlich aussieht:

 wcout << _T("Checking for the availability of VC++ runtimes..") << endl;
 wcout << _T("----------- Visual C++ 2008 (VC++9) -----------") << endl;
 wcout << _T("Visual C++ 2008 (x86) ? ") << (IsVC2008Installed_x86() ? _T("true") : _T("false")) << endl;
 wcout << _T("Visual C++ 2008 (x64) ? ") << (IsVC2008Installed_x64() ? _T("true") : _T("false")) << endl;
 wcout << _T("Visual C++ 2008 SP1 (x86) ? ") << (IsVC2008SP1Installed_x86() ? _T("true") : _T("false")) << endl;
 wcout << _T("Visual C++ 2008 SP1 (x64) ? ") << (IsVC2008SP1Installed_x64() ? _T("true") : _T("false")) << endl;

I lizenziert die crt-Detektor Projekt unter Apache 2,0, so fühlen sich frei, es in Ihren eigenen Anwendungen zu nutzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top