netzwerkfähiges Programm unter Vista
Moderator: Moderatoren
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
netzwerkfähiges Programm unter Vista
Hallo,
ich bräuchte einen grundsätzlichen Denkanstoss, wie ich ein netzwerkfähiges Programm erstellen kann, das unter Vista lauffähig ist.
Bisher liegen z.B. meine DBFs usw. in einem Unterordner \Daten des eigentlichen Programmes.
Im Programm gab es die Festlegung SET DEFAULT TO DATEN
Das Programm war nur auf dem "Hauptrechner" installiert,
Die "Arbeitsrechner" arbeiteten alle mit der Anwendung auf dem "Hauptrechner" und es funktionierte problemlos.
Wie funktioniert das aber unter Vista?
Die Daten lege ich da jetzt nicht mehr unterhalb des Programmes, sondern in einem Verzeichnis ab, das ich mit der System-Variable "ALLUSERSPROFILE" auslese. Wie soll das bei einem Netzwerkzugriff funktionieren.
Irgendwie stehe ich da etwas auf dem Schlauch.
Ich sehe einfach nicht, wie ich auch für Netzwerkrechner den Pfad zu den Daten setzen soll.
ich bräuchte einen grundsätzlichen Denkanstoss, wie ich ein netzwerkfähiges Programm erstellen kann, das unter Vista lauffähig ist.
Bisher liegen z.B. meine DBFs usw. in einem Unterordner \Daten des eigentlichen Programmes.
Im Programm gab es die Festlegung SET DEFAULT TO DATEN
Das Programm war nur auf dem "Hauptrechner" installiert,
Die "Arbeitsrechner" arbeiteten alle mit der Anwendung auf dem "Hauptrechner" und es funktionierte problemlos.
Wie funktioniert das aber unter Vista?
Die Daten lege ich da jetzt nicht mehr unterhalb des Programmes, sondern in einem Verzeichnis ab, das ich mit der System-Variable "ALLUSERSPROFILE" auslese. Wie soll das bei einem Netzwerkzugriff funktionieren.
Irgendwie stehe ich da etwas auf dem Schlauch.
Ich sehe einfach nicht, wie ich auch für Netzwerkrechner den Pfad zu den Daten setzen soll.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: netzwerkfähige Programm unter Vista
Eine ganz grundsätzlich Frage: Warum möchtest Du denn die Ordnerstruktur ändern? Gerade unter Vista ist es manchmal etwas "merkwürdig", wenn man mit Systemverzeichnissen arbeitet. Und wenn es doch bislang mit den Unterverzeichnissen der Anwendung funktionierte...
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: netzwerkfähiges Programm unter Vista
Hallo,
nimm einfach ein Verzeichnis, das in der obersten Festplattenebene startet und nicht vom System verwaltet (oder vergewaltigt ) wird.
z.B. d:\XppApps\...
Es wäre sicher auch möglich, unter c:\Programme\MeinProgramm\Daten zu arbeiten, wenn du für das Datenverzeichnis (eventuell auch für das Programmverzeichnis) die Schreibrechte für alle User des Programmes (oder generell ?) freischaltest.
Standardmäßig sind alle Ordner unter dem Programm Stammordner für User schreibgeschützt (was ja auch sinnvoll ist !).
Aber besser ist es die eigenen Verzeichnisse zu nutzen
Die Abfrage der Systemvariablen, kannst du aber auf jeden Fall sparen. Zur Laufzeit ermittelt man das Programmverzeichnis über die EXE. Ich hatte da mal Probleme beim Start aus dem Explorer, bzw. mit Pfadangabe aus einem anderen Verzeichnis, was genau weiß ich aber nicht mehr, seither mache ich das so.
Nur die standard Datenpfade müsste man normalerweise über USER.... abfragen.
nimm einfach ein Verzeichnis, das in der obersten Festplattenebene startet und nicht vom System verwaltet (oder vergewaltigt ) wird.
z.B. d:\XppApps\...
Es wäre sicher auch möglich, unter c:\Programme\MeinProgramm\Daten zu arbeiten, wenn du für das Datenverzeichnis (eventuell auch für das Programmverzeichnis) die Schreibrechte für alle User des Programmes (oder generell ?) freischaltest.
Standardmäßig sind alle Ordner unter dem Programm Stammordner für User schreibgeschützt (was ja auch sinnvoll ist !).
Aber besser ist es die eigenen Verzeichnisse zu nutzen
Die Abfrage der Systemvariablen, kannst du aber auf jeden Fall sparen. Zur Laufzeit ermittelt man das Programmverzeichnis über die EXE. Ich hatte da mal Probleme beim Start aus dem Explorer, bzw. mit Pfadangabe aus einem anderen Verzeichnis, was genau weiß ich aber nicht mehr, seither mache ich das so.
Nur die standard Datenpfade müsste man normalerweise über USER.... abfragen.
Code: Alles auswählen
cExeName := AppName(.t.) // Pfad inkl. Dateiname
if "\" $ cExeName
cProgVerz := left(cExeName,rat("\",cExeName))
else
cProgVerz := "" // dürfte normalerweise nicht sinnvoll sein ;-)
endif
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: netzwerkfähiges Programm unter Vista
also bei uns werden alle Datenbanken zentral auf dem Server gespeichert und jeder greift darauf zu,
schließlich kann man für jede Dbf den Pfad angeben, dadurch muss kein Default-Pfad gesetzt werden
für den Fall, dass du die Datenbanken pro User brauchst, kannst du ja in dem Fall deiner Db auf dem Server noch ein Feld für User einrichten und das dann entsprechend im Programm abfragen oder gleich nen Filter drauf setzen.
schließlich kann man für jede Dbf den Pfad angeben, dadurch muss kein Default-Pfad gesetzt werden
für den Fall, dass du die Datenbanken pro User brauchst, kannst du ja in dem Fall deiner Db auf dem Server noch ein Feld für User einrichten und das dann entsprechend im Programm abfragen oder gleich nen Filter drauf setzen.
Viele Grüße
Stevie
Stevie
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: netzwerkfähiges Programm unter Vista
Möchte ich eigentlich nicht, muss ich aber unter Vista.Eine ganz grundsätzlich Frage: Warum möchtest Du denn die Ordnerstruktur ändern?
Wenn das Programm wie allgemein üblich im Ordner Programme installiert wird, muss ich die Daten woanders ablegen.
aber leider nicht mehr unter Vista (siehe oben)Und wenn es doch bislang mit den Unterverzeichnissen der Anwendung funktionierte...
Genau diese Zwangsinstallation z.B. im Hauptverzeichnis möchte ich vermeiden.nimm einfach ein Verzeichnis, das in der obersten Festplattenebene startet und nicht vom System verwaltet (oder vergewaltigt ) wird.
Das Programm sollte unabhängig vom Betriebssystem und dem im Setup gewählten Installationsverzeichnis funktionieren
Bei Singleuser-Programmen klappt das alles auch ohne Probleme.
Beim Setup wird ermittelt, ob Vista oder höher eingesetzt wird. Wenn ja und für die Installation der Ordner "Programme" gewählt wird, werden die Daten in einem seperat erstellten Verzeichnis abgelegt.
Im Programm wird dann ebenfalls das Betriebssystem ermittelt. Wenn Vista oder höher eingesetzt wird, erfolgt je nach dem Speicherort der Daten eine entsprechende default-Zuweisung.
Ich habe nur keine Ahnung, wie ich das für netzwerkfähige Programme handeln könnte.
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: netzwerkfähiges Programm unter Vista
Hi,
meine Programme laufen (meist) auf Citrixservern und greifen auf ein gemeinsames Datenverzeichnis auf einer Speicherstation zu. Über die Hardware habe ich keinen Überblick mehr, aber es müssen mehr als 3 oder 4 Citrix Server sein.
Auf jedem dieser Citrix-Server wurde das Programm in ein Verzeichnis kopiert, das während des Betriebs read/only ist.
Der Admin muss also dafür sorgen, dass die EXE, DLL und die INI Datei im Programmverzeichnis liegen.
Im Programmverzeichnis meiner Programme gibt es eine INI Datei mit gleichem Namen wie die EXE.
Und dort steuere ich wo die Datenverzeichnisse liegen:
EXE Name -> Programmverzeichnis -> INI Datei laden -> Datenverzeichnisse lesen ...
Auf den Clients wird gar nichts installiert, sondern nur der Aufruf plaziert.
Bei LAN Programmen müsste man wohl das Programmverzeichnis zuordnen, die Datenverzeichnisse kann man aber ruhig als UNC Pfad hinterlegen:
Im Prinzip ist jedes Programm, das auf einem modernen PC mehrfach gestartet werden kann ein netzwerktaugliches Programm, allerdings muss es einem Clientprogramm prinzipiell egal sein, wo ein Serverprogramm installiert ist. Für es selbst zählt nur die Freigabe aus der heraus das Programm gestartet wird.
meine Programme laufen (meist) auf Citrixservern und greifen auf ein gemeinsames Datenverzeichnis auf einer Speicherstation zu. Über die Hardware habe ich keinen Überblick mehr, aber es müssen mehr als 3 oder 4 Citrix Server sein.
Auf jedem dieser Citrix-Server wurde das Programm in ein Verzeichnis kopiert, das während des Betriebs read/only ist.
Der Admin muss also dafür sorgen, dass die EXE, DLL und die INI Datei im Programmverzeichnis liegen.
Im Programmverzeichnis meiner Programme gibt es eine INI Datei mit gleichem Namen wie die EXE.
Und dort steuere ich wo die Datenverzeichnisse liegen:
EXE Name -> Programmverzeichnis -> INI Datei laden -> Datenverzeichnisse lesen ...
Auf den Clients wird gar nichts installiert, sondern nur der Aufruf plaziert.
Bei LAN Programmen müsste man wohl das Programmverzeichnis zuordnen, die Datenverzeichnisse kann man aber ruhig als UNC Pfad hinterlegen:
Code: Alles auswählen
cDBF := "\\server\freigabe\datenverzeichnis\MyDBF"
use (cDBF) ...
Gruß
Hubert
Hubert