Hallo
Ich hab diesen Thread gefunden: http://forum.install...showtopic=12215
Selbiges suche ich für IS6.
Die Funktionen, die ich hier gefudnen habe, funktioniert leider nicht wie gewünscht:
http://www.installsi...en/isp_comp.htm (Read ProductVersion from File)
VwrGetProductVersion liefert die selbe Information wie VerGetFileVersion.
In meinem Fall brauche in die Produkt-Version einer dll.
Diese hat als Dateiversion 9.2.0.0
und als Produktversion 9.2.0.4.8
Wie bereits erwähnt liefern beide Funktionen immer 9.2.0.0 zurück.
Kann mir da jemand weiterhelfen?
tia
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.
Datei - ProductVersion ermitteln
Started by
ICE3D
, Jun 03 2005 16:27
1 reply to this topic
Posted 15 June 2005 - 16:54
Mittlerweile hab ich das Problem selber lösen können.
Ich hab das Beispiel-Script (siehe oberer Post) etwas abgeändert.
Ich hab das Beispiel-Script (siehe oberer Post) etwas abgeändert.
CODE |
function VerGetProductVersion(sFile, sProductVersion) LONG fressize, freshnd, fiiaddr, fiilen, di; POINTER verbuf; STRING sVersion1, sVersion2, sVersion3, sVersion4, sVersion5, sVersion6; LONG lMaxBuf; begin UseDLL(WINSYSDIR ^ "Version.dll"); UseDLL(WINSYSDIR ^ "msvcrt.dll"); // // MAX_BUF must now be passed to malloc as a variable. // lMaxBuf = MAX_BUF; // get memory chunk verbuf = malloc(lMaxBuf); if (verbuf != 0) then // Determine if version information is present, and // if so how large a buffer is needed to hold it. fressize = GetFileVersionInfoSizeA(sFile, freshnd); // Version info is unlikely to ever be greater than MAX_BUF // but check anyway. If it was larger than MAX_BUF, we would // need to allocate a huge buffer instead. Note, we // are only using an approximation to MAX_BUF here to take // into account the InstallShield string overhead. if (fressize > MAX_BUF) then fressize = MAX_BUF; endif; // Load the string with the version information di = GetFileVersionInfoA(sFile, freshnd, fressize, verbuf); if (di > 0) then di = VerQueryValueA(verbuf, "\\StringFileInfo\\040904E4\\ProductVersion", fiiaddr, fiilen); if (di > 0) then Sprintf(sProductVersion, "%s", fiiaddr); endif; endif; // Now free the allocated memory. free(verbuf); endif; UnUseDLL(WINSYSDIR ^ "msvcrt.dll"); UnUseDLL(WINSYSDIR ^ "Version.dll"); end; |
Die Code-Page und die Sprache hab ich hardcoded drinnen, da ich zu 100% weiß, dass auf den Rechnern wo das Setup ausgeführt wird, diese Version installiert ist.
Wenn dies nicht der Fall wäre, müsste man die CodePages und Sprachen in einer Schleife durchgehen.
..:: there is no place like 127.0.0.1 ::..