Zum Inhalt springen

Updater

Der Updater ist ein Windows-Dienst auf dem invoiceR-Server. Er prüft regelmässig, ob eine neue Version bereitsteht, und installiert sie selbständig. Frontend und Backend haben je einen eigenen Updater, für jede Umgebung (Test, Produktion) einen eigenen.

  1. Prüfen: In einem festen Intervall fragt der Updater bei enio nach einer neuen Version. Alternativ prüft er einen lokalen Ordner auf eine bereitgestellte Update-Datei.
  2. Vorbereiten: Er lädt das ZIP-Archiv herunter, entpackt es, kopiert eure Konfigurationsdateien hinein und führt beim Backend den Migrator aus. Schlägt die Migration fehl, bleibt die laufende Version unverändert; beim nächsten Versuch wird es erneut probiert.
  3. Austauschen: Er stoppt die Website, verschiebt den Programmordner, ersetzt ihn durch die neue Version und startet die Website wieder. Die Website wird nur gestartet, wenn sie vorher lief.
  4. Abschliessen: Er schreibt die Datei .version mit der installierten Version in den Programmordner, packt die alte Version in ein ZIP-Archiv und löscht die ältesten Archive.

Eine Version, deren Installation mehrmals fehlgeschlagen ist, versucht der Updater nicht mehr.

Im Ordner des Updaters liegen Skripte, die den Dienst registrieren und starten: Install-BE.bat für das Backend, Install-FE.bat für das Frontend (als Administrator ausführen). Sie erkennen die Umgebung am Ordnernamen (Test oder Prod) und legen einen Dienst wie InvoiceR-Updater Backend Prod an. Uninstall-BE.bat und Uninstall-FE.bat entfernen ihn wieder.

Von Hand geht es so:

sc.exe create "InvoiceR-Updater Backend Prod" binPath= D:\invoiceR\Prod\Updater-BE\InvoiceR_Update_Service.exe start=auto
sc.exe start "InvoiceR-Updater Backend Prod"

Der Updater liest die Datei appsettings.json in seinem Ordner.

SchlüsselBedeutung
SecretKeySchlüssel, mit dem sich die Installation bei enio ausweist. Ihr erhaltet ihn von enio.
SoftwareId1 = Frontend, 2 = Backend.
BackendApiUrlAdresse, von der neue Versionen bezogen werden. Ihr erhaltet sie von enio.
SchlüsselStandardBedeutung
CheckEveryXSeconds60Intervall für die Prüfung auf neue Versionen.
MaxInstallationAttempts5Anzahl Versuche pro Version.
WorkingDirectoryArbeitsordner; relative Pfade gehen von hier aus.
ApplicationDirectory../AppProgrammordner des invoiceR (Frontend oder Backend).
ConfigurationDirectoryAppConfigOrdner mit euren Konfigurationsdateien, die in jede neue Version kopiert werden.
ArchiveDirectoryArchiveOrdner für die Archive der alten Versionen.
KeepArchivesMax10Anzahl Archive, die behalten werden. Negativ: nie löschen.
StartStopWebServertrue: Website und Application Pool beim Update stoppen und starten.
WebsiteName, WebsitePoolNameName der Website und des Application Pools im IIS.
ForceWebServerStarttrue: Website nach dem Update auch starten, wenn sie vorher nicht lief.
RunMigrationstrue: Migrator beim Update ausführen (nur Backend).
MigratorEnvironmentProductionWert für ASPNETCORE_ENVIRONMENT während der Migration.
MigratorCustomAppSettingsWert für INVOICER_CUSTOM_APPSETTINGS während der Migration.
MigratorTimeoutSeconds1800Höchstdauer der Migration.
TempDirectoryOrdner für temporäre Dateien. Muss auf demselben Laufwerk wie die Website liegen.
ProxyAddress, ProxyUser, ProxyPasswordProxy-Server für den Internetzugang.
UpdateFromDirectoryfalsetrue: Update-Datei aus einem lokalen Ordner statt aus dem Internet.
ApplicationUpdateDirectoryOrdner mit der Update-Datei, wenn UpdateFromDirectory gesetzt ist.
ApplicationUpdateFilenameDateiname der Update-Datei in diesem Ordner.