Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Intranet versus Netzlaufwerk (https://www.delphipraxis.net/12389-intranet-versus-netzlaufwerk.html)

Tonic1024 26. Nov 2003 12:58


Intranet versus Netzlaufwerk
 
Moin...

Ich habe bislang eine (selbstgeschriebene) DLL direkt von Update-pfad (Netzlaufwerk) aus geöffnet, die Versionsnummer verglichen mit der Aktuellen (Ich identifiziere die DLL anhand einer in der DLL hinterlegten Funktion) und im dem Fall, dass ein Update möglich ist die DLL kopiert und die Alte überschrieben. Jetzt soll aber die Geschichte mit den Netzlaufwerken abgeschafft werden und die DLL's aus unserem Intranet geladen werden. Die DLL's (etwa 10 an der Zahl) sind etwa 100 bis 500 kB groß und werden bei jedem Programmstart überprüft.

Meine Frage dazu: Wie geht man da am besten vor? Ich habe mit Internet/IP/LAN noch nicht wirklich viel Erfahrung. Kann ich überhaupt eine DLL öffnen über IP? Muss ich erst alle DLL's lokal speichern, um nachzusehen ob sie aktueller sind als meine Lokalen? Benutzt man da Indy-FTP oder HTML-Downloads? Was gibt es sonst noch für Möglichkeiten?

Eine Freigabe des Verzeichnisses auf dem Server und Ansteuerung via IP-Adresse kommt wegen der Zugriffsrechte nicht in Frage.

Ich hoffe ich habe mein Problem verständlich rüberbringen können...

Wormid 26. Nov 2003 13:26

Re: Intranet versus Netzlaufwerk
 
Die vorgehensweise bei Webupdates ist folgende: Dateien auf Server ablegen, evtl. gepackt. Zusätzlich wird eine Art IniFile mit den Infos über die Versionen auf dem Server abgelegt.

Das Programm startet nun, lädt der/die/das Inifile per http vom Webserver und vergleicht dann die Versionen in den DLLs mit den Angaben in der Datei.
Wenn auf dem Server eine neuere Datei liegt, kann das Programm die DLL (das Packet, Archiv, etc) dann auch per http runterladen und installieren.

Es gibt sogar fertige Komponenten für diese ganze aktion, sollte aber auch "relativ" einfach selbst ohne Kompos zu realisieren sein.

Gruß

Wormid

Tonic1024 27. Nov 2003 12:58

Re: Intranet versus Netzlaufwerk
 
Moin...

Wenns garnicht anders geht werd ichs dann wohl auch so lösen (wenn, dann ohne Kompos). Aber das mit der zweiten Datei ist schon irgentwie mistig. Muss Dann ja auch gepflegt werden und wenn dann jemand die Versionsnummer falsch einträgt iss halt Pech...

Ob es nicht geht, eine kleine Application zu schreiben, die die Versionsnummer zurückgibt? Oder kann PHP DLL's öffnen?

Bios denne...

Wormid 27. Nov 2003 14:38

Re: Intranet versus Netzlaufwerk
 
Yoh, man kann Win32-API Funktionen aus php-Scripten heraus aufrufen!

Vorrausetzung ist neben einem Windows-Server (irgendwie klar) die Extension "php_w32api.dll" (ist bei php im zip-package dabei), die aktiviert sein muss. Und die zu ladenden DLLs müssen scheinbar im Suchpfad liegen - ich habe es jetzt aufjedenfall nicht hinbekommen, eine DLL unter Angabe des kompletten Pfades zu laden...

Meine Test-DLL:
Delphi-Quellcode:
library Project2;

function GetVersion: PChar; stdcall;
begin
  Result := PChar('1.2.0.1');
end;

exports
  GetVersion;

begin
end.
Diese DLL habe ich zum testen in mein System32 kopiert... :shock:

Und dann das PHP-Script:
Code:
<?php

  $api = new win32;

  $api->RegisterFunction('string GetVersion () From Project2.dll');

  $version = $api->GetVersion();

  echo $version;

  $api->UnregisterFunction('GetVersion');

?>
Das zumindestens hat schonmal funktioniert. Das Problem ist alleine die außerst spärliche Doku zum Thema w32api in PHP. Das kompletteste und aktuellste zu dem Thema scheint mir das hier zu sein: http://wobster.mynnga.de/w32api.txt


Aber mit Hilfe des Scriptes wäre es möglich, "meinen" Vorschlag etwas zu automatisieren, indem das Script als Ausgabe einfach eine Art Infile produziert... So müsste das nicht mehr manuell gepflegt werden - ich würde aber vielleicht über eine Art Caching nachdanken, damit nicht bei jedem Programmstart das Script alle 10 DLLs laden, ausführen, unloaden muss...


Gruß

Wormid

Tonic1024 28. Nov 2003 07:38

Re: Intranet versus Netzlaufwerk
 
Cool, ich hab zwar immer versucht alles selbst zu coden, und eigene Funktionen sind mir immernoch lieber als alles andere :-D, aber früher oder später kommt man um die Win API's wohl eh nicht herum... Ist ja eigentlich auch Unsinn "angst" davor zu haben. :)

Aber ich fürchte wir setzen Firmenweit Samba-Server auf Linux ein. Da helfen mir die WINAPI's nich wirklich...

Habe auch schon drüber nachgedacht, als ich den Thread von Sidores gelesen habe, einfach ein Netzlaufwerk zu Laufzeit zu generieren und nach dem Update wieder abzubrechen damit die User nich unbefurgt rumschnüffeln...

Aber das gelbe von Ei ist das auch noch nicht. Zumal wir mehrere Teilnetze haben und so ein "Für-Alle-Da-Server" noch nicht existiert...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz