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

SUPPORTDIR wird nicht gefunden


8 replies to this topic

hrich

hrich
  • Full Members
  • 6 posts

Posted 28 August 2008 - 07:55

Hallo zusammen,

ich arbeite erst seit 4 Monaten mit IS und bitte um Nachsicht!
Nun zum Problem.

Ich rufe aus dem CustomerInformationDialog vom Button eine CA Script-Funktion auf. In der Funktion versuche ich mit UseDll aus dem SUPPORTDIR eine DLL zu laden, um aus dieser eine Funktion aufzurufen.
Leider bekomme ich von UseDll eine (-1) zurück.
Warum findet er dieses Verzeichnis/Dll nicht?

Edited by hrich, 02 September 2008 - 06:55.


felltier-a

felltier-a
  • Awaiting Authorisation
  • 85 posts

Posted 28 August 2008 - 10:22

Hi,

lass dir doch einfach erstmal den ermittelten Pfad von SUPPORTDIR ausgeben. Es gibt einen Unterschied zwischen der Variablen "SUPPORTDIR" und der Installer Eigenschaft "SUPPORTDIR". Ich denke bei dir zeigt SUPPORTDIR auf ein anderes Verzeichnis.

Versuch mal SUPPORTDIR über MsiGetProperty auszulesen und dann zu verwenden.

Grüße
Udo

hrich

hrich
  • Full Members
  • 6 posts

Posted 01 September 2008 - 09:24

Hallo,

danke für den Tip... aber neues Problem!
Leider etwas verspätet, ich muss das Projekt neben meiner Haupttätigkeit realisieren!

Hier das Problem:
Ich bekomme den Pfad ausgelesen, übergebe ihn an UseDLL (Rückgabewert = 0), rufe die DLL-Funktion auf und dann bricht IS mit dem EndDialog ab.
Prototyping und Funktionsaufruf wie in Hilfe beschrieben.

Gruß
Heiko

Edited by hrich, 02 September 2008 - 06:58.


felltier-a

felltier-a
  • Awaiting Authorisation
  • 85 posts

Posted 01 September 2008 - 14:37

Hi Heiko,

ruft deine DLL-Funktion vieleicht noch eine andere DLL auf? Diese muss dann im gleichen Verzeichnis liegen. Anonsten müsste es doch noch etwas mit der Funktion ansich oder dem Prototypen zu tun haben sad.gif

Grüße
Udo

hrich

hrich
  • Full Members
  • 6 posts

Posted 02 September 2008 - 06:55

Hallo Udo,

ich rufe nur eine DLL auf. Die Funktion verwendet den stdcall und ich übergebe einen String.
Nun habe ich versucht diese Funktion über CA aufzurufen(CA Standard DLL über den Assistenten eingerichtet), und habe folgende Meldung bekommen: "Can not find the entry point of Function 'os_CheckAccessCode', make sure it is exported".

Daraufhin habe ich eine Beispiel-CA aus der Hilfebibliothek (MessageBoxA) eingerichtet und habe bei der Ausführung den gleichen Fehler bekommen.

Demnach liegt es nicht an meiner DLL, der Fehler muss also woanders liegen!
Oder wo liegt mein Denkfehler...

Gruß
Heiko

mkkk

mkkk
  • Full Members
  • 63 posts

Posted 02 September 2008 - 07:40

Hast Du die DLL schon einmal erfolgreich geladen und diese Funktion daraus angesprochen?
Ansonsten hast Du nämlich wirklich die betreffende DLL-Funktion nicht exportiert und damit ist sie auch nicht von extern aufrufbar.
Check doch einfach Deinen Quellcode der DLL.
Für mich sieht es aus, als ob genau das die Ursache Deines Problems ist, oder? unsure.gif

hrich

hrich
  • Full Members
  • 6 posts

Posted 02 September 2008 - 08:07

Außerhalb von IS funktioniert die DLL.
Deshalb habe ich ja den Versuch mit User32.dll gemacht. Aber beim Aufruf der Funktion MessageBoxA sagt IS das er den Entry nicht findet!

Wird von IS der Speicherort der DLL nicht richtig angegeben?

Edited by hrich, 02 September 2008 - 10:43.


hrich

hrich
  • Full Members
  • 6 posts

Posted 03 September 2008 - 07:27

Nochmal eine Verständnisfrage!

Wenn ich das Standard-Dll Beispiel 'MessageBoxA' für eine CA aus der Hilfe-Bibliothek 1 zu 1 übertrage und das Projekt ausführe, warum kommt der Fehler 'Finde den Entry nicht'.
Was mache ich verkehrt?

Gruß
Heiko

hrich

hrich
  • Full Members
  • 6 posts

Posted 03 September 2008 - 12:48

Nachtrag...

habe die CA für meine Dll hinbekommen. Musste allerdings mit einer 2 Tage alten Projektsicherung neu beginnen. Da ich die Dll und den Funktionsaufruf nicht geändert habe, kann ich zu Zeit nicht nachvollziehen wo mein Fehler lag.

Trotzdem Danke an Alle...