Habe InstallShield 2012 Professional Edition, Version 18 + SP1.
Ich habe Basic MSI Project und eine CA(Custom Action) die eine InstallSkript-Funktion aufruft.
Da benutze ich die Funktion "MsiGetProperty" um auf Eigenschaften der MSI-Installation zuzugreifen.
Ich habe folgendes Problem:
Property -> "ProductName" hat die Groesse 40 Byte!
svProductName wird 38 Byte nur zeigen!
Hier ist die Funktion meines Skriptes:
function dltWorkProduct_GUID(hMSI)
string svProductGuid[128], svProductName[128];
number nvCount;
begin
RegDBSetDefaultRoot( HKEY_USER_SELECTABLE );
nvCount = 127;
MsiGetProperty(hMSI, "ProductCode",svProductGuid, nvCount);
MsiGetProperty(hMSI, "ProductName",svProductName, nvCount);
MessageBox("MsiGetProperty: ProductName = " + svProductName ,INFORMATION);
// meine_Function(DLTPRODUCT_GUID, svProductName, svProductGuid, DLTPROD_INI);
end; // function dltWorkProduct_GUID(hMSI)
CA hat:
- "In-Script Execution" = Immediate Execution
- "Install Exec Sequence" = After InstallFinalize
Frage:
Darf man Property -> ProductName nicht Groesse als 38 Byte nutzen?
Stimmt es?
Danke im Voraus
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.
MsiGetProperty -> "ProductName"
Started by
bernard
, Apr 23 2012 10:50
2 replies to this topic
Posted 24 April 2012 - 08:42
Du musst nvCount zurücksetzen zwischen den beiden MsiGetProperty-Aufrufen.
MsiGetProperty(hMSI, "ProductCode",svProductGuid, nvCount);
setzt nvCount auf die Länge des zurückgelieferten Wertes. Der ProductCode ist eine GUID und die hat 38 Zeichen.
Du übergibts also jetzt nvCount=38 an diesen Aufruf:
MsiGetProperty(hMSI, "ProductName",svProductName, nvCount);
d.h. du forderst ausdrücklich an, dass nur 38 Zeichenzurückgeliefert werden.
Füge nvCount=127; zwischen die beiden Aufrufe ein.
MsiGetProperty(hMSI, "ProductCode",svProductGuid, nvCount);
setzt nvCount auf die Länge des zurückgelieferten Wertes. Der ProductCode ist eine GUID und die hat 38 Zeichen.
Du übergibts also jetzt nvCount=38 an diesen Aufruf:
MsiGetProperty(hMSI, "ProductName",svProductName, nvCount);
d.h. du forderst ausdrücklich an, dass nur 38 Zeichenzurückgeliefert werden.
Füge nvCount=127; zwischen die beiden Aufrufe ein.
Stefan Krüger
InstallSite.org twitter facebook
Posted 26 April 2012 - 06:23
QUOTE |
Füge nvCount=127; zwischen die beiden Aufrufe ein. |
Vielen Dank für den Tipp.
Jetzt funktioniert richtig!