Moin Moin,
ich möchte ein Property an eine Funktion in einer DLL übergeben, in der DLL kommt aber immer ein Leerstring an. Was mache ich falsch?
Meine CustomAction ist definiert als:
BOOL =[ARPHELPLINK]isTools::SetHostAddress(in STRING="3270", in STRING=[HOSTADR3270])
Meine Funktion in der DLL ist definiert als:
extern "C" BOOL WINAPI EXPORT SetHostAddress(LPCSTR szType, LPSTR szIP)
Hat jemand ne Idee?
Gruss, Andreas
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.
Property an DLL übergeben?
Started by
Andy_43
, Nov 13 2003 10:04
3 replies to this topic
Posted 13 November 2003 - 15:18
das man nur das MsiHandle an die DLL übergeben darf und die Properties in der DLL mit MsiGetProperty ermitteln kann, habe ich zwischenzeitlich rausgefunden.
Leider funktioniert das ganze nicht bei deferred actions. Die diversen Artikel zu dem Thema habe ich gelesen, hat aber alles nicht weiter geholfen. Der anfänglich gute Eindruck von DevStudio 9 ist so ziemlich dahin. Es muss doch möglich sein,
eine Funktion in einer DLL nach dem kopieren der Dateien aufzurufen, um spezielle
Anpassungen in den installierten Dateien vorzunehmen.
Andy
Leider funktioniert das ganze nicht bei deferred actions. Die diversen Artikel zu dem Thema habe ich gelesen, hat aber alles nicht weiter geholfen. Der anfänglich gute Eindruck von DevStudio 9 ist so ziemlich dahin. Es muss doch möglich sein,
eine Funktion in einer DLL nach dem kopieren der Dateien aufzurufen, um spezielle
Anpassungen in den installierten Dateien vorzunehmen.
Andy
Posted 13 November 2003 - 17:45
Ja, aber da ist eben diese Beschränkung im Windows Installer Dienst mit Deferred Aktionen. Das einfachste wäre, die Aktion Immediate zu machen und nach InstallFinalize einzufügen.
Ansonsten war dein erster Ansatz gar nicht schlecht. Um eine DLL aufzurufen, die nicht dem MSI-Standard entspricht, bring InstallShield einen Wrapper mit, den du im ersten Anlauf konfiguriert hast.
Ansonsten war dein erster Ansatz gar nicht schlecht. Um eine DLL aufzurufen, die nicht dem MSI-Standard entspricht, bring InstallShield einen Wrapper mit, den du im ersten Anlauf konfiguriert hast.
Stefan Krüger
InstallSite.org twitter facebook
Posted 20 November 2003 - 11:42
Hallo,
die einzige offizielle Möglichkeit ist, unmittelbar vor der Custom Action ein Property zu definieren, welches den gleichen Namen hat wie deine Funktion.
Also, wenn deine Funktion 'Action' heisst, dann musst du ein Property mit den Namen 'Action' definieren, dem du die benötigten Werte übergibst. Du musst dir dann nur noch Gedanken machen, wie du bei mehreren Werten die verschiedenen Werte trennst und in der dll richtig zuordnest.
Die Werte bekommst du in der dll, wenn du den Wert des Property "CustomActionData" abfragst.
Klappte bei mir prima!
Maik Hoffer
die einzige offizielle Möglichkeit ist, unmittelbar vor der Custom Action ein Property zu definieren, welches den gleichen Namen hat wie deine Funktion.
Also, wenn deine Funktion 'Action' heisst, dann musst du ein Property mit den Namen 'Action' definieren, dem du die benötigten Werte übergibst. Du musst dir dann nur noch Gedanken machen, wie du bei mehreren Werten die verschiedenen Werte trennst und in der dll richtig zuordnest.
Die Werte bekommst du in der dll, wenn du den Wert des Property "CustomActionData" abfragst.
Klappte bei mir prima!
Maik Hoffer