Zum Thema Automatisieren von MailStore Home gab es bereits Beiträge:
MailStore Home: Automatisch archivieren und bei Erfolg beenden
MailStore Home von 4.2 auf 5.0 updaten + Automatisierung der Archivierung
Auf Basis des letzten Beitrags folgt nun eine etwas aufgebohrtere Variante.
+++ WICHTIG: Dieser Beitrag und die Skripte werden (von mir) nicht mehr supported. +++
Gleich Vorweg, es gibt zwei Möglichkeiten, MailStore Home versteckt auszuführen. Die erste bietet die Möglichkeit einer Auswertung, hat aber den Nachteil, das, wenn auch nur kurz, das eine oder andere Fenster erscheint.
Teilweise versteckt ausführen mit Auswertung
In der vorigen Variante war es so, das bei Erfolg MailStore Home geschlossen wurde. Das Ganze wurde recht simple umgesetzt, in dem in der Fortschrittsanzeige nach dem entsprechenden Abschlusssatz gesucht wurde.
Die Prüfung auf den Abschluss der Archivierung erfolgt nun auf Basis des vorhandenseins der Schaltfläche “Details…”. Diese erscheint in der Fortschrittsanzeige erst, wenn die Aufgabe abgeschlossen wurde. Als nächstes wertet man aus, ob die Archivierung erfolgreich war oder eben nicht.
Diese erweiterte Version ermöglicht über die Auswertung des Rückgabewertes im Anschluss an die Ausführung der Archivierung dann z.B. eine Alarmeriung per Mail o.ä.
Das AutoIt-Skript inkl. Kommentare sieht dann so aus:
; AutoIt TrayIcon ausblenden #NoTrayIcon ; Parameter übergeben $MailStoreCMD = $CmdLine[1] ; MailStore Home ausführen Run($MailStoreCMD, "", @SW_HIDE) ; Das Auslesen von verstecktem text aktivieren Opt ("WinDetectHiddenText", 1) ; Die Fortschrittsanzeige ausblenden While 1 ; If WinExists ("MailStore Home") Then ; WinSetState ("MailStore Home", "", @SW_HIDE) <- verhindert den erfolgreichen Start des Programms ; WinSetState ("MailStore Home", "", @SW_MINIMIZE) <- Dann erscheint wieder das Hauptfenster ; EndIf If WinExists ("Fortschrittsanzeige") Then WinSetState ("Fortschrittsanzeige", "", @SW_HIDE) ExitLoop EndIf WEnd ; Auf den Abschluss der Archivierung warten und den Rückgabewert ermitteln ; 0 = Alles OK ; 1 = Fehler/Warnung While 1 If WinExists ("Fortschrittsanzeige", "Details...") Then If WinExists ("Fortschrittsanzeige", "Der Vorgang wurde erfolgreich abgeschlossen.") Then $ExitCode = 0 Else $ExitCode = 1 EndIf ; If WinExists ("Fortschrittsanzeige", "Der Vorgang wurde abgeschlossen mit Fehlern.") Then $ExitCode=1 ProcessClose ("MailStoreHome.exe") Exit ($ExitCode) EndIf Sleep (500) WEnd
Aufgerufen als kompilierte Exe-Datei wird es dann zusammen mit MailStoreHome:
start /wait "" HMSHwE_x64.exe "MailStoreHomePortable\Application\MailStoreHome.exe /c archive --id=1"
Der Rückgabewert kann wie gewohnt per Errorlevel abgefragt werden. 0 bedeuet Erfolgreich, größer als 0 Warnung/Fehler.
start /wait "" HMSHwE_x64.exe "MailStoreHomePortable\Application\MailStoreHome.exe /c archive --id=1" if %errorlevel% gtr 0 smtpsend.exe...
Download
Das Archiv enthält den Quellcode und jeweils eine Exe-Datei für 32- und 64-bit.
Nebenbei bemerkt: HMSHwE bedeutet “Hide MailStore Home with Errorlevel”
Vollständig versteckt ausführen ohne Auswertung
Um MailStore Home vollständig versteckt auszuführen kann man auf die “RunCompletelyHidden.exe” aus dem Beitrag AutoIt: Alle Fenster eines Prozesses ausblenden zurückgreifen:
RunCompletelyHidden.exe C:\Skripte\MailStoreHome.cmd
MailStoreHome.cmd: start "" C:\MailStoreHomePortable\Application\MailStoreHome.exe /c archive --id=1
Diese Methode hat allerdings den Nachteil, das man (bislang) nicht den Status bzw. Text der “Fortschrittsanzeige” abrufen kann. Folglich weiß man nicht, mit welchem Ergebnis der Job abgeschlossen wurde.
Um MailStore Home dann dennoch zu beenden könnte man nach einer Pause den Prozess beenden. Folgende Zeilen zur “MailStoreHome.cmd” hinzufügen:
timeout /t 360 taskkill /im mailstorehome.exe /f
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Bekomme den Fehler “Der Wartezustand wurde aufgrund eines abgebrochenen Mutex Beendet.”
Das ist meines Wissens nach eine Fehlermeldung vom .NET-Framework und AutoIt nutzt kein .Net, da wäre also erstmal zu klären, was bei Windows und/oder MailStore schief läuft.
Hallo,
bin auf der Suche nach einer Möglichkeit der automatisierten Sicherung meiner Mails mit dem Programm MailStore Home hier gelandet.
Läuft der hier beschriebene Weg auch noch mit der jetzt aktuellen Version des Programms?
Kann man einfach die Befehle für den eigenen PC anpassen oder muß noch auf etwas besonderes geachtet werden?
Danke
Hallo Martin,
> Läuft der hier beschriebene Weg auch noch mit der jetzt aktuellen Version des Programms?
Ja, funktioniert auch mit MailStore Home 13
> Kann man einfach die Befehle für den eigenen PC anpassen oder muß noch auf etwas besonderes geachtet werden?
Kann man anpassen. Pfade, ID(s) und ggf. die richtige Exe wenn nicht die Portable Ausgabe verwendet wird wäre zu beachten.
Hallo zusammen,
ich nutze das HMSHwE Skipt nun ein paar Tage. Es läuft ganz gut. Nur stelle ich ab und zu fest, dass der Prozess in der cmd hängen bleibt. Mal bei noch geöffneter MailstoreHome.exe und mal ist keine MailstoreHome.exe mehr geöffnet. Woran kann dies liegen?
mfg
Version: Mailstore Home 13 portabel – Intervall 1h
Servus Andy funktioniert das Script immer noch ?
Möglicherweise ja, hab’ nur noch eine privaten Installation und die scheint zu gehen.Ich hab’ mich geirrt, die Variante aus diesem Beitrag nutzt bei uns keiner mehr. Die einzig aktuell noch vorhandene MailStore Home läuft noch mit einem älteren Skript, siehe MailStore Home: Automatisch archivieren und bei Erfolg beenden
Hallo Andy,
bei mir funktioniert das Skript iwie nicht.
Es offnet sich ein DOS-Fenster (in dem nichts passiert) sowie die MailStorHome Oberfläche, in der ebenfalls nichts passiert.
Has Du einen Tipp?
VG Stefan
Hallo Stefan,
vielleicht ein falscher oder unvollständiger Pfad zur “MailStoreHome.exe”?
Hallo, danke für die Infos, noch ein Tipp, was ich grade rausgefunden habe: Für Leute, die mehre Accounts haben kann man im Account-Fenster alle markieren und dann eine Verknüpfung auf dem Desktop erstellen, die enthält dann alle IDs:
–id=”4,2,6,1,3,5″
Wenn man die nun startet archiviert er dann alle Accounts auf einmal 😉
Sehr schade, dass MailStore Home die Autoarchivierung für Homenutzer nicht zugänglich macht, als ob deren Emails weniger wichtig seien…
Grüße
Anguel