Domanda

Ho una domanda molto simile a questo ma la risposta non funziona per me.

Software che sto mantenendo l'impostazione dipende da VC++ 2008 (SP1, appunto), quindi ho bisogno di trovare una soluzione per installare VCRedist se non è ancora installato.Posso capire il modo corretto sarebbe quello di costruire msi con i moduli di unione, ma non è sulle mie mani.

La risposta del duplicato domanda che mi riferisco a (accettato uno) non funziona per me, perché ogni piccolo release (ad es.9.0.30729.01 vs 9.0.30729.17) ha corretto il Guid, che io non sono in grado di anticipare per le future versioni.Inoltre, io credo che questo non rilevare Visual Studios e quindi inutilmente installare il VCRedist Pacchetto quando è già in corso una sviluppatori macchina.Non voglio bug nessuno con questo, non certo qualcuno che ha già un DevStudio installato.

Ora un'altra risposta, dice che mi deve guardare in WinSxs-cartella come $WINDIR\WinSxS\x86_Microsoft.VC80.CRT_ ma questo non è (ancora) mi aiutano a implica SP1, o c'è qualcosa che mi manca a questo punto ?C'è una tabella da qualche parte con l'interno e l'esterno "" i numeri di versione, così ho potuto comportare un certo numero di versione minore ?

Io non posso credere che non c'è nulla fornito da Microsoft per questo scenario, ma la ricerca interwebs già troppo lungo, ora mi porta di nuovo a good ol' COSÌ :)

È stato utile?

Soluzione

Si potrebbe prendere l'approccio consigliato per l'installazione di DirectX: eseguire sempre il ridistribuibile. Dal momento che è necessario e si sta già spedirlo non c'è nulla di male nel farlo funzionare anche se è già installato.

Altri suggerimenti

Per Visual Studio C++ 2010, le cose sono un po ' più facile.

A differenza di Visual C++ 2005 e 2008 redistributable package, ci sono chiavi di registro che può essere utilizzato per rilevare la presenza di Visual C++ 2010 redistributable package.

Visual C++ 2010 redistributable package rilevamento di valori del registro di sistema

Visual C++ 2010 Redistributable Package (x86)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86] Installato = 1 (REG_DWORD)

Visual C++ 2010 Redistributable Package (x64)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64] Installato = 1 (REG_DWORD)

Visual C++ 2010 Redistributable Package (ia64)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\ia64] Installato = 1 (REG_DWORD)

Nota:Avrete bisogno di controllare sotto Wow6432Node su un OS a 64 bit.(HKLM\Software\Wow6432Node\Microsoft....)

Se è come la versione precedente, qui sono Guid

Visual C++ 2010 redistributable package codice prodotto

  • 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 Package (ia64) - {C1A35166-4301-38E9-BA67-02823AD72A1B}

Visual C++ 2010 SP1 redistributable package codice prodotto

  • 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 Package (ia64) - {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}

Sembra che ci sia un'altra soluzione proposta da un Microsoft-sviluppatore, utilizzando MsiQueryProductState API , ahimè anche basandosi sui GUID .

Aggiorna : il codice è andato in diretta ieri e sembra funzionare bene. Ecco ciò che è provvisto sia fatto: E 'controllato per il GUID di ultima nota-to-me e il path² to-dove-si-è-supposto-to-be-installato. Se entrambi non riesce, è installato. Questo sembra funzionare bene.

Inoltre, si è installato con gli argomenti della riga di comando "/ qb" che significa "non presidiata, ma non invisibile". Vedere questo altro post del blog di quelle params.

FWIW, GUID per 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

² Il percorso: $WINDIR\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729*

I open-source un progetto di Visual C ++ su Github che verifica la presenza di VC ++ DLL ridistribuibili in particolare e lo ha reso disponibile sotto la licenza Apache 2.0.

Ha tre diversi metodi per la verifica della disponibilità di VC ++ 9 e VC ++ 10 runtime:

  1. Controlla le API MsiQueryProductState;
  2. Controllare il contenuto della cartella WinSxS per la corrispondenza directory del prodotto; e
  3. Verifica la directory di lavoro corrente per tutte le versioni locali del VC ++ 9 e VC ++ 10 tempi di esecuzione (e ispeziona il loro contenuto.)

Ecco un esempio di ciò che usarlo in realtà appare come:

 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 concesso in licenza il CRT-detector progetto sotto Apache 2.0, quindi sentitevi liberi di utilizzarlo nelle proprie applicazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top