AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Intranet versus Netzlaufwerk
Thema durchsuchen
Ansicht
Themen-Optionen

Intranet versus Netzlaufwerk

Ein Thema von Tonic1024 · begonnen am 26. Nov 2003 · letzter Beitrag vom 28. Nov 2003
Antwort Antwort
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Intranet versus Netzlaufwerk

  Alt 26. Nov 2003, 13:58
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...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Intranet versus Netzlaufwerk

  Alt 26. Nov 2003, 14:26
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
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Intranet versus Netzlaufwerk

  Alt 27. Nov 2003, 13:58
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...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Intranet versus Netzlaufwerk

  Alt 27. Nov 2003, 15:38
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...

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
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Intranet versus Netzlaufwerk

  Alt 28. Nov 2003, 08:38
Cool, ich hab zwar immer versucht alles selbst zu coden, und eigene Funktionen sind mir immernoch lieber als alles andere , 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...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 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