Silent Installation des Seafile Clients

Hallo,

ich suche im Moment nach der möglichkeit den Seafile Client silent zu installieren.
Leider scheinen die üblichen Methoden (msiexec /qn /a seafile.msi) nicht zu funktionieren.
Sobald ich den Befehl mit /qb ausführe, laufe ich in den Fehler: Der Installer ist auf einen unerwarteten Fehler beim installieren des Packetes gestoßen. Das deutet eventuell auf ein Problem mit dem Paket hin. Der Error code ist 2203 (frei aus dem englischen übersetzt).
Hier bricht der Installtionsvorgang ab.
Der /qn Befehl funktionier ebenfalls nichts. Hier läuft der Befehl vermutlich ebenfalls auf einen Fehler, der aber durch den silent-Befehl nicht angezeigt wird.
Die MSI Datei Funktioniert wenn man Sie manuell ausführt.
Gibt es eventuell bestimmte Schalter für den Seafile Client?

Für Hilfe wäre ich sehr danbar.

viele Grüße und ein schönes Wochenende

Microsoft web page on error code 2203:

https://support.microsoft.com/en-us/help/2000547/-error-2203.-an-internal-error-occurred.-when-you-install-a-microsoft-office-program

Hallo lins05,

Vielen Dank für den Tipp.
Leider hat dieser das Problem nicht behoben.
Ich habe die Silent-Installation mittlerweile auf zwei Windows 10 Rechner probiert.
Bei beiden tritt dieses Phänomen auf.

Dieser Forumseintrag ist zwar schon ein paar Jahre her, aber ich erlaube mir trotzem, meine Erfahrungen mit der automatisierten Installation (silent oder unattended) zu teilen.

Ausgangspunkt:

  • am Rechner installierte Version, die erstetzt werden soll: 8.0.8
  • neue Version, die unattended installiert werden soll: 9.0.1
  • Softwareverteilung über SCCM bzw. MECM
  • Umgebung: zentral gemanagte Arbeitsrechner, an denen sich mehrere Benutzer/innen anmelden (Multi-User-Betrieb)
  • Der Installer – eine mit WiX toolset erstellte MSI-Datei – zeigte für uns unerwünschtes Verhalten bei der Installation und Deinstallation.
  • Dem Installer fehlen – meiner Meinung nach – wichtige MSI-Properties bzw. Installationsparameter.
  • Benutzer und Administrator wünschten sich bestimmte Einstellungen und Verhaltensweisen, die vorkonfiguriert werden sollen.

Transformation

Die letzten 3 Ausgangspunkte erfordern eine Transformation des Installers (MST); in die Transform-Datei (z.B. Custom.mst) werden zusätzliche Vorkonfigurationen realisiert. Ich hab also folgendes gemacht (als Beispiel zu verstehen):

  1. Shortcut-Tabelle: Desktop- und Uninstall-Verknüpfung entfernt.
  2. Property-Tabelle:
    • SUPPRESS_LAUNCH_SEAFILE_AFTER_INSTALL_FINISH=1 hinzugefügt, damit Seafile nach erfolgter Installation nicht automatisch gestartet wird.
    • WixUIRMOption-Eigenschaft entfernt, damit während der Installation kein Dialog-Fehler kommt, wenn in der Dialog-Tabelle FilesInUse und MsiRMFilesInUse entfernt werden.
  3. Dialog-Tabelle: FilesInUse und MsiRMFilesInUse entfernt, damit während der Installation nicht die Dialogfelder FileInUse und MsiRMFilesInUse aufscheinen bzw. die wichtigen Prozesse Explorer.exe und Poweshell.exe im Zuge einer Installation/Deinstallation beenden.
    Wichtig! Diese Änderung macht es nötig, nach der Installation einen Neustart auszuführen. Der MSI-RestartManager nimmt nämlich keine Pending Restart -Einträge vor.
  4. Registry-Tabelle:
    • Die Run-Einträge (SeafileAuotStart) werden vom HKCU zum HKLM-Hive verschoben, indem die Root-Angabe von 1 auf 2 gestellt wird.
    • Ebenfalls in HKLM werden Software\Seafile\Seafile Client hinzugefügt, die trotz der bereits eingestellten Eigenschaft ALLUSERS=1 im HKCU-Hive eingetragen werden (Die einfache Änderung der Root-Angabe auf 2 oder -1 war nicht erfolgreich.). Unter dem so korrigierten Schlüssel werden die gewünschten Konfigurationen eingetragen:
      • PreconfigureShibbolethLoginUrl=https://abc.xyz.ac.at → Gibt die Single Sign-on-Adresse bereits vor und erleichtert die benutzerseitige Anmeldung
      • PreconfigureKeepConfigWhenUninstall=1 → Unterbindet einerseits das entsprechende Dialogfenster bei der Deinstallation trotz Automatisierung (/passive bzw. /quiet), andererseits behält es die Konfiguration aus vorangehenden Versionen
      • hideMainWindowWhenStarted=true im Unterschlüssel Behavior startet Seafile nach der Windows-Anmeldung verdeckt in der Taskleiste und nicht jedesmal im Haupfenster, was als störend empfunden werden kann.
  5. Die meisten Transformationen können im einfachen Orca-Editor gemacht werden, während sich für die Registry-Transformationen ein fortschrittlicher MSI-Editor (z.B. PACE, Master Packager) empfielt (z.B. als Import), weil dadurch die ggf. nötigen Änderungen in anderen Tabellen (Component, FeatureComponent, InstallExecuteSequence) automatisch vorgenommen werden.
  • Unattended-Befehl: msiexec.exe /package seafile-[VERSION]-en.msi TRANSFORMS=Custom.mst /passive /norestart
  • Silent-Befehl: msiexec.exe /package seafile-[VERSION]-en.msi TRANSFORMS=Custom.mst /quiet /norestart
1 Like

Folgende Beobachtungen führten u.a. zu den gemachten Transformationen:

Multi-User-Betrieb

Aufgrund der MSI-Einstellungen Root=1 (Registry-Tabelle) und ALLUSERS=1 (Property-Tabelle) wird bei einer administrativen Installation (nicht Systemkonto) der Autostart ausschließlich auf Benutzerebene des Installierers eingerichtet: HKCU\Software\Microsoft\Windows\CurrentVersion\Run

  • Keine Einträge finden sich in HKLM\Software\Microsoft\Windows\CurrentVersion\Run, shell:startup oder shell:common startup
  • Wenn sich also am selben Rechner ein/e andere/r Benutzer/in anmeldet, wird Seafile dort nicht mehr automatisch gestartet.

Bei einer Installation über das Systemkonto (LocalSystem Account; NT-Autorität\System; SCCM) wird der Autostart entsprechend hier eingerichtet: HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run

  • Im Falle eines Deployments via SCCM wird somit bei keinem Benutzer Seafile automatisch gestartet.

"Benutzer wechseln" (Switch user) und Multis-Session

Wir haben "Benutzer wechseln" mehrmals probiert mit jeweils geänderten Daten in einem von Seafile synchronisierten Ordner:

  • Ein/e angemeldete/r Benutzer/in muss sich nicht vorher abmelden, damit ein/e weiterer/e angemeldete/r Benutzer/in Seafile nutzen kann. Der Userwechsel ohne Abmeldung funktioniert sowohl mit dem Sync-Client als auch dem Seadrive-Client.

Beide Clients seien auch multi-session-fähig.

  • Im User-Kontext werden zwei Prozesse gestartet: seafile-applet (Userinterface) und seaf-daemon (Hintergrund-Task für die Synchronisation). Es existiert auch kein Dienst der mit anderen Rechten gestartet wird. Die Client-Konfiguration landet direkt in einem Ordner unter %USERPROFILE%\ccnet
  • Beim Einrichten des Clients haben die User die Möglichkeit, sich selbst ein Ei zu legen, wenn sie einen Ordner synchronisieren der aus Windows-Sicht für beide Benutzer zugänglich ist. 

Vorkonfiguration

Der Client lässt sich über 2 Wege vorkonfigurieren, in Anlehnung an https://help.seafile.com/faq bzw. https://de.seafile.com/konfiguration-seadrive-registry-konfigurationsdatei/

  1. Entweder über die Registrierung (HKCU oder HKLM),
  2. oder über eine Konfigurationsdatei seafile.ini im Benutzerprofil.

Ich überlasse dem/der Benutzer/in die Entscheidungen, wo der "Standard-Ordner von Seafile erstellt werden soll." Es ist dies der Seafile-Ordner, der als Ziel vorausgewählt ist beim Herunterladen künftiger Bibliotheken.

Single Sign-On

Einzig die SSO-Adresse (= default shibboleth login address) gebe ich praktischerweise schon in der Registrierung vor.

Beim Erstaufruf von Seafile (Autostart) muss der Benutzer also noch folgende Schritte durchführen:

  • Standard-Ordner von Seafile auswählen.
  • Auf "Single Sign-On" klicken und seine Benutzerdaten (Kennung und Passwort) eingeben.

Einstellungen

Einige wünschen sich, dass folgende zwei Client-Einstellungen (Reiter "Allgemein") für alle User vorgegeben werden und nicht von dem/der Benutzer/in selbst vorgenommen werden müssen:

  • "Hauptfenster nach dem Start ausblenden" deaktivieren
  • "Seafile nach der Anmeldung automatisch starten" deaktivieren

Diese Einstellungen werden auch dann nicht systemweit (für alle User) eingerichtet, wenn der Installer als Administrator oder System ausgeführt wird (ALLUSERS=1 ist bereits in der Property-Tablle voreingestellt):

  • [HKCU\SOFTWARE\Seafile\Seafile Client\Behavior] hideMainWindowWhenStarted=true (REG_SZ)
  • [HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] Seafile=C:\Program Files\Seafile\bin\seafile-applet.exe (REG_SZ)
  • Die Eigenschaft SEAFILE_AUTO_START=1 wird immer im Registry Hive des jeweiligen installierenden Benutzers gesetzt (HKCU bzw. HKEY_USERS\.DEFAULT).
    • SEAFILE_AUTO_START=0 oder SEAFILE_AUTO_START="" unterbindet dieses Verhalten nicht, es muss hierfür die Eigenschaft aus der Property-Tabelle gelöscht werden.

Wenn man die Angaben in den äquivalenten HKLM-Bereich erstellt, dann erhält man dasselbe Verhalten für alle User, mit dem Schönheitsfehler, dass in den Einstellungen zwar das Häkchen bei "Hauptfenster ... ausblenden" gesetzt ist, nicht jedoch bei "Seafile ... automatisch starten" (obwohl der Client wie gewünscht für alle Benutzer gestartet wird).

Kontoinformationen entfernen

Bei der Deinstallation (und Aktualisierung einer bestehenden Version) wird folgendes beobachtet:

  1. Es erscheint das Fenster "Möchten Sie die Kontoinformationen für Seafile wirklich entfernen?"
    • Entspricht MSI-Action: RemoveSeafileUserData
    • Das Fenster erscheint auch bei einer silent- bzw. unattended-Deinstallation (/quiet bzw. /passive) und auch mit dem Zusatzparameter REMOVE=ALL
    • Allerdings lässt sich die Frage mittels Registry-Eintrag PreconfigureKeepConfigWhenUninstall konfigurieren.
    • Key: PreconfigureKeepConfigWhenUninstall - Type: REG_SZ - Value: 0 (show the confirm dialog) or 1 (hide the confirm dialog wizard)
    • SecureCustomProperties enthält zwar die Eigenschaft CHECKBOX_DEL_SEAFILE_DATA, es ist mir aber unklar, ob diese Eigenschaft dieses Fenster steuert oder was anderes bewirkt.
  2. Es werden Explorer.exe-Prozesse beendet, sofern der Syncing-Client läuft, so dass nach erfolgter Deinstallation der Monitor schwarz bleibt (siehe FileInUse-Problematik).

Programmstart nach erfolgter Installation

Nach einer erfolgreichen Installation wird ab Version 9 standardmäßig der Seafile-Client gestartet (seafile-applet.exe, seaf-daemon.exe, conhost.exe). Diese Verhalten kann mit der Eigenschaft SUPPRESS_LAUNCH_SEAFILE_AFTER_INSTALL_FINISH=1 unterbunden werden, was v.a. sinnvoll ist, wenn die Installation im Systemkontext erfolgt.

FileInUse- und Restart Manager-Problematik

Wenn eine aktualisierte (SC)CM-Application über eine bestehende Installation silent/unattended drüberinstalliert wird, und der Syncing-Client läuft, dann werden die Explorer.exe-Prozesse beendet und nach erfolgter Aktualisierung bleibt der Bildschirm schwarz. Die Explorer.exe wird nicht wieder gestartet. Bei einer GUI-Installation entspricht dies folgendem Auswahlschritt

  1. Im MsiRMFilesInUse-Dialogfeld
  2. im FileInUse-Dialogfeld

Versuche/Überlegungen

  1. Mit der Eigenschaften MSIRESTARTMANAGERCONTROL=Disable und REBOOT=ReallySuppress kann zwar der obere MsiRMFilesInUse-Dialog und ein Neustart unterbunden werden, allerdings wird damit nur der (ältere) untere FileInUse-Dialog gestartet. Das ist im Prinzip keine Lösung, weil die Schalter nicht das FileInUse-Verhalten insgesamt deaktiveren. Zudem schauen die Fenster dann auch anders aus (3 Buttons: Retry, Ignore, Cancel).
  2. Der Parameter bzw. die Property WixUIRMOption=DontUseRM bewirkt in hier nur, dass der RadioButton "Do not..." ausgewählt wird.
  3. Mit MSIDISABLERMRESTART=0 könnte man noch versuchen, dass nach dem automatischen Beenden der Prozesse, diese wieder neu gestartet werden.
  4. Mit MSIRMSHUTDOWN=2 könnte man noch versuchen, Prozesse oder Dienste nur dann zu beenden, wenn sie vom Restart Manager (RM) für einen Neustart registriert wurden. Wenn ein Prozess oder Dienst für einen Neustart nicht registriert wurde, werden keine Prozesse oder Dienste heruntergefahren.
  5. Des Herumprobierens müde, habe ich sowohl die WixUIRMOption in der Property-Tabelle als auch FileInUse und MsiRMFileInUse in der Dialog-Tabelle einfach gelöscht und in der CM-Application "client will force a mandatory device restart" eingestellt. Bei Gelegenheit kann man sich das ganze Verhalten noch genauer anschauen, vgl. dazu in Stack Overflow "wix - Windows Installer-Avoid FileinUse dialog box when Installing a package"