Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

MS Visual C++ 2005 Prerequisites


2 replies to this topic

Phil_b

Phil_b
  • Full Members
  • 40 posts

Posted 21 August 2008 - 16:33

Hallo zusammen

Für ein mit Installshield 2008 erstelltes Setupprojekt muss u.a. das MS Visual C++ 2005 Redistributable Package installiert sein.

Anscheinend gibt's kein dazu gehörendes Prerequisites für Installshield 2008, darum habe ich ein eigenes erstellt.

Weiss jemand was ich für eine Install condition angeben kann um zu überprüfen ob die Runtime installiert ist oder nicht ?

Danke für eure tipps

Phil_B

Maharani

Maharani
  • Full Members
  • 50 posts

Posted 30 October 2008 - 10:37

Wir packen die im VisualStudio enthaltene vcredist_x86.exe mit auf die Setup-CD und starten sie dann mit LaunchAppAndWait, wenn noetig. Um zu ueberpruefen, ob die Installation noetig ist, haben wir frueher einfach die aktuelle Version der DLLs im System abgefragt, das geht aber inzwischen aufgrund der Systemwiederherstellung-Punkte und/oder Schutzmechanismen von XP nicht mehr so einfach, darum ueberpruefen wir die Version anhand der Installationseintraege von vcredist in der Registry:

CODE

function CheckMFCRT8()  
   string szKey, szName, szVersion, szDummy;
   number nType, nSize, nResult, nReg;
begin    
   nResult = INSTALL_NOTHING;
   
   szKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
   szKey = szKey + "{7299052b-02a4-4627-81f2-1818da5d550d}";
   szName = "DisplayVersion";
   RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
   nReg = RegDBGetKeyValueEx(szKey, szName, nType, szDummy, nSize);
   RegDBSetDefaultRoot(HKEY_CLASSES_ROOT);        

   if (nReg != 0) then
       nResult = INSTALL_MFCRT8;
   else
       szVersion = "8.0.56336.0";                        
       if (VerCompare(szVersion, szDummy, VERSION) = GREATER_THAN) then
           nResult = INSTALL_MFCRT8;
       endif;
   endif;                                          

   return nResult;
end;


Der Wert in szVersion bezieht sich dabei auf die VCRedist, die zum VisualStudio 2005 mit SP1 gehoert, ohne SP1 war der Wert "8.0.50727.42". Aber das kriegt man ja durch Nachgucken schnell raus, welche VCRedist man selber installiert.
INSTALL_NOTHING und INSTALL_MFCRT8 sind vordefinierte Werte fuer eine Bitmaske, wir muessen ausser MFCRT8 ggf. noch andere Fremd-Setups ausfuehren. Bei Euch tut's sicher auch ein TRUE/FALSE.

Das ist jetzt zwar nicht der Weg ueber ein selbst erstelltes IS-Prerequiste, damit habe ich mich noch nicht beschaeftigt. Vielleicht koennt Ihr eine entsprechende Ueberpruefung da irgendwo einbauen.

Vermutlich gibt es auch einen huebscheren Weg. Ich weiss auch nicht, ob die GUIDs vom VCRedist-Setup ueber alle Versionen konstant bleiben und was sich an solchen Registry-Pfaden noch aendern wird. Unter XP und Vista funktioniert es so jedenfalls erst mal. War uebrigens ziemlich nervig, das rauszubekommen - Dinge, die ich noch nie ueber mein Betriebssystem wissen wollte... wink.gif

Gruss
Rita


Holger_G

Holger_G
  • Full Members
  • 155 posts

Posted 30 October 2008 - 15:28

Vielleicht hilft ja auch noch dieser Blog Artikel weiter:
http://blogs.msdn.co...le-package.aspx