MailStore Home: Automatisch archivieren und bei Erfolg beenden

Es ist schon ein paar Tage her, das die automatische Archivierung mittels MailStore Home in einem Beitrag besprochen wurde (guckst du hier). Der grundlegende Befehl für die Archivierung hat sich zwar nicht geändert, allerdings funktionierte das automatische Beenden schon lange nicht mehr wie einst beschrieben.

Ein Update musste her, zudem sollte es eine elegantere Lösung werden. Wie so oft führt der Weg über AutoIt. Letztlich wird geprüft, ob die Archivierung erfolgreich abgeschlossen wurde und dann MailStore Home beendet. Bei Misserfolg bleibt das Fenster so stehen wie es ist.

CheckMailStoreHomeEnd.zip

Im Archiv sind der Quellcode und eine für 64-bit Windows kompilierte Exe-Datei enthalten.

Beispiel-Skript:

@echo off

rem Auf erfolgreichen Abschluss der E-Mail-Archivierung pruefen

start "" "C:\Backup\CheckMailStoreHomeEnd.exe"

rem MailStore Home starten / E-Mail-Archivierung durchfuehren

start "" "C:\Program Files (x86)\MailStore\MailStore Home\MailStoreHome.exe" /c archive --id="1"

Mittels Aufgabe lässt sich der gesamte Vorgang unter Windows automatisieren, das klappt allerdings nur unter folgenden Voraussetzungen:

  • Nur erfolgreich bzw. möglich, wenn diese ohne erhöhte Rechte ausgeführt wird.
  • Nur erfolgreich bzw. möglich, wenn der ausführende Benutzer angemeldet ist.

20 Kommentare

  1. Caroline

    Ich habe jetzt Windows 10 und Office 2019. Zuvor, mit Windows 10 und Office 2016 hat das wunderbar funktioniert, aber jetzt öffnet sich nur noch das Programm, die Sicherung startet aber nicht. Die ID habe ich mehrfach geändert, mit 5 und 1 und mit Bindestrichen und langem Bis-Strich. Es geht einfach nicht mehr. Hat jemand einen Tipp für mich?

  2. andy

    Hallo Caroline,

    funktionert die manuelle Archivierung?

  3. Caroline

    Ja, manuell klappt es. Ich habe das Ganze mit einer Aufgabenplanung bisher gelöst, musste dann immer manuell schließen. Ich habe aber keine Ahnung, wie man ein Skript schreibt (über cmd?). Das Skript, dass du mir im Link geschickt hast, habe ich dort reinkopiert, aber das war offenbar nicht richtig. Wäre für Hilfe dankbar.

    Danke und liebe Grüße von Caroline

  4. andy

    Hallo Caroline,

    wir gehen das mal Schritt für Schritt durch:

    – Mit Notepad eine neue Datei erstellen. Der Dateiname vor dem Punkt ist egal, hinter dem Punkt muss “.bat” oder “.cmd” stehen. Beispiel: “MailStoreHome.cmd”.
    – Den Inhalt des Beispiel-Skripts in diese neu erstellte Datei kopieren.
    – In den gleichen Ordner, in dem sich das Skript befindet den Inhalt des CheckMailStoreHomeEnd.zip-Archivs hinzufügen.
    – Mit einem Doppelklick auf die zuvor erstellte Skript-Datei das Ganze zur Ausführung bringen und beobachten was passiert.

    Es sollte MailStoreHome starten und die erste Archivierungsaufgabe ausgeführt werden. Ich gehe an dieser Stelle einfach mal davon aus, das MailStoreHome installiert ist und das es nur eine Archivierungsaufgabe gibt. Es kann sein, wenn es zuvor noch andere Archivierungsaufgaben gab, das man die richtige ID erst noch ermitteln muss. Dazu, sofern notwendig, später mehr.

    Bevor man jetzt mit Windows-Aufgabe etc. weiter macht, bitte erstmal schauen, ob es soweit läuft wie erwartet.

  5. sldfhkgf

    Vielen Dank, Andy!!
    Funktioniert super! 🙂

  6. Thomas

    Hey super, genau nach so einer Funktion habe ich noch gesucht. Vielen Dank Andy! 🙂

  7. Andi

    Coole Sache, danke! Simple Lösung, nice.

    Dies ermöglicht es, auch mehrere Postfächer automatisch archivieren zu lassen. Siehe folgendes Beispiel (Pfade und id sind natürlich anzupassen).

    rem Befehl: “C:UsersAMDocumentsMailStore Homeautobackup.bat”

    rem Auf erfolgreichen Abschluss der E-Mail-Archivierung pruefen
    start “” “C:UsersAMDocumentsMailStore HomeCheckMailStoreHomeEnd.exe”
    rem Postfach 1
    “C:Program Files (x86)deepinventMailStore HomeMailStoreHome.exe” /c archive –id=”2″

    timeout /T 3

    start “” “C:UsersAMDocumentsMailStore HomeCheckMailStoreHomeEnd.exe”
    rem Postfach 2
    “C:Program Files (x86)deepinventMailStore HomeMailStoreHome.exe” /c archive –id=”4″

  8. Nemo

    Lieber Andy,

    mit der neuen Version 12.1.1.14767 von MailStore Home funktioniert die CheckMailStoreHomeEnd.exe nicht mehr. Das Programm wird nicht mehr automatisch beendet.

    Danke im Voraus fürs Fixen!

  9. Andy

    Habe es gerade mal getestet, bei mir funktioniert es nach wie vor. Seitens des Dialogs, auf den das Programm angewiesen ist, hat sich scheinbar an den relevanten Teilen nichts geändert.

  10. Eva

    Hallo Andy,

    Vielen Dank für diese super Lösung. Nach einigen Startschwierigkeiten (Ich nutze MailStoreHomePortable und daher ist mein Archiv Pfad etwas anders) klappt es jetzt super und ich nutze die .bat Datei einfach im Autotart.

    Vielen Dank auch für das aktuell halten dieser Lösung, schön mal ein Forum/einen Blog zu finden, der nicht seit mindestens 5 Jahren nur noch verstaubt =)

  11. Phan

    Hi und vielen Dank für die tolle Erklärung. Auch danke an Andi für die Erklärung wie das ganze für zwei Postfächer funktioniert!

    Ist es möglich das ganze auch versteckt im Hintergrund auszuführen?

  12. Andy

    Versteckt klappt leider nur bedingt, siehe:

    MailStore Home: Versteckt ausführen und Archivieren mit Rückgabewert

  13. kuber

    Hallo,

    Ich kann keine Archivierung über Aufgabenplanung ausführen. Kann es wegen des Passworts von Mailstores sein?

    wenn ich das skript ausführe, wird von mir das Passwort von Mailstore verlangt. Kann man das PAsswort als Parameter im Batch-Datei übergeben.

    Danke.

    Kuber

  14. Andy

    Mit “Passwort” ist der Kennwortschutz beim Zugriff auf das Archiv gemeint oder das Kennwort des Postfaches?
    So oder so sind Kennwort-Eingaben im Skript nicht vorgesehen.

  15. Reinhard

    Hallo,
    vor dem selben Problem stehend habe ich Ihre Lösung gefunden: besten Dank dafür! Auf der Basis ist folgender Batch entstanden, der via Aufgabenplanung mit »cmd.exe /c start “” c:backupbackup.cmd« jede Nacht um 3:00 Uhr gestartet wird. (MailStoreHome v13.1, Win v21H1) Klappt mit Bordmittel ohne zusätzliche Apps. Hier die Datei:

    @echo off
    :: Backup.cmd
    :: MailStore Home automatische E-Mail-Archivierung
    :: —————————————————————
    :: 2021-05-28 RH // erstellt
    :: 2021-05-30 RH // Taskkill ergänzt mit Parameter /T /F
    :: 2021-05-31 RH // Protokollierung ergänzt

    :: Logfile generieren
    set LogFile=C:backupBackup_%DATE%.log
    echo [%DATE% %TIME%] Mailstore Backup gestartet … >>%LogFile% 2>&1

    :: Backup starten mit Protokoll
    call :backup >>%LogFile% 2>&1
    :: ————————————————————————————————————————
    :backup
    echo [%DATE% %TIME%] Task #1 – Thunderbird
    start “” “C:Program Files (x86)MailStoreMailStore HomeMailStoreHome.exe” /c archive –id=”1″

    echo [%DATE% %TIME%] Task #2 – Outlook
    start “” “C:Program Files (x86)MailStoreMailStore HomeMailStoreHome.exe” /c archive –id=”2″

    echo [%DATE% %TIME%] 5 Minuten warten … dann sind (hoffentlich) beide Tasks beendet
    C:WindowsSystem32timeout /T 300 >NUL

    :: Prozess beenden
    echo [%DATE% %TIME%] MailStore Prozess beenden …
    C:WindowsSystem32taskkill /F /T /IM MailStoreHome.exe

    echo [%DATE% %TIME%] Script beendet
    echo —————————————————————

    :: Rechner runterfahren
    C:/Windows/System32/shutdown.exe /h

  16. Volker

    Meherere Archivierungsaufgaben:

    mit ID=1 läuft eine von mehreren Arch.aufgaben wunderbar

    Ich habe ID 0, 2, 3 ausprobiert, leider ohne Erfolg.

    Gibt es eine Lösung – Version 13.1 ?

    Danke im voraus

  17. Volker

    Nachtrag: mehrere Arch.aufgaben
    gelöst !

    Aufgabe markieren
    M-links >>> Verknüpfung auf Desktop erstellen
    Verknüpfung Eigenschaften – hier stehts !!

    bei mir 4

    Danke

  18. Oli

    Ich hab das bei mir so gelöst, dass einmal pro Stunde ein Backup gefahren wird per SYSTEM Accunt

    PsExec -accepteula -s -i “C:Program Files (x86)MailStoreMailStore HomeMailStoreHome.EXE” /c archive –id=”1″

    Zu jeder halben Stunde läuft dieses Batch um Mailstore Home zu beenden

    taskkill /im MailstoreHome.exe /f

    Wichtig war hier, dass der SYSTEM Account die gleichen Ordner verwendet, das kann man so einstellen:

    PsExec” -accepteula -s -i “C:Program Files (x86)MailStoreMailStore HomeMailStoreHome.EXE” /config”

    Die ersten beiden Batches starte ich über “System Scheduler Pro” (https://www.splinterware.com/products/scheduler.html) per SYSTEM (also völlig unsichtbar)

    Ausserden läuft alle paar Stunden ein Autohotkey Script, welches das Alter der Backups prüft

    Loop E:DatenMailStore HomeMailStoreBackupData*.*
    {
    If ( A_LoopFileTimeModified >= Time )
    {
    Time := A_LoopFileTimeModified
    File := A_LoopFileLongPath
    }
    }

    StringTrimRight, Date, Time, 6
    CurrentDate = %A_YYYY%%A_MM%%A_DD%

    EnvSub, CurrentDate, %Date%, days

    Difference := CurrentDate

    If Difference > 2
    {
    Run, C:batchessendmailsendmail.bat “Mailstore Home Backup not running” “Last Mailstore Home Backup is about %Difference% Days old, please check”, Hide
    }

  19. Thomas

    Hallo!

    Ich habe das Script auf zwei verschiedenen Rechnern ausprobiert. Auf einem läuft es, auf dem anderen habe ich ein merkwürdiges Problem.

    Wenn ich den Link, den Mailstore generiert hat, starte, werden alle Postfächer und Outlook gesichert.

    Wenn ich das Script starte, werden nur zwei Postfächer gesichert – zwei von drei GMail-Postfächern. Es ist egal, ob ich das Script zeitgesteuert oder über “Ausführen” starte.

    Ich kann beobachten, dass in der Fortschrittsanzeige kurz alle Konten auftauchen. Dann schließt sich die Fortschrittsanzeige wieder. Im Fenster “E-Mail archivieren” bei den Konten, die nicht gesichert wurden, die Uhrzeit der letzten manuellen Sicherung und “Erfolgreich”. Bei den beiden GMail-Konten die gesichert wurden, steht die Uhrzeit des Laufes aus der Aufgabenplanung.

    In der Aufgabenplanung steht “Der Vorgang wurde erfolgreich beendet”

    Der Aufruf sieht so aus:
    start “” “C:Program Files (x86)MailStoreMailStore HomeMailStoreHome.exe” /c archive –id=”14,23,21,30,33,7,32,31″

    Wenn ich in der Aufgabenplanung MailstoreHome.exe und die Argumente eintrage, funktioniert es richtig.

    Alles sehr dubios.

    Irgendeine Idee?

  20. Breuni84

    Hallo.
    Danke für die Inspiration hier. Leider hat bei mir die CheckMailStoreHomeEnd.exe nicht funktioniert.
    Hab stundenlang rumprobiert. Ich vermute, es gab mit einer neueren Version in der Zwischenzeit eine Änderung.
    Genauer vermute ich, dass im Data Ordner beim Start .lock Dateien erstellt werden, die beim ordentlichen Beenden eigentlich wieder gelöscht werden.
    Da jedoch Mailstore nicht “sauber” beendet wird, bleiben die .lock Dateien erhalten und beim nächsten Start per batch, kann Mailstore dadurch nicht in die Datenbanken schreiben.
    Darum habe ich folgende simple Batch geschrieben – seit dem läuft der eingerichtete Scheduler (Aufgabenplanung) ohne Probleme.

    Hier meine Batch, vllt hilt es jemanden.

    rem Promt deaktivieren
    @echo off

    rem Killt Prozess mit dem Namen “MailStoreHome.exe”
    taskkill /IM MailStoreHome.exe /F

    rem Wartet 10 Sek. – sicher ist sicher
    timeout 10 > NUL

    rem Da MailStore nicht richtig beendet wird, bleiben die .lock Files bestehen.
    rem Solange diese bestehen, wird der Zugriff auf die jeweiligen Datenbanken gesperrt.
    rem Darum werden die “.lock”-Files VOR dem Start gelöscht.
    del D:MailstoreData*.lock

    rem Wartet 10 Sek.
    timeout 10 > NUL

    rem Hiermit wird Mailstore gestartet und die neuen Mails abgeholt. Ggf. die ID anpassen.
    rem ‘start “”‘ bewirkt, dass ein Prozess gestartet wird und das Skript sofort zum nächsten
    rem Punkt springt, andernfalls würde Mailstore ewig im Hintergrund weiterlaufen und nie
    rem zum nächsten Punkt übergehen.
    start “” “D:MailstoreApplicationMailStoreHome.exe” /portable /c archive –id=”1″

    rem Hier die Zeit eintragen, nach der Mailstore wieder beendet werden soll.
    rem Bei mir dauert das Abrufen neuer Mails ca. 5 min, um sicher zu gehen, dass das
    rem Abholen wirklich beendet wurde, hier großzügig die Zeit erhöhen. z.B. 1h = 3600 sek
    timeout 360 > NUL

    rem Killt Prozess mit dem Namen “MailStoreHome.exe”
    taskkill /IM MailStoreHome.exe /F

    rem Löscht erneut die “.lock”-Files. Ordnung muss sein.
    del D:MailstoreData*.lock

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

© 2023 Andy's Blog

Theme von Anders NorénHoch ↑