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

Benutzerdefinierte Aktion -> String rückgabe


1 reply to this topic

Proto

Proto
  • Full Members
  • 33 posts

Posted 08 July 2008 - 09:17

Hallo InstallSite-Gemeinde,

Ich bin sehr neu auf diesem Gebiet und komme bei einem problem nicht mehr weiter.
Ich hoffe hier kann mir geholfen werden.

Also zu meinem Problem.
Ich möchte zur Installationslaufzeit eine benutzerdefineirte Aktion durchführen.
Diese Aktion soll eine im Installshield definierte Eigenschaft (Text) einer Function bzw. Prozedure in einer DLL übergeben. Diese DLL soll dann den String verarbeiten und zurück geben.

Die DLL wurde in Delphi erstellt. (Zur Info)

Das ganze sieht im Moment wie folgt aus:
CODE

procedure GetInstalldir(var ResultStr : PChar); export; stdcall;
begin
 Messagebox(0, ResultStr, '', MB_OK);
 ResultStr := 'Neuer Text';
 Messagebox(0, ResultStr, '', MB_OK);
end;


Die Messagebox dient nur zum Debuggen.

Ich hab schon mehrere Varianten Probiert. Es gibt immer wieder Probleme bei der Rückgabe.
Entweder ich bekomme die Meldung, dass die aufgerufene funktion ein problem hervorgerufen hat oder er kann den speicherbedarf nicht berechnen.

Ich bin so ziemlich am verzweifeln.

Kann mir hier jemand erklären wie ich einen String übergebe und dann in einer DLL verändern kann? Ein beispiel würde es auch tun.

Danke schonmal im Vorraus
Gruß Proto

Kaktys

Kaktys
  • Full Members
  • 8 posts

Posted 09 July 2008 - 11:04

Füge ein null-byte am String-Ende hinzu und/oder übergebe noch eine weitere Variable, die Anzahl von bytes im String darstellt, wie z.B. hier:

UINT MsiGetProperty(
MSIHANDLE hInstall,
LPCTSTR szName,
LPTSTR szValueBuf,
DWORD* pchValueBuf

);

Oder, als Variante, nutze eine MSI-Property