MS-Office-Forum

MS-Office-Forum (https://www.ms-office-forum.net/forum/index.php)
-   Microsoft Access (https://www.ms-office-forum.net/forum/forumdisplay.php?f=60)
-   -   Beispiel für automatisches mdb Update mittels Batch-Datei (https://www.ms-office-forum.net/forum/showthread.php?t=130759)

Fynbos 21.06.2004 14:48

Beispiel für automatisches mdb Update mittels Batch-Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich möchte mit mal erlauben, euch hier ein Beispiel zu geben, wie wir das Problem mit den ständig neuen Versionen und Updates in der Firma gelöst haben.

Ich habe den Lösungsansatz hier aus dem Forum, wie man sehen kann, ist das Original-C immer noch in der Datei.
Soviel Ehrlichkeit ist Pflicht. :)

Zuerst zur Erklärung:
Auf Basis von Access haben wir in der Firma eine Art Kundendatenbank.
Da sich diese aber ständig erweitert und wir es leid waren, ständig an 30 Leute eine 5 MB-Große .mdb zu schicken (...die Outlook ja dann eh abblockt ;) ) und wir über eine gute Standleitung verfügen, haben wir uns also gesacht, wir bauen was ein, damit die Leute immer die neuste Version nehmen müssen.
Denn leider tauchten auch da Probleme auf, wenn die User nicht die Updates ausführen.

Die Lösung: Eine Server-Seitig gelagerte Batch-Datei, die vom User zum Programm-Start aufgerufen wird, welche dann die aktuelle Version überprüft und dann evtl ersetzt.

Folgende Probleme wollten wir vermeiden:
- Die anderen Niederlassungen haben nur DSL, sind also im Download recht langsam und brauchen für 5 MB halt ihre Zeit. Und User rufen ein Programm ja immer erst auf, wenn es schnell gehen soll.
- Die User sollen nicht noch groß JA oder Nein anklicken müssen.
- Wir bestimmen wann ein Update laufen soll und wann nicht.
- Es sollte keine extra-Versionsdatei geben, warum immer 2 Dateien bei einem Update ändern, wenn auch 1 reicht?
- Die Dateien sollen immer im selben Verzeichnis sein, das nannten wir einfach mal "FrontEnd" unter dem Laufwerk C.
- Ein eigenes Programm-Icon wäre nicht schlecht. ;)

Und so ist es gelöst:
- Zuerst haben wir ein Netzwerklaufwerk auf den User-Rechnern angelegt, in diesem Fall das LAufwerk T. Es wird automatisch beim Start angemeldet und verweist auf das Verzeichnis auf dem Server, wo die Dateien liegen.
- Dort liegen zum einen die Batch-Dateien, auf die dann einfach per Verknüpfung (auf z.B. "T:\tub.bat") verknüpft wird.
- Außerdem liegen im selben Verzeichnis auf dem Server die mdb-Dateien, die der User dann benutzen soll, die allerdings lokal erst auf den User-Rechner gesaugt werden.

Das Batch-Programm (anbei) macht nun folgendes:[list=1][*]Es setzt die Variablen für die Verzeichnisse, die Version etc fest.[*]Es checkt, ob das Zielverzeichnis auf dem User-Rechner da ist. (hier: c:\FrontEnd\Theseus)[*]Wenn nicht, erstellt es es.[*]Es vergleicht die aktuelle Versionsnummer auf dem Server mit dem auf dem Zielrechner[*]Wenn diese nicht gleich sind, löscht es die alte Version auf dem Userrechner.[*]Dann kopiert es die Neue Version vom Server auf den Userrechner und gibt dazu eine Meldung aus, damit der User nicht ungeduldig wird.[*]Es startet das Programm.[*]Falls die Versionen gleich sind und das Programm nicht updaten muss, startet es direkt die Access-Datei.[*]Es löscht alle alten Variablen und schließt sich.[/list=1]

Der Trick ist nun folgender:
Um eine neue Version freizuschalten, muss man nicht mehr machen, als diese auf den Server zu kopieren und nur die Versionnummer (hier 138) ändern.
Das dauert keine 10 Sekunden und schon ziehen alle User, sobald sie das Programm neu starten (z.b. morgens, wenn die Rechner hochfahren) automatisch die neuste Version.

DER HAKEN!!!
Es gibt nur einen Haken an der Sache:
Die Command-Zeile, die das Programm startet, unterscheidet sich bei den alten Systemen wie Win95 und 98, und neueren wie XP und 2000.
Hat was mit der Command-Struktur in DOS zu tun, ist aber auch relativ egal, denn alles was man machen muss ist:
2 Batch-Dateien, eine für alte Rechner (hier "tub.bat") und eine für die neueren (hier: "tub_xp.bat").
Je nach Rechner muss man dann halt die richtige aussuchen.
(Kleiner Tip: wir haben deswegen endlich alle alten Kisten ersetzt, einfach lange genug bei der Geschäftsführung quengeln. ;) )

Achja, nochwas: Das Icon:
Das kann man ja nun einfach auf dem Server lagern und dann unter Access bei Start halt einfach "T:\icon.ico" angeben.


Ich hoffe das hilft dem ein oder anderen, wir ihr in den Dateien seht, ist die Grundidee zu dem kleinen Code von Carsten Pache, wir haben nur die Sache mit den Versionsdateien geändert.

Gruß
Fynbos

PS: Wer Fragen oder Ideen hat: Immer her damit.
Als ob wir schon alles wüßten... ;)

Fynbos 22.06.2004 10:54

Verbessert: Mit Komprimierung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

gestern Abend bei einer Flasche Reisschnaps kam mir dann doch noch eine Idee, wie man das ganze verbessern kann:

Komprimieren!

Ich erinnerte mich an die gute alte Zeit, als wir zip-dateien noch unter DOS entpackt haben (nix mit GUI) und überlegte wie man die mdb-Dateien noch kleiner machen kann.
Und da fiel es mir wie Schuppen aus den Haaren:

Einfach die Dateien für die Übertragung komprimieren.

Also habe ich mir von www.winrar.de die kostenlose unrar.exe besorgt, mit dessen Hilfe man im Command-Zeilen-Modus .rar-Dateien entpacken kann.

(Ich vertraue nur auf RAR, ZIP mag ich einfach nicht. Ist aber wohl Gefühlssache... :) )

Dazu habe ich dann einige Zeilen in die Batch-Datei gebaut und nun schickt das Prog nach der Prüfung ob es eine neue Version gibt, diese gepackt rüber und entpackt diese dann.
Zudem löscht es anschließend die gepackte, übertragene Datei.

Damit lässt sich eine MDB in der Regel nochmal um 85% verkleinern!
= weinger Wartezeit bei der Übertragung!

Im Anhang befinden sich wieder die beiden Batch-Dateien in geänderter Form und außerdem nochmal der Link zu der .exe


Gruß
Fynbos

PS: Bitte gebt doch mal eure Meinung dazu ab... :(

lordofchaos 23.06.2004 14:50

Schönheitsfehler
 
Einen kleinen Schönheitsfehler bzw ein Problem habe ich entdeckt.

Du kopierst immer eine mdb mit namen, welche sich aus "tub" und der versionsnummer zusammensetzten (z.b. tub-138.mdb)
was ist nun aber, wenn jemand eine Verknüpfung auf den desktop legt ?
Er hat dann ein Verknüpfung zu "tub-138.mdb" die neue version heisst dann aber "tub-0815.mdb"
--> Verknüpfung tot

Arne Dieckmann 23.06.2004 14:55

"Schuld eigen" würde ich sagen. Es sollte laut Anleitung nur ein Desktop-Link zur Batch-Datei angelegt werden, dann sollte es klappen.

Fynbos 24.06.2004 07:29

:) So ist es.
Die Verknüpfung auf dem Desktop zielt nur auf die Batch-Datei auf dem Server, also über das Netzlaufwerk T auf T:\tub_xp.exe

Genau das ist ja der Trick, so muss bei einer neuen Version stets nur in der Batch-Datei die neue Versionsnummer eingegeben werden.

lordofchaos 24.06.2004 10:06

sowas sowas
 
Hab ich wohl nicht richtig gelesen :=)

Warum gibst du als Server-Pfad nicht \\Server\Verzeichnis\Datei.bat an ?
Dann ist eine Anmeldung eines Netzlaufwerks nicht nötig

@Arne
"Schuld eigen" ??

Arne Dieckmann 24.06.2004 10:11

@Freddy: Ich muss mir wohl so etwas abgewöhnen. Ich dachte, dass man diesen Spruch auch in München kennt. ;)
Ich könnte auch "Selber schuld" schreiben. :bye:

lordofchaos 24.06.2004 10:15

@Arne
Also ich kannte den Spruch nicht :)
Aber selber Schuld bin ich nicht *g* ich habs ja nicht verwendet ! :nene:

Fynbos 24.06.2004 11:11

Kannte ich auch noch nicht.

Um ehrlich zu sein, gibt es keinen trifftigen Grund, warum wir Netzlaufwerke nehmen. ;)
Aber irgendwie habe ich das Gefühl, dass das sauberes arbeiten ist.
Oder irre ich da irgendwie?

lordofchaos 24.06.2004 11:14

also ich finde nen direkten Pfad besser.
Vorallem muss nicht bei jedem ein Netzlaufwerk eingerichtet werden und somit kann auch keiner aus versehen oder absicht auf dem Laufwerk rumspielen.
Das Anmelden beim Start funktioniert ja auch nicht anders

Fynbos 19.08.2004 11:08

Noch mal verbessert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wir schreiben das Sommerloch 2004 und schon kommen gelangweilte Admins, die Doom3 schon durch haben, auf die Idee:

Verbessern wir das ganze doch nochmal... ;)

Wie sich heraus stellte, wurde auf den Clients in den Außenstädten das runterladen zwar unkompliziert gehandelt, aber das Programm, speziell das Entpacken, wurde doch tatsächlich immer noch auf dem Netzlaufwerk ausgeführt!
Und das kostet immer noch etwas unnötige Zeit. :(

Lösung:
Die Batch-Datei liegt nun also komplett auf dem Client, aber die Versionsnummer alleine (also das, was sich ständig ändert) ist auf dem Server gelagert.
Und das geht am besten mit dem fast vergessenen Basic-Befehl: CALL

Es gibt nun also 2 Dateien:
- Die eine ist die Datei, die das ganze vergleichen, löschen, kopieren und starten des Programmes übernimmt,
- die andere hat nur die Versionsnummer als Variable hinterlegt und wird mit dem CALL-Befehl aufgerufen.

Erstere liegt beim Client, da sie sich ja nie ändert. (tub_xp.bat)
Zweitere auf dem Server, in dem Zielpfad. (tub_ver.bat)

Ich habe die beiden Dateien im Beispiel angehängt.

Fragen?
Fragen!

Ati 26.08.2004 13:28

Hallo zusammen. Da ich ja mit meiner Netzwerk-Variante (alle greifen auf ein und das selbe FE zu) auf die Fresse geflogen bin, wollte ich mich hier dieser Lösung bedienen. Aber irgendwas mache ich wohl noch falsch. Ich habe die Variablen entsprechend geändert und die Batch-Datei gestartet jedoch tut nach dem Hinweis das jetzt die neue Version kopiert wird nichts mehr. Also habe ich mir mit Hilfe des Echo Befehls alle Variablen mal anzeigen lasse und siehe da die Versionsnummer, sowie der Server-Pfad sind "Leer". Ich habe aber 001 bzw. \\PC-Server\Daten\ordner eingetragen ???????????????

ati

Fynbos 26.08.2004 14:31

Mhm, welche von den verschiedenen obrigen versionen nimmst du denn?
Zeig mal die Dateien, vieleicht finde ich den Fehler.

Jetzt so auf anhieb solltest du vieleicht gucken, ob du nicht einfacher mit der Server-IP arbeiten kannst, also z.B.: \\192.168.0.100\Daten\order

Gruß :)

Ati 26.08.2004 14:38

:mad: Also hier nochmal der ganze Code mit meinen Änderungen:

:: ----- START -----

@echo off
::Befehlszeilenaugabe aus

:: Microsoft Windows NT 4
:: Microsoft Access 97
::
:: Carsten Pache, 1999
:: Modifiziert Florian T. Rose, 2004
:: Modifiziert Markus Weinrich, 2004

::Variablen deklarieren
SET FrontEndVersion=100
SET FrontEndPfad=C:\Fohrer
SET FrontEndProg=test

SET ServerPfad=W:\Fohrer


:: Screen löschen
CLS
echo Pfad %FrontEndPfad%
echo Prog %FrontEndProg%
echo Ver %FrontEndVersion%
echo Ser %ServerPfad%



::Ist das Verzeichnis auf diesem Rechner bereits vorhanden?
::JA --> nichts tun
::NEIN --> Verzeichnis anlegen
IF NOT EXIST "%FrontEndPfad%\*.*" MD "%FrontEndPfad% " > nul




::Existiert die aktuelle Version bereits auf diesem Rechner?
::JA --> Programm starten
::NEIN --> Programm vom Server auf den Rechner kopieren
IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" GOTO PROGRAMMSTART

ECHO ***
ECHO *** alte Versionen werden gelöscht ...
ECHO ***
IF EXIST "%FrontEndPfad%\%FrontEndProg%*.mdb" DEL "%FrontEndPfad%\%FrontEndProg%*.mdb"

::MDB-Datei vom Server auf den aktuellen Rechner kopieren
ECHO ***
ECHO *** Kopiere "Test %FrontEndVersion%" vom Server...
ECHO *** Bitte einen Moment Geduld! (Dieser Vorgang kann einige Minuten dauern)
ECHO ***
IF EXIST "%ServerPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" COPY "%ServerPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb">nul



:PROGRAMMSTART
IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" START "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb"



::Variablen loeschen
SET FrontEndVersion=
SET FrontEndPfad=
SET FrontEndProg=
SET ServerPfad=

:: ----- ENDE -----


Was mich stutzig macht ist das das Programm von vier Variablen immer nur zwei speichert. D.h. ändere ich die Variablen in ihrer reihenfolge, so zeigt er mir immer nur die ersten beiden an :mad:

Fynbos 26.08.2004 16:00

Zitat:

von Ati
Was mich stutzig macht ist das das Programm von vier Variablen immer nur zwei speichert. D.h. ändere ich die Variablen in ihrer reihenfolge, so zeigt er mir immer nur die ersten beiden an :mad:

Also, ich habe mal eben den Text hier kopiert und in eine bat geschrieben.
Die Variablen zeigte er soweit alle 4 richtig an bei mir, keine Probleme.

Allerdings mußte ich auf dem Netzlaufwerk W: erstmal das Verzeichnis \Fohrer anlegen, ist das Absicht?
Falls ja, ok.

Dann habe ich ne fohrer-100.mdb in dieses Verzeichnis gelegt und es ging alles problemlos.

Er hat das Verzeichnis auf C gemacht, dann kopiert und dann gestartet, bzw wollte starten, aber ich habe hier XP und daher ging der Start-Befehl bekannterweise in dieser Art nicht.

Tip: Mit dem Befehl "pause" kann man das Programm an der Stelle anhalten und durch drücken der Leertaste weiterlaufen lassen.
Das kombiniert mit "ohne echo off" sollte dir helfen...

Ati 27.08.2004 05:47

Verdammt nochmal woran soll das denn jetzt liegen?? Bei Dir hat es ja geklappt also kann ich ja jetzt keine großen Fehler gemacht haben.
Bin echt ratlos

Ati 27.08.2004 06:40

Um die Verwirrung perfekt zu machen mal anbei der Code der funktioniert:

Code:

@echo off

set version=103
set pfad=C:\fohrer
set Prog=test
set serv=W:\fohrer

echo Version=%version%
echo pfad=%pfad%
echo Programm=%Prog%
echo Server=%serv%
pause
echo Voller Programmname=%Prog%-%version%.mdb
pause
if not exist "%pfad%\*.*" md "%pfad%">nul
pause

if exist "%pfad%\%Prog%-%version%.mdb" goto Programmstart
echo Alte Version wird geloescht
if exist "%pfad%\%Prog%*.mdb" DEL "%pfad%\%Prog%*.mdb"

Echo Neue Version wird kopiert
if exist "%serv%\%Prog%-%version%.mdb" Copy "%serv%\%Prog%-%version%.mdb" "%pfad%\%Prog%-%version%.mdb">nul

:Programmstart
if exist "%pfad%\%Prog%-%version%.mdb" start "%pfad%\%Prog%-%version%.mdb"

exit

Es ist ja eigentlich nichts anderes als die Ursprüngliche Version, bis auf die Bezeichnung der Variablen und den Kommentaren. Aber so funktioniert es bei mir.

Fynbos 27.08.2004 06:53

Seltsam. Kann jetzt auch keinen Unterschied feststellen.

Du hast gesehen, dass es noch 2 weitere Versionen dieses Update-Systems gibt?
Kann ich dir nur empfehlen, da sich dann download-Raten stark verkürzen.

Achja, kannst du bitte noch kurz deine Systemdaten durchgeben?
Welches Betriebssystem, was für eine Office-Version und so weiter...

Ati 27.08.2004 08:16

Windows 98
Access 2000

Ich habe mir mal gerade Dein Profil angesehen, und wollte mal fragen was für ein Beruf sich hinter "GL" versteckt.

Fynbos 27.08.2004 08:32

Mhmmmm
Ich bin nicht sicher, was Win98 noch so an Dos drauf hat, aber eigentlich hätte es damit locker funktionieren müssen, als ich diesen Thread eröffnet habe, lief die Hälfte aller PCs bei uns noch auf Win98 oder 95. *schauder*

Geschäftsleiter. ;)

Ati 27.08.2004 08:45

Naja bei uns lsufen die meisten noch mit W98 und einige wenige mit XP. Bezüglich der XP-PC´s werde ich ja noch eine neue Variante basteln.
Was mich noch stört ist dieses blöde Verknüpfungsicon auf die Batch-Datei. Ich meine dieses MSDOS-Zeichen. Ich weiß das man das manuell ändern kann aber das ist ja wieder mit Arbeit verbunden ;)

Geschäftsleiter mit 25 Jahren.... respekt und Hut ab.

Ati

Fynbos 27.08.2004 08:58

Also, wenn du irgendwann mal die Lösung dafür findest, wie man einer Batch-Datei ein Icon "einbauen" kann, dann immer her damit, das nervt uns hier auch tierisch.
Aber deswegen haben wir dann ja auch angefangen, die Icons mit zu kopieren, so dass wir die Verknüpfung nur 1x anlegen mußten, das Icon aber unabhängig von den Netzlaufwerken ist.
(Das gab bei den Außenstädten immer mal wieder Probleme, dass die Icons nicht erkannt wurden und dann wieder dieses MS-DOS-Symbol genommen wurde. Und über sowas regen sich User ja gerne mal auf...)

Also, wie gesagt, wenn du da was findest: Her damit :)


Danke. :)

Ingo Pape 02.10.2005 19:52

Hallo, soweit funktioniert das bei mir bestens, wie starte ich jedoch eine Datenbank mit Benutzerverwaltung ?
Hier der Startbefehl
Code:

IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" START "C:\Programme\Microsoft Office\Office10\MSACCESS.EXE" "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" /WRKGRP "Z:\S4-Tech\Atemschutz\ASV\backend\ASV-Gesichert.mdw"
Hier bekomme ich immer die Meldung:
Sie haben nicht die nötigen Berechtigungen, um das Objekt "c:\ASV\frontend\ASV-102.mdb zu bearbeiten. usw.
Was mache ich falsch ?
Viele Grüße Ingo Pape

Ingo Pape 03.10.2005 10:11

Starten von Datenbanken mit Benutzerverwaltung
 
Habe es gefunden, einfach nach dem Befehl Start ein "/B" setzen.
Code:

IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" START "/B" "C:\Programme\Microsoft Office\Office10\MSACCESS.EXE" "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" /WRKGRP "Z:\S4-Tech\Atemschutz\ASV\backend\ASV-Gesichert.mdw"
Gruß Ingo Pape

guilokie 20.07.2006 13:07

Vielen DANK
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

und DANKE an Fynbos für die Arbeit hier.
Ich hab alles soweit am laufen und mich störte noch wie auch schon zu anfang mal beschrieben die Geschichte mit dem Icon.

Vieleicht gefällt euch ja folgende Lösung :-)
Nach langem Googeln hab ich ein kostenloses bat2exe gefunden dort kann man ein Icon und noch ein paar Kleinigkeiten mehr einstellen.

Dann verschickt bzw. verteilt man nicht mehr die bat sondern eine exe.

Nächster Schritt wäre nun eine Install zu bauen der die Exe in den
Ordner C:\Dokumente und Einstellungen\***USER***\Startmenü packt :-) denke ein kostenloses Installer-tool sollte sich auch noch finden lassen.

Gruss

Guido

A_Anders 27.07.2006 12:43

einfach und gut
 
also ich such schon seit langem nach so einer lösung und hab überhaupt nicht drüber nachgedacht es auf diese weise zu lösen.

einfach und gut

großes lob

gruß andreas

guilokie 04.08.2006 13:20

Hallo zusammen :-)

Sieht jemand eine Möglichkeit (hier sind die Batchprogrammierer gefragt) den localen Pfad so anzupassen das in z.B. c:\Datenbanken\->Anmeldename<- abgelegt wird? Das ohne das ich die Batch für jeden User abändere?
Oder anders ausgedrückt gibt es im batch bereich sowas wie user als Variable die ich in den Pfad einbauen kann?

Gruss

Guido

boobou 04.08.2006 13:34

Hi

da wären wir beim guten alten DOS ... schau mal in einer Command-Box mit
SET
was da ausgegeben wird. Normalerweise müsste da ein Eintrag
USERNAME=xxxxx
sein. Diese Variable kannst du so verwenden:

Dir C:\DeinVerzeichnis\%Username%

guilokie 04.08.2006 13:47

Supi!!!!!!

Das wars nun sind all meine Problem gelöst :-)
Denn bei uns wecheln schon mal die Leute am Rechner. Da ich einige Datenbanken hab wo ich ein spezielles FE habe wo nur lese zugriff besteht dies aber von der Entwicklung die gleiche Versionsnummer behalten soll kann ich so vermeiden das bei einem Rechnerwechsel die Versionsgleichen aber mit unterschiedlichen Rechten ausgestatteten FE sich überschreiben :-)

Gruss

Guido

Michael81 13.10.2006 19:33

Respekt! Hab es noch nicht getestet aber es klingt super.
Bezüglich der Exe-Install-Datei: Ich verwende b1gsetup hat zwar kleinere Rechtschreibfehler im Anwendermenü, aber wer ließt das schon genau ;)

coron 05.05.2008 14:22

hallo,

hab mich wegen dem thema hier auch angemeldet... finde die idee echt gut! hab es bei mir auch direkt ausprobiert, funktioniert auch soweit problemlos...
allerdings hab ich jetzt folgendes problem:

Bei mir läuft das ganze auf einem Terminalserver auf dem hier eigentlich alle arbeiten.
Meine neue Datenbank läuft unter Office 2k3, es gibt aber eine weitere DB, die unter Office97 läuft. das soll auch so bleiben. heisst also, das ich 2 officeversionen auf dem TSE laufen hab. Problem ist beim öffnen der MDE öffnet er immer Access97 und sagt das das dateiformat unbekannt ist, ist ja auch klar.
kann ich in der batch irgendwie einstellen das er die db mit access 2k3 öffnet?

was noch erschwerrend hinzukommt, bei beiden version hat die exe-datei ja den gleichen namen... also MSACCESS.EXE

mfg tobi

Anne Berg 05.05.2008 15:49

Hallo und Willkommen im Forum.

Verschiedene Office-Versionen müssen selbstverständlich in verschiedene Verzeichnisse installiert werden. Die Anwendungen solltest du mit einer Verknüpfung starten, wobei die benötigte Access-Version mit vollständigem Zugriffspfad angegeben werden kann.

Helikutscher 21.04.2009 17:05

Hallo Fynbos,

zunächst einmal danke für diesen wirklicH nützlichen Beitrag. habe versucht das ganze für meine Anwendung umzusetzen, habe aber leider ein kleines Problem dabei.

Bevor ich das automatische Update im Netz realisiere, möchte ich es lokal auf meinem Rechner testen. Mein FE heisst ElGeWa.mdb. Der "Serverpfad" ist in diesem Fall c:\Entwicklung\TestDBs\ElGeWa.mdb. Der "Client" liegt auf c:\
WinRAR befindet sich auf dem Serverpfad. TUB_XP.bat auf dem Serverpfad und TUB_VER auf dem Client. In TUB_VER habe ich die neue Versionsnummer eingetragen. Die gepackte neue datei ElGeWa.rar liegt ebenfalls auf dem Server.

TUB_XP.BAT habe ich wie folgt angepasst:

Code:

::Wichtige Erläuterungen:
::Die Datei unrar.exe muss im Serverpfad vorhanden sein.
::Sie ist freeware und unter www.rarsoft.de kostenlos zum download.
::Die mdb-Datei muss natürlich auf dem Server auch gepackt vorhanden sein.
::Wir empfehlen dazu eine Version von winrar3.2, mit dessen hilfe gut gepackt werden kann
::(höchste Komprimierungsstufe, logisch)

::Für Fragen siehe auch unter http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=130759
::oder mail an rose@exs.de oder weinrich@exs.de

:: Carsten Pache, 1999
:: Modifiziert Florian T. Rose, 2004 rose@exs.de
:: Modifiziert Markus Weinrich, 2004 weinrich@exs.de



:: ----- START -----

::Befehlszeilenaugabe aus
@echo on


::Variablen deklarieren
SET FrontEndPfad=C:\
SET FrontEndProg=ElGeWa
SET ServerPfad=c:\Entwicklung\testDBs

:: Screen löschen
CLS

::ZWEITE BATCHDATEI AUF DEM SERVER AUFRUFEN UND DARÜBER DIE VARIABLE DER VERSIONSNUMMER HOLEN
::CALL ruft in einer Batch-Datei eine andere Batch-Datei auf. (SIEHE AUCH http://mac-ware.de/command/Hilfe/Befehle/call.htm)
CALL T:\tub_ver.bat

::Ist das Verzeichnis auf diesem Rechner bereits vorhanden?
::JA --> nichts tun
::NEIN --> Verzeichnis anlegen
IF NOT EXIST "%FrontEndPfad%\*.*" MD "%FrontEndPfad%"

pause

::Existiert das unrar.exe-Programm auf dem Zielrechner?
::JA --> weiter zu prog-da-check
::Nein -->kopieren und meldung ausgeben
IF EXIST "%FrontEndPfad%\unrar.exe" GOTO PROGDACHECK
ECHO ***
ECHO *** Komprimierungssystem wird installiert...
ECHO ***
copy "%ServerPfad%\unrar.exe" "%FrontEndPfad%\unrar.exe">nul

pause
::ICON checken und kopieren
IF NOT EXIST "%FrontEndPfad%\ElGeWa.ico" COPY "%ServerPfad%\ElGeWa.ico" "%FrontEndPfad%\ElGeWa.ico">nul
pause
:PROGDACHECK
::Existiert die aktuelle Version bereits auf diesem Rechner?
::JA --> Programm starten
::NEIN --> Programm vom Server auf den Rechner kopieren
IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" GOTO PROGRAMMSTART

pause
ECHO ***
ECHO *** veraltete ElGeWa-Versionen werden geloescht...
ECHO ***
IF EXIST "%FrontEndPfad%\%FrontEndProg%*.mdb" DEL "%FrontEndPfad%\%FrontEndProg%*.mdb"
Pause

::MDB-Datei vom Server auf den aktuellen Rechner kopieren
ECHO ***
ECHO *** Kopiere "ElGeWa %FrontEndVersion%" vom Server...
ECHO *** Bitte einen Moment Geduld! (Dieser Vorgang kann einige Minuten dauern)
ECHO ***
IF EXIST "%ServerPfad%\%FrontEndProg%-%FrontEndVersion%.rar" COPY "%ServerPfad%\%FrontEndProg%-%FrontEndVersion%.rar" "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.rar">nul

Pause
:: Entpacken mittels der unrar.exe OHNE Fehlermeldung bei Überschreiben!
%FrontEndPfad%\unrar.exe e -y "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.rar" %FrontEndPfad%\

::löschen der .rar-datei
DEL "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.rar"

Pause
:PROGRAMMSTART
IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" START "ElGeWa %FrontEndVersion%" "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb"

::Variablen loeschen
SET FrontEndVersion=
SET FrontEndPfad=
SET FrontEndProg=
SET ServerPfad=
Exit
:: ----- ENDE -----

Das ganze läuft soweit durch, stoppt aber dann mit der Fehlermeldung "cannot open c:\\ElGeWa-.rar Das System kann die angegebene Datei nicht finden"

Könntest du mir hierbei bitte mal helfen? Ich habe keine Ahnung was falsch ist. Hoffentlich erreicht dich meine frage noch. Ist ja reichlich lange her zum letzten Beitrag.

Besten Dank im voraus.

Gruß harald

BoskoBiati 21.04.2009 17:27

gestrichen, war nix!

Anne Berg 21.04.2009 17:36

Zitat:

SET FrontEndPfad=C:\

COPY "%ServerPfad%\%FrontEndProg%-%FrontEndVersion%.rar" "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.rar">nul
Da dürfte dann wohl überall ein Backslash zu viel drin sein.

Besser: lege das Frontend in ein Unterverzeichnis!


@Edgar: kennst du den Satz mit "x"?

Marsu65 30.03.2010 00:56

Gerade mal beim Stöbern hier hineingestolpert.
Frage: Wo kann man sehen was in der zweiten bat (tub_ver.bat), die den Versionsabgleich durchführt steht? Der Link aus der Client-bat existiert nicht mehr.

Zweite Frage in dem Zusammenhang: wie kann man in einer Batch-Datei das ERSTELLUNGSdatum zweier Dateien vergleichen?

CptChaos 30.03.2010 09:03

Hier habe ich 2 Varianten (1x per PowerShell, 1x per Windows Script File) für ein Scriptupdate vorgestellt.

An das FileCreated-Datum kommst Du auch über das FileSystemObject.
Wozu willst Du das vergleichen? Finde ich nicht unbedingt optimal, da es z.B. durch Scripte verändert (ob bewusst oder unbewusst) werden kann.

Marsu65 31.03.2010 15:37

Hi Benny
Zitat:

Wozu willst Du das vergleichen?
MDE kommt auf den Server. Dann brauch ich nur eine neue drüberzuklatschen. Die Clients können beim Start vergleichen und ggf. kopieren.

Danke für die Beispiele. Mit wsf bzw. vbs hatte ich gar nicht gedacht, weil noch nie wirklich mit beschäftigt. Ist ja noch viel einfacher :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 Uhr.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.