Zentrale Installation auf einem Applikationsserver

Grundlage für das unten beschriebene Vorgehen ist diese Dokumentation. Zur Vorbereitung müssen von dieser Seite einige Dateien heruntergeladen werden, die im Folgenden benötigt werden.
Das Ziel besteht darin, QGIS auf einem Applikationsserver zentral zu installieren, so dass die Clients über eine Netzlaufwerksverbindung auf QGIS zugreifen können. Dadurch kann eine lokale QGIS-Installation auf den Clients unterbleiben. Vor allem bei mehreren / vielen Anwendern in einer Organisation bringt dieses Vorgehen einige Vorteile mit sich:

  1. Es muss nur eine Installation pro QGIS-Version gepflegt werden. Der Wartungsaufwand reduziert sich deutlich.
  2. QGIS-Updates können bei Bedarf schneller eingepflegt werden.
  3. Alle Anwender verwenden die gleiche Basis-Version.

Voraussetzung ist eine stabile, möglichst schnelle Netzwerkanbindung.

  • Für die nachfolgende Verfahrensbeschreibung werden folgende Bezeichnungen für die QGIS-Varianten verwendet:
    1. QGIS Long Term Release → QGIS LTR, Verzeichnisname qgis-ltr (Programme-Verzeichnis + User-Verzeichnis)
    2. QGIS Latest Release → QGIS 3, Verzeichnisname qgis-lr (Programme-Verzeichnis + User-Verzeichnis)
    3. QGIS Developement → QGIS DEV, Verzeichnisname qgis-dev (Programme-Verzeichnis + User-Verzeichnis)
  • Auf dem Applikationsserver wird ein separates Laufwerk (alternativ: eine separate Partition) eingerichtet und dafür der Laufwerksbuchstaben „Q“ vergeben. Dieses Laufwerk wird unter dem Namen „QGIS“ im Netzwerk freigeben und mit entsprechenden Verzeichnis- / Freigabe-Berechtigungen versehen. Schließlich sind die Unterverzeichnisse „QGIS“ (für die Standalone-Varianten) und OSGeo4W64 (für die OSGeo4W64-Variante) einzurichten.
  • Die nachfolgenden Ausführungen beschränken sich auf die Bereitstellung der 64bit-Versionen von QGIS.

Während einer normalen Installation speichert QGIS die für die Programmausführung erforderlichen Daten an verschiedenen Stellen:

  • Programmdateien werden im Programmverzeichnis gespeichert, z.B.: „C:\Program Files\QGIS 3.4“, „C:\OSGeo4W64“. Diese Verzeichnisse enthalten neben dem Hauptprogramm, DLL's, Icons etc. auch weitere externe Programme und Plugins (GRASS, SAGA etc.). Das Verzeichnis enthält keine Setup-Parameter oder benutzerspezifische Daten. Der Standort des Programmverzeichnisses hängt von der Installationsmethode ab.
  • Benutzerspezifische Daten werden im Home-Verzeichnis des Anwenders gespeichert („%userprofile%\AppData\Roaming\QGIS). Dieses Verzeichnis enthält Unterordner für Processing, Farbpaletten, Vorlagen für das Projektmanagement und Quellcode für alle zusätzlichen Plugins. Dieses Verzeichnis ist für jeden Benutzer personalisiert.
  • Systemdateien für verschiedene Versionen von „Microsoft Visual C++ Redistributable“ werden im Verzeichnis „$WINDIR\system32“ gepeichert.
  • Und schließlich werden auch einige Schlüssel in der Registry angelegt (z.B. Programm-/Dateiverknüpfungen, Setup-Parameter etc.). Dazu dient u.a. auch der Pfad „HKEY_CURRENT_USER\Software\QGIS“.

Durch den Einsatz von QGIS Kommandozeilen-Parameter kann man die Verwendung der Registry für die Setup-Parameter in die Datei „QGIS2.ini“ bzw. „QGIS3.ini“ in das Home-Verzeichnis des Anwenders umlenken.

Die Umsetzung der zentralen Installation von QGIS auf einem Applikationsserver gliedert sich in drei Phasen:

  • Prepare-Phase, in der der GIS-Administrator eine Standard-QGIS-Installation durchführt und entsprechende Anpassungen vornimmt, die den Start der Anwendung von einem Client-PC's aus zulässt.
  • Initialize-Phase, in der auf dem Client die Desktop-Icons, die Startmenü-Einträge und Dateiverknüpfungen sowie ggf. weitere organisationsspezifische Einstellungen (z.B. Einrichtung zusätzlicher Schrift- / Symbolfonts etc.) angelegt und vorgenommen werden. Die Initialisierungsphase kennzeichnet sich dadurch, dass die Start-Batch-Datei mit Administator-Rechten ausgeführt werden muss. Dies kann in größeren Organisation auch durch eine Softwareverteilung erfolgen.
    Achtung: Bei parallelem Betrieb mehrerer QGIS-Versionen ist die Initialisierungsphase nur einmal erforderlich! Für das Anlegen von Dateiverknüpfungen oder die Bereitstellung zusätzlicher Schrift-/Symbolfonts werden Änderungen in der Registry vorgenommen.
  • Run-Phase, in der während des ersten Starts von QGIS das Benutzerverzeichnis neu angelegt wird und ansonsten der „normale“ Start der Anwendung erfolgt.

Die OSGeo4W-Variante erlaubt die parallele Installation von QGIS LTR, QGIS 3 und QGIS DEV. Im Detail unterscheidet sich die Bereitstellung der drei Varianten in Inhalt und Bezeichnung der Batch-Dateien. Sie werden der Übersichtlichkeit wegen im Folgenden getrennt aufgeführt.1)

Prepare-Phase (Teil 1)

Die ersten Arbeitsschritte sind für alle QGIS-Versionen identisch und werden auf dem Applikationsserver selbst durchgeführt (hier: Windows Server 2012 R2). Der Server wird mit einer separaten Festplatte bzw. Partition ausgestattet (50GB reichen aus), die z.B. mit dem Laufwerkbuchstaben Q:\ bereitgestellt wird. Das gesamte Laufwerk wird unter dem Namen \\<Name des Servers>\QGIS freigegeben und mit entsprechenden Verzeichnis-/Freigabe-Berechtigungen versehen (z.B. Lesen-/Ausführen für Anwender, Vollzugriff für GIS-Administratoren).

  1. Erst-Installation der „OSGeo4W-Netzwerkinstallation (64bit)“ (→ Download osgeo4w-setup-x86_64.exe) nach Q:\OSGeo4W64\

    Hinweis: Der Vorteil bei Verwendung dieses Verzeichnisnamens besteht darin, dass die QGIS-Installation aufgrund der identischen Pfadangaben sowohl vom Applikationsserver als auch von den Clients verwendet werden kann.

  2. Kopieren / Austauschen folgender Dateien/Verzeichnisse aus diesem Zip-Archiv:2)
    • Den Inhalt von bin in das bin-Verzeichnis der QGIS-Installation kopieren (u.a. qgis-start.bat.orig, qgis-prepare.bat.orig, qgis.reg.tmpl.orig, minised.exe, msvcp100.dll, msvcr100.dll usw.). Bei den mit *.orig bezeichneten Dateien handelt es sich um die originalen Dateien aus Fererikssund.
    • Je nach Wunsch-Version den Inhalt von qgis-ltr, qgis-lr und/oder qgis-dev in das bin-Verzeichnis der QGIS-Installation kopieren (u.a. *-start.bat, *-start-prepare.bat, *-start-initial.bat usw.)
    • Das Verzeichnis „icons“ nach Q:\OSGeo4W64\ kopieren
    • Die Datei „BETA2007.sql“ nach Q:\OSGeo4W64\apps\qgis-ltr\resources kopieren

QGIS LTR (OSGeo4W64)

Hinweise: Die derzeit aktuelle LTR-Version stammt noch aus der QGIS 2-Generation. Daher weisen die für die Bereitstellung von QGIS erforderlichen Batch-Dateien einige Unterschiede gegenüber der QGIS 3 / QGIS DEV Version auf.
Alle nachfolgend genannten Batchdateien befinden sich im Zip-Archiv im Verzeichnis „qgis-ltr“!

Prepare-Phase (Teil 2, QGIS LTR)

  1. In der Datei „qgis.ltr.reg.tmpl“ wurde das Shell-Kommando in der letzten Zeile angepasst: „qgis-ltr-start.bat“
  2. Die aus der Installation stammende Datei bin\qgis-ltr.bat ist umzubenennen (z.B. qgis-ltr.bat.orig) .org soll „original“ bedeuten? → besser .orig ?Thomas 2018-11-12 13:58 → okay, Text und Archiv geändert, Burghardt 2018-11-13 08:47
  3. Die Datei bin\qgis-ltr-start-prepare.bat enthält folgende Anweisungen:
    qgis-ltr-start-prepare.bat
    @echo off
    call "%~dp0\o4w_env.bat"
    @echo off
    path %OSGEO4W_ROOT%\apps\qgis-ltr\bin;%PATH%
    set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis-ltr
    set GDAL_FILENAME_IS_UTF8=YES
    rem Set VSI cache to be used as buffer, see #6448
    set VSI_CACHE=TRUE
    set VSI_CACHE_SIZE=1000000
    set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis-ltr\qtplugins;%OSGEO4W_ROOT%\apps\qt4\plugins
    
    REM Benutzerverzeichnis vorgeben
    set "QGIS_UDIR=%USERPROFILE%\AppData\Roaming\QGIS\OSGeo4W\qgis-ltr"
    
    REM Modus setzen (RUN|) [leer lassen für Konfigurationsmodus (=Prepare-Phase); "RUN" für Nutzerbetrieb]
    set "QGIS_MODE="
    call "%OSGEO4W_ROOT%\bin\qgis-ltr-prepare.bat" %QGIS_MODE%
    
    REM QGIS mit Parameter starten
    start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qgis-ltr-bin.exe --configpath "%QGIS_UDIR%" %*

    Anmerkungen:

    • Die Variable „QGIS_MODE“ dient zur Unterscheidung zwischen der PREPARE- und der RUN-Phase.
    • Bleibt die Varibale leer, sorgt die aufgerufene qgis-ltr-prepare.bat dafür, das alle in dieser Phase vorgenommenen Anpassungen zunächst in einen Template-Ordner im Programme-Verzeichnis landen (z.B. „qgis_ltr_template“)
    • Ist die Variable mit dem Wert „RUN“ gefüllt, wird das o.g. Template-Verzeichnis in das zuvor definierte Benutzerverzeichnis des Anwenders („QGIS_UDIR“) kopiert, sofern es dort noch nicht existiert. In der RUN-Phase werden künftig alle vom Benutzer vorgenommenen Anpassungen dort abgespeichert.
    • Beim Start von QGIS wird das Benutzerverzeichnis „QGIS_UDIR“ über den Parameter „configpath“ definiert und für die aktive Sitzung verwendet.
  4. Die Datei qgis-ltr-prepare.bat musste gegenüber dem Original an folgenden Stellen angepasst werden:
    • Das Template-Verzeichnis wurde an mehreren Stellen nach „qgis_ltr_template“ umbenannt!
    • Der Pfad zur srs.db / BETA2007.sql musste kontrolliert und ggf. angepasst werden!
      Erläuterung: Beim Ausführen der SQL-Datei werden NTv2-Parameter in die QGIS-Datenbank „srs.db“ geschrieben, um Transformationen innerhalb Deutschlands mit hoher Genauigkeit durchführen zu können (z.B. von Gauß-Krüger nach UTM, vgl. auch Anleitung von Claas Leiner).

      Achtung: Beim Ausführen der SQL-Datei sind für den lokalen Benutzer auf dem Server Schreibrechte für die Datei „srs.db“ erforderlich! Andernfalls erscheint die Meldung: „Error: near line 1: attempt to write a readonly database“!

    • Der Startmenü-Eintrag für die „OSGeo4W Shell“ wurde hinzugefügt:
      if not exist "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\QGIS\OSGeo4W Shell" (
         nircmd shortcut """%OSGEO4W_ROOT%""\OSGeo4W.bat" "~$folder.programs$\QGIS" "OSGeo4W Shell" "" """%OSGEO4W_ROOT%""\OSGeo4W.ico" "" "" """\" ""
         )
    • Die Anweisungen zum Ausführen der Registry-Datei und zu den Dateiverknüpfungen wurden ausdokumentiert, da sie ohne Administrator-Rechte ohnehin nicht funktionieren!
  5. qgis-ltr-start-prepare.bat ausführen
  6. GUI-Anpassungen etc. pp. vornehmen. Dieser Vorgang kann ggf. mehrfach wiederholt werden.
  7. Nach Abschluss aller Anpassungen muss die Datei qgis-ltr-start-prepare.bat nach qgis-ltr-start.bat kopiert und dort die Variable „QGIS_MODE“ auf „RUN“ gestellt werden (set „QGIS_MODE=RUN“)!

Mit diesen Arbeiten ist die Prepare-Phase auf dem Applikationsserver abgeschlossen.

Hinweis: Möchte man die Prepare-Phase für Korrekturen an der Konfiguration etc. auf dem Applikationsserver wieder aufnehmen, so kann man jederzeit die qgis-ltr-start-prepare.bat ausführen.

Die im Folgenden beschriebenen Arbeitsschritte sind auf den Clients durchzuführen.

Initialize- und Run-Phase

Wie oben bereits angedeutet, gibt es in der von Frederikssund offerierten Variante der Datei „qgis-ltr-prepare.bat“ einige Befehle, die nur mit Adminrechten ausgeführt werden können. Hierzu gehören z.B. Änderungen der Registry für Dateiverknüpfungen (Doppelklick auf QGIS-Projektdatei startet QGIS, Icons für Stil-, Drucklayout-, Template-Dateien). Unter Umständen möchte man auch spezielle Schrift- oder Symbolfonts zur Nutzung unter QGIS auf den Clients installieren und registrieren. Ist dies der Fall, muss entgegen der Beschreibung eine Zwischenschritt durchgeführt werden, der als Initialisierungsphase bezeichnet werden kann.3) Dieser Zwischenschritt geht von folgenden Annahmen aus:

  1. Auf dem Client-PC wurde QGIS LTR noch nie installiert.
  2. QGIS LTR ist die Standard-Version in der betroffenen Organisation / auf dem Client.
  3. QGIS LTR soll von allen Anwendern des Clients genutzt werden

Mit diesen Annahmen kann man die Initialize-Phase über eine Batch-Datei abhandeln, die lediglich

  • die Startmenü-Einträge für alle lokalen Anwender im Verzeichnis „%ProgramData%\Microsoft\Windows\Start Menu\Programs\QGIS“ vornimmt,
  • das Desktop Icon für alle lokalen Anwender unter „%PUBLIC%\Desktop“ erstellt,
  • die Dateiverknüpfungen herstellt,
  • ggf. weitere Symbol-Fonts kopiert und registriert.

Diese Datei (z.B. qgis-ltr-initialize.bat) muss entweder über eine Softwareverteilung angestoßen oder händisch auf dem betroffenen Client ausgeführt werden.

Achtung: Normalerweise können Netzlaufwerke in einer mit Admin-Rechten gestarteten Eingabeaufforderung (cmd.exe) nicht angesprochen werden. Das gleiche gilt für mit Admin-Rechten ausgeführten Batch-Dateien aus dem Dateimanager heraus. Es gibt allerdings Abhilfe. Dazu muss man in der Registry unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System ein neues DWORD namens EnableLinkedConnections anlegen und ihm den Wert 1 zuweisen. Anschließend einmal ab- und wieder anmelden. Danach stehen auch Netzlaufwerke im Administrator-Kontext zur Verfügung.
Das in der Batch-Datei aufgerufene Programm „nircmd.exe“ ist ein externes Software-Produkt (Homepage). Es wird über das OSGeo4W-Setup ebenfalls im „bin“-Verzeichnis abgelegt. Da es sich nicht in der Path-Variable der Umgebungsvariablen befindet, muss man in der o.g. Batch-Datei in das Verzeichnis „Q:\OSGeo4W64\bin“ wechseln. Andernfalls findet der Kommandointerpreter das Programm nicht.

Die nachfolgenden Arbeitsschritte beziehen sich auf eine am Client manuell durchgeführte Intitialisierung.

  1. Auf dem Client das Server-Laufwerk mit dem Laufwerksbuchstaben „Q:\“ permanent anbinden.
  2. Einmalig die Datei „Q:\OSGeo4W64\bin\qgis-ltr-initialize.bat“ mit Administrator-Rechten starten. 4) Dadurch werden die o.g. vorbereitenden Einstellungen für die künftige Verwendung von QGIS durch den/die Anwender vorgenommen. Damit ist die Initialisierungsphase auch schon abgeschlossen.
  3. Der erste und künftige QGIS-Starts erfolgt/erfolgen dann über das Desktop-Icon durch den Anwender. Das Desktop-Icon verweist auf die normale „qgis-ltr-start.bat“, die für die RUN-Phase vorgesehen ist. Da das Benutzerverzeichnis bereits existiert, wird der entsprechende Teil in der „qgis-ltr-prepare.bat“ übersprungen und QGIS gestartet. Sollte das Benutzerverzeichnis versehentlich gelöscht oder umbenannt werden, wird es über die Abfrage in der „qgis-ltr-prepare.bat“ aus dem Template wiederhergestellt. Die zwischenzeitlich vom Benutzer vorgenommenen Anpassungen gehen dabei natürlich verloren.

Nach Abschluss der Arbeiten steht den Anwendern QGIS LTR über eine zentrale Installation auf einem Applikationsserver zur Verfügung.

QGIS 3 (OSGeo4W64)

Hinweis: Alle nachfolgend genannten Batchdateien befinden sich im Zip-Archiv im Verzeichnis „qgis-lr“!

Prepare-Phase (Teil 2, QGIS 3)

  1. In der Datei „qgis.reg.tmpl“ wurde das Shell-Kommando in der letzten Zeile angepasst: „qgis-start.bat“.
    Hinweis: Möchte man mehrere QGIS-Versionen parallel nebeneinander nutzen, muss man vorab entscheiden, mit welcher Version QGIS-Projekte (.qgs) per Doppelklick gestartet werden sollen! In diesem Fall sollte die Ausführung der Datei „qgis.reg“ sowie die „assoc“-Anweisungen für die Dateiverknüpfungen im Skript „qgis-initialize.bat“ ausdokumentiert werden!
  2. Datei bin\qgis.bat umbenennen (z.B. qgis.bat.orig)
  3. Die Datei bin\qgis-start-prepare.bat enthält folgende Anweisungen:
    @echo off
    call "%~dp0\o4w_env.bat"
    call qt5_env.bat
    call py3_env.bat
    @echo off
    path %OSGEO4W_ROOT%\apps\qgis\bin;%PATH%
    set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis
    set GDAL_FILENAME_IS_UTF8=YES
    rem Set VSI cache to be used as buffer, see #6448
    set VSI_CACHE=TRUE
    set VSI_CACHE_SIZE=1000000
    set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
    
    REM Benutzerverzeichnis vorgeben
    set "QGIS_UDIR=%USERPROFILE%\AppData\Roaming\QGIS\OSGeo4W\qgis-lr"
    
    REM Modus setzen (RUN|) [leer lassen für Konfigurationsmodus (= Prepare-Phase); "RUN" für Nutzerbetrieb]
    set "QGIS_MODE="
    call "%OSGEO4W_ROOT%\bin\qgis-prepare.bat" %QGIS_MODE%
    
    REM QGIS mit Parameter starten
    start "QGIS" /B "%OSGEO4W_ROOT%\bin\qgis-bin.exe" --profiles-path "%QGIS_UDIR%" %*

    Anmerkungen:

    • Die Variable „QGIS_MODE“ dient zur Unterscheidung zwischen der PREPARE- und der RUN-Phase.
    • Bleibt die Varibale leer, sorgt die aufgerufene qgis-prepare.bat dafür, dass alle in dieser Phase vorgenommenen Anpassungen zunächst in einen Template-Ordner im Programme-Verzeichnis landen (z.B. „qgis_template“)
    • Ist die Variable mit dem Wert „RUN“ gefüllt, wird das o.g. Template-Verzeichnis in das zuvor definierte Benutzerverzeichnis des Anwenders („QGIS_UDIR“) kopiert, sofern es dort noch nicht existiert. In der RUN-Phase werden künftig alle vom Benutzer vorgenommenen Anpassungen dort abgespeichert.
    • Beim Start von QGIS wird das Benutzerverzeichnis „QGIS_UDIR“ über den Parameter „profiles-path“ definiert und für die aktive Sitzung verwendet.

      Hinweis: Mit dem Kommando

      %OSGEO4W_ROOT%\qgis-bin.exe --help

      kann man sich die Startparameter von QGIS 3 anzeigen lassen. Es gibt weitere Parameter, mit denen man z.B. auch den Profilnamen vorgeben kann (- -profile <Name des Profils>). Das default-Profil wird allerdings auch ohne Angabe eines Startparameters standardmäßig verwendet. Es stellt sich ohnehin die Frage, ob man einen Profilnamen vorgeben sollte, da man mit einer solchen Maßnahme dem Anwender die Möglichkeit entzieht, eigene Profile anzulegen. Sobald man den Profilnamen nämlich in der „qgis-start.bat“ fest vorgibt, wird QGIS künftig immer mit diesem Profil gestartet! Der Anwender müsste schon die „qgis-start.bat“ auf dem Applikationsserver ändern! Und dass sollte über die Rechte-Vergabe der Freigabe tunlichst vermieden werden!

  4. Die Datei qgis-prepare.bat musste gegenüber dem Original an folgenden Stellen angepasst werden:
    • Das Template-Verzeichnis wurde an mehreren Stellen nach „qgis_template“ umbenannt!
    • Der Pfad zur srs.db / BETA2007.sql musste kontrolliert und ggf. angepasst werden!
      Erläuterung: Beim Ausführen der SQL-Datei werden NTv2-Parameter in die QGIS-Datenbank „srs.db“ geschrieben, um Transformationen innerhalb Deutschlands mit hoher Genauigkeit durchführen zu können (z.B. von Gauß-Krüger nach UTM, vgl. auch Anleitung von Claas Leiner).

      Achtung: Beim Ausführen der SQL-Datei sind für den lokalen Benutzer auf dem Server Schreibrechte für die Datei „srs.db“ erforderlich! Andernfalls erscheint die Meldung: „Error: near line 1: attempt to write a readonly database“!

    • Der Startmenü-Eintrag für die „OSGeo4W Shell“ wurde hinzugefügt:
      if not exist "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\QGIS\OSGeo4W Shell" (
         nircmd shortcut """%OSGEO4W_ROOT%""\OSGeo4W.bat" "~$folder.programs$\QGIS" "OSGeo4W Shell" "" """%OSGEO4W_ROOT%""\OSGeo4W.ico" "" "" """\" ""
         )
    • Die Anweisungen zum Ausführen der Registry-Datei und zu den Dateiverknüpfungen wurden ausdokumentiert, da sie ohne Administrator-Rechte ohnehin nicht funktionieren!
  5. qgis-start-prepare.bat ausführen
  6. GUI-Anpassungen etc. pp. vornehmen. Dieser Vorgang kann ggf. mehrfach wiederholt werden.
  7. Nach Abschluss aller Anpassungen muss die Datei qgis-start-prepare.bat nach qgis-start.bat kopiert und dort die Variable „QGIS_MODE“ auf „RUN“ gestellt werden (set „QGIS_MODE=RUN“)!

Mit diesen Arbeiten ist die Prepare-Phase auf dem Applikationsserver abgeschlossen.

Hinweis: Möchte man die Prepare-Phase für Korrekturen an der Konfiguration etc. auf dem Applikationsserver wieder aufnehmen, so kann man jederzeit die qgis-start-prepare.bat ausführen.

Die im Folgenden beschriebenen Arbeitsschritte sind auf den Clients durchzuführen.

Initialize- und RUN-Phase

Wie oben bereits angedeutet, gibt es in der von Frederikssund offerierten Variante der Datei „qgis-prepare.bat“ einige Befehle, die nur mit Adminrechten ausgeführt werden können. Hierzu gehören z.B. Änderungen der Registry für Dateiverknüpfungen (Doppelklick auf QGIS-Projektdatei startet QGIS, Icons für Stil-, Drucklayout-, Template-Dateien). Unter Umständen möchte man auch spezielle Schrift- oder Symbolfonts zur Nutzung unter QGIS auf den Clients installieren und registrieren. Ist dies der Fall, muss entgegen der Beschreibung eine Zwischenschritt durchgeführt werden, der als Initialisierungsphase bezeichnet werden kann 5) Dieser Zwischenschritt geht von folgenden Annahmen aus:

  1. Auf dem Client-PC wurde QGIS 3 noch nie installiert.
  2. QGIS 3 ist die Standard-Version in der betroffenen Organisation / auf dem Client.
  3. QGIS 3 soll von allen Anwendern des Clients genutzt werden

Mit diesen Annahmen kann man die Initialize-Phase über eine Batch-Datei abhandeln, die lediglich

  • die Startmenü-Einträge für alle lokalen Anwender im Verzeichnis „%ProgramData%\Microsoft\Windows\Start Menu\Programs\QGIS“ vornimmt,
  • das Desktop Icon für alle lokalen Anwender unter „%PUBLIC%\Desktop“ erstellt,
  • die Dateiverknüpfungen herstellt,
  • ggf. weitere Symbol-Fonts kopiert und registriert.

Diese Datei (Bezeichnung z.B. qgis-initialize.bat) muss entweder über eine Softwareverteilung angestoßen oder händisch auf dem betroffenen Client ausgeführt werden.

Achtung: Normalerweise können Netzlaufwerke in einer mit Admin-Rechten gestarteten Eingabeaufforderung (cmd.exe) nicht angesprochen werden. Das gleiche gilt für mit Admin-Rechten ausgeführten Batch-Dateien aus dem Dateimanager heraus. Es gibt allerdings Abhilfe. Dazu muss man in der Registry unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System ein neues DWORD namens EnableLinkedConnections anlegen und ihm den Wert 1 zuweisen. Anschließend einmal ab- und wieder anmelden. Danach stehen auch Netzlaufwerke im Administrator-Kontext zur Verfügung.
Das in der Batch-Datei aufgerufene Programm „nircmd.exe“ ist ein externes Software-Produkt (Homepage). Es wird über das OSGeo4W-Setup ebenfalls im „bin“-Verzeichnis abgelegt. Da es sich nicht in der Path-Variable der Umgebungsvariablen befindet, muss man in der o.g. Batch-Datei in das Verzeichnis „Q:\OSGeo4W64\bin“ wechseln. Andernfalls findet der Kommandointerpreter das Programm nicht.

Die nachfolgenden Arbeitsschritte beziehen sich auf eine am Client manuell durchgeführte Intitialisierung.

  1. Auf dem Client das Server-Laufwerk mit dem Laufwerksbuchstaben „Q:\“ permanent anbinden.
  2. Einmalig die Datei „Q:\OSGeo4W64\bin\qgis-initialize.bat“ mit Administrator-Rechten starten. Dadurch werden die o.g. vorbereitenden Einstellungen für die künftige Verwendung von QGIS durch den/die Anwender vorgenommen. Damit ist die Initialisierungsphase auch schon abgeschlossen.6)
  3. Der erste und künftige QGIS-Starts erfolgt/erfolgen dann über das Desktop-Icon durch den Anwender. Das Desktop-Icon verweist auf die normale „qgis-start.bat“, die für die RUN-Phase vorgesehen ist. Beim Erst-Start werden die benutzerspezifischen Einstellungen vorgenommen. Sollte das Benutzerverzeichnis versehentlich gelöscht oder umbenannt werden, wird es über die Abfrage in der „qgis-prepare.bat“ aus dem Template wiederhergestellt. Die zwischenzeitlich vom Benutzer vorgenommenen Anpassungen gehen dabei natürlich verloren.

Nach Abschluss der Arbeiten steht dem/den Anwendern QGIS 3 über eine zentrale Installation auf einem Applikationsserver zur Verfügung.

QGIS DEV (OSGeo4W64)

Hinweis: Alle nachfolgend genannten Batchdateien befinden sich im Zip-Archiv im Verzeichnis „qgis-dev“!

Prepare-Phase (Teil 2, QGIS DEV)

  1. In der Datei „qgis.dev.reg.tmpl“ wurde das Shell-Kommando in der letzten Zeile angepasst: „qgis-dev-start.bat“.
    Hinweis: Möchte man mehrere QGIS-Versionen parallel nebeneinander nutzen, muss man vorab entscheiden, mit welcher Version QGIS-Projekte (.qgs) per Doppelklick gestartet werden sollen! In diesem Fall sollte die Ausführung der Datei „qgis.dev.reg“ sowie die „assoc“-Anweisungen für die Dateiverknüpfungenim Skript „qgis-dev-initialize.bat“ ausdokumentiert werden!
  2. Datei bin\qgis-dev-g7.bat umbenennen (z.B. qgis-dev-g7.bat.orig)

    Achtung: Der Name der Batch-Datei ändert sich mit jeder Aktualisierung der GRASS-Version!

  3. Die Datei bin\qgis-dev-start-prepare.bat enthält folgende Anweisungen:
    @echo off
    call "%~dp0\o4w_env.bat"
    call "%OSGEO4W_ROOT%\apps\grass\grass-7.4.2\etc\env.bat"
    call qt5_env.bat
    call py3_env.bat
    @echo off
    path %OSGEO4W_ROOT%\apps\qgis-dev\bin;%OSGEO4W_ROOT%\apps\grass\grass-7.4.2\lib;%OSGEO4W_ROOT%\apps\grass\grass-7.4.2\bin;%PATH%
    set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis
    set GDAL_FILENAME_IS_UTF8=YES
    rem Set VSI cache to be used as buffer, see #6448
    set VSI_CACHE=TRUE
    set VSI_CACHE_SIZE=1000000
    set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis-dev\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
    
    REM Benutzerverzeichnis vorgeben
    set "QGIS_UDIR=%USERPROFILE%\AppData\Roaming\QGIS\OSGeo4W\qgis-dev"
    
    REM Modus setzen (RUN|) [leer lassen für Konfigurationsmodus (= Prepare-Phase); "RUN" für Nutzerbetrieb]
    set "QGIS_MODE="
    call "%OSGEO4W_ROOT%\bin\qgis-dev-prepare.bat" %QGIS_MODE%
    
    REM QGIS mit Parameter starten
    start "QGIS" /B "%OSGEO4W_ROOT%\bin\qgis-dev-bin-g7.exe" --profiles-path "%QGIS_UDIR%" %*

    Anmerkungen:

    • Die Variable „QGIS_MODE“ dient zur Unterscheidung zwischen der PREPARE- und der RUN-Phase.
    • Bleibt die Varibale leer, sorgt die aufgerufene qgis-dev-prepare.bat dafür, das alle in dieser Phase vorgenommenen Anpassungen zunächst in einen Template-Ordner im Programme-Verzeichnis landen (z.B. „qgis_dev_template“)
    • Ist die Variable mit dem Wert „RUN“ gefüllt, wird das o.g. Template-Verzeichnis in das zuvor definierte Benutzerverzeichnis des Anwenders („QGIS_UDIR“) kopiert, sofern es dort noch nicht existiert. In der RUN-Phase werden alle vom Benutzer vorgenommenen Anpassungen künftig dort abgespeichert.
    • Beim Start von QGIS wird das Benutzerverzeichnis „QGIS_UDIR“ über den Parameter „profiles-path“ definiert und für die aktive Sitzung verwendet.

      Hinweise:
      Achtung: Der Name der exe-Datei ändert sich mit Aktualisierung der GRASS-Version!
      Mit dem Kommando

      %OSGEO4W_ROOT%\qgis-dev-bin-g7.exe --help

      kann man sich die Startparameter von QGIS DEV anzeigen lassen. Es gibt weitere Parameter, mit denen man z.B. auch den Profilnamen vorgeben kann (- -profile <Name des Profils>). Das default-Profil wird allerdings auch ohne Angabe eines Startparameters standardmäßig verwendet. Es stellt sich ohnehin die Frage, ob man ein Profilnamen vorgeben sollte, da man mit einer solchen Maßnahme dem Anwender die Möglichkeit entzieht, eigene Profile anzulegen. Sobald man den Profilnamen nämlich in der „qgis-dev-start.bat“ fest vorgibt, wird QGIS künftig immer mit diesem Profil gestartet! Der Anwender müsste schon die „qgis-dev-start.bat“ auf dem Applikationsserver ändern! Und dass sollte über die Rechte-Vergabe der Freigabe tunlichst vermieden werden!

  4. Die Datei qgis-dev-prepare.bat musste gegenüber dem Original an folgenden Stellen angepasst werden:
    • Das Template-Verzeichnis wurde an mehreren Stellen nach „qgis_dev_template“ umbenannt!
    • Der Pfad zur srs.db / BETA2007.sql musste kontrolliert und ggf. angepasst werden!
      Erläuterung: Beim Ausführen der SQL-Datei werden NTv2-Parameter in die QGIS-Datenbank srs.db geschrieben, um Transformationen innerhalb Deutschlands mit hoher Genauigkeit durchführen zu können (z.B. von Gauß-Krüger nach UTM, vgl. auch Anleitung von Claas Leiner).

      Achtung: Beim Ausführen der SQL-Datei sind für den lokalen Benutzer auf dem Server Schreibrechte für die Datei „srs.db“ erforderlich! Andernfalls erscheint die Meldung: „Error: near line 1: attempt to write a readonly database“!

    • Der Startmenü-Eintrag für die „OSGeo4W Shell“ wurde hinzugefügt:
      if not exist "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\QGIS\OSGeo4W Shell" (
         nircmd shortcut """%OSGEO4W_ROOT%""\OSGeo4W.bat" "~$folder.programs$\QGIS" "OSGeo4W Shell" "" """%OSGEO4W_ROOT%""\OSGeo4W.ico" "" "" """\" ""
         )
    • Die Anweisungen zum Ausführen der Registry-Datei und zu den Dateiverknüpfungen wurden ausdokumentiert, da sie ohne Administrator-Rechte ohnehin nicht funktionieren!
  5. qgis-dev-start-prepare.bat ausführen
  6. GUI-Anpassungen etc. pp. vornehmen. Dieser Vorgang kann ggf. mehrfach wiederholt werden.
  7. Nach Abschluss aller Anpassungen muss die Datei qgis-dev-start-prepare.bat nach qgis-dev-start.bat kopiert und dort die Variable „QGIS_MODE“ auf „RUN“ gestellt werden (set „QGIS_MODE=RUN“)!

Mit diesen Arbeiten ist die Prepare-Phase auf dem Applikationsserver abgeschlossen.

Hinweis: Möchte man die Prepare-Phase für Korrekturen an der Konfiguration etc. auf dem Applikationsserver wieder aufnehmen, so kann man jederzeit die qgis-dev-start-prepare.bat ausführen.

Die im Folgenden beschriebenen Arbeitsschritte sind auf den Clients durchzuführen.

Initialize- und RUN-Phase

Wie oben bereits angedeutet, gibt es in der von Frederikssund offerierten Variante der Datei „qgis-dev-prepare.bat“ einige Befehle, die nur mit Adminrechten ausgeführt werden können. Hierzu gehören z.B. Änderungen der Registry für Dateiverknüpfungen (Doppelklick auf QGIS-Projektdatei startet QGIS, Icons für Stil-, Drucklayout-, Template-Dateien). Unter Umständen möchte man auch spezielle Schrift- oder Symbolfonts zur Nutzung unter QGIS auf den Clients installieren und registrieren. Ist dies der Fall, muss entgegen der Beschreibung eine Zwischenschritt durchgeführt werden, der als Initialisierungsphase bezeichnet werden kann.7) Dieser Zwischenschritt geht von folgenden Annahmen aus:

  1. Auf dem Client-PC wurde QGIS DEV noch nie installiert.
  2. QGIS DEV ist die Standard-Version auf dem Client.
  3. QGIS DEV soll von allen Anwendern des Clients genutzt werden

Mit diesen Annahmen kann man die Initialize-Phase über eine Batch-Datei abhandeln, die lediglich

  • die Startmenü-Einträge für alle lokalen Anwender im Verzeichnis „%ProgramData%\Microsoft\Windows\Start Menu\Programs\QGIS“ vornimmt,
  • das Desktop Icon für alle lokalen Anwender unter „%PUBLIC%\Desktop“ erstellt,
  • die Dateiverknüpfungen herstellt,
  • ggf. weitere Symbol-Fonts kopiert und registriert.

Diese Datei (Bezeichnung z.B. qgis-dev-initialize.bat) muss entweder über eine Softwareverteilung angestoßen oder händisch auf dem betroffenen Client ausgeführt werden.

Achtung: Normalerweise können Netzlaufwerke in einer mit Admin-Rechten gestarteten Eingabeaufforderung (cmd.exe) nicht angesprochen werden. Das gleiche gilt für mit Admin-Rechten ausgeführten Batch-Dateien aus dem Dateimanager heraus. Es gibt allerdings Abhilfe. Dazu muss man in der Registry unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System ein neues DWORD namens EnableLinkedConnections anlegen und ihm den Wert 1 zuweisen. Anschließend einmal ab- und wieder anmelden. Danach stehen die Netzlaufwerke im Administrator-Kontext zur Verfügung.
Das in der Batch-Datei aufgerufene Programm „nircmd.exe“ ist ein externes Software-Produkt (Homepage). Es wird über das OSGeo4W-Setup ebenfalls im „bin“-Verzeichnis abgelegt. Da es sich nicht in der Path-Variable der Umgebungsvariablen befindet, muss man in der o.g. Batch-Datei in das Verzeichnis „Q:\OSGeo4W64\bin“ wechseln. Andernfalls findet der Kommandointerpreter das Programm nicht.

Die nachfolgenden Arbeitsschritte beziehen sich auf eine am Client manuell durchgeführte Intitialisierung.

  1. Auf dem Client das Server-Laufwerk mit dem Laufwerksbuchstaben „Q:\“ permanent anbinden.
  2. Einmalig die Datei „Q:\OSGeo4W64\bin\qgis-dev-initialize.bat“ mit Administrator-Rechten starten. Dadurch werden die o.g. vorbereitenden Einstellungen für die künftige Verwendung von QGIS durch den/die Anwender vorgenommen. Damit ist die Initialisierungsphase auch schon abgeschlossen.8)
  3. Der erste und künftige QGIS-Starts erfolgt/erfolgen dann über das Desktop-Icon durch den Anwender. Das Desktop-Icon verweist auf die normale „qgis-dev-start.bat“, die für die RUN-Phase vorgesehen ist. Beim Erst-Start werden die benutzerspezifischen Einstellungen vorgenommen. Sollte das Benutzerverzeichnis versehentlich gelöscht oder umbenannt werden, wird es über die Abfrage in der „qgis-dev-prepare.bat“ aus dem Template wiederhergestellt. Die zwischenzeitlich vom Benutzer vorgenommenen Anpassungen gehen dabei natürlich verloren.

Nach Abschluss der Arbeiten steht dem/den Anwendern QGIS DEV über eine zentrale Installation auf einem Applikationsserver zur Verfügung.

  • Die GRASS-Erweiterung wird im Verzeichnis “…\apps\grass\grass-7.4.2„ gespeichert und somit hart verdrahtet. Beim nächsten Update von GRASS wird das Verzeichnis wahrscheinlich “…\apps\grass\grass-7.4.3„ heißen, das alte Verzeichnis wird gelöscht/umbenannt. Nun ist es so, dass dieser Pfad auch in den Benutzerdaten auf den Clients unter “%userprofile%\…\profiles\default\QGIS\QGIS3.ini„ abgelegt wird. Diese Datei wird für die Optionen der Processing-Toolbox benötigt und beim QGIS-Start ausgelesen. Dort findet man unter „Datenanbieter → GRASS“ zwei Variablen („GRASS7-Verzeichnis“, „Ort der GRASS-Doku“). Stimmen hier die Pfade nicht, gibt es bei der Übernahme der Einstellungen für das Processing eine Fehlermeldung:
    Falscher Parameterwert „GRASS-Verzeichnis“: Specified path does not exist: Q:\OSGeo4W64\apps\grass\grass-7.4.1“.
    So eine Fehlermeldung sollte nach einem Update beim Anwender nicht erscheinen. Andererseits kann/möchte man nicht nach jedem (GRASS-) Update zu den QGIS-Anwendern „hingehen“, um die beiden Einträge in der QGIS2.ini/QGIS3.ini anzupassen.
    Es steht die Frage im Raum, wie man Pfad-Problematik im Zusammenhang mit GRASS bei einem Update zentral lösen kann.

    Erledigt: Jürgen Fischer hat das Problem in der aktuellen QGIS Version 3.4.2 dankenswerterweise gelöst. Die Variable „GRASS7-Verzeichnis“ wurde entfernt. Das GRASS-Verzeichnis wird nun automatisch bestimmt. Die Variable „Ort der GRASS-Doku“ verweist nun auf das Online-Manual.
1)
Fassung 1:
  • Initialize-Phase, in der während des ersten Starts auf dem Client das Benutzerverzeichnis, die Desktop-Icons, die Startmenü-Einträge und Dateiverknüpfungen sowie ggf. weitere organisationsspezifische Einstellungen (z.B. Einrichtung zusätzlicher Schrift- / Symbolfonts etc.) angelegt und vorgenommen werden. Die Initialisierungsphase kennzeichnet sich dadurch, dass die Start-Batch-Datei mit Administator-Rechten ausgeführt werden muss. Dies kann in größeren Organisation auch durch eine Softwareverteilung erfolgen.
    Achtung: Bei parallelem Betrieb mehrerer QGIS-Versionen ist die Initialisierungsphase nur einmal erforderlich! Für das Anlegen von Dateiverknüpfungen oder die Bereitstellung zusätzlicher Schrift-/Symbolfonts werden Änderungen in der Registry vorgenommen.
  • Run-Phase, in der ggf. das Benutzerverzeichnis neu angelegt wird und ansonsten der „normale“ Start von QGIS erfolgt.
Die OSGeo4W-Variante erlaubt die parallele Installation von QGIS LTR, QGIS 3 und QGIS DEV. Im Detail unterscheidet sich die Bereitstellung der drei Varianten in Inhalt und Bezeichnung der Batch-Dateien. Sie werden der Übersichtlichkeit wegen im Folgenden getrennt aufgeführt.
3)
Fassung 1: und während des ersten QGIS-Start auf den Clients durchgeführt werden muss. Dazu empfiehlt es sich, ebenfalls eine Variante der beiden Batchdateien „qgis-ltr-start.bat“ und „qgis-ltr-prepare.bat“ z.B. unter den Namen „qgis-ltr-start-initialize.bat“ und „qgis-ltr-prepare-initialize.bat“ anzulegen. In Ersterer muss der Name zur Prepare-Datei korrigiert werden. In Letzterer müssen die in der Prepare-Phase auskommentierten Zeilen einkommentiert werden.
4)
Fassung 1: Während der Ausführung werden das benutzerspezifische QGIS-Verzeichnis lokal unter “%userprofile%\AppData\Roaming\QGIS\OSGeo4W\qgis-ltr„, das QGIS Desktop-Icon, die Startmenü-Einträge usw. angelegt. Nach dem Erststart von QGIS
5)
alte Fassung: Wie oben bereits angedeutet, gibt es in der von Frederikssund offerierten Variante der Datei „qgis-prepare.bat“ einige Befehle, die nur mit Adminrechten ausgeführt werden können. Hierzu gehören z.B. Änderungen der Registry für Dateiverknüpfungen (Doppelklick auf QGIS-Projektdatei startet QGIS, Icons für Stil-, Drucklayout-, Template-Dateien). Unter Umständen möchte man auch spezielle Schrift- oder Symbolfonts zur Nutzung unter QGIS auf den Clients installieren und registrieren. Ist dies der Fall, muss entgegen der Beschreibung eine Zwischenschritt durchgeführt werden, der als Initialisierungsphase bezeichnet werden kann und während des ersten QGIS-Start auf den Clients durchgeführt werden muss. Dazu empfiehlt es sich, ebenfalls eine Variante der beiden Batchdateien „qgis-start.bat“ und „qgis-prepare.bat“ z.B. unter den Namen „qgis-start-initialize.bat“ und „qgis-prepare-initialize.bat“ anzulegen. In Ersterer muss der Name zur Prepare-Datei korrigiert werden. In Letzterer müssen die in der Prepare-Phase auskommentierten Zeilen einkommentiert werden.
Das einmalige Ausführen der Datei „qgis-start-initialize.bat“ kann entweder über eine Softwareverteilung angestoßen werden oder händisch auf dem Rechner ausgeführt werden.
6)
alte Fassung:Einmalig die Datei „Q:\OSGeo4W64\bin\qgis-start-initialize.bat“ mit Administrator-Rechten starten. Während der Ausführung werden das benutzerspezifische QGIS-Verzeichnis lokal unter “%userprofile%\AppData\Roaming\QGIS\OSGeo4W\qgis-lr„, das Desktop-Icon, die Startmenü-Einträge usw. angelegt. Nach dem Erststart von QGIS ist die Initialisierungsphase abgeschlossen.
7)
Alte Fassung: Wie oben bereits angedeutet, gibt es in der von Frederikssund offerierten Variante der Datei „qgis-dev-prepare.bat“ einige Befehle, die nur mit Adminrechten ausgeführt werden können. Hierzu gehören z.B. Änderungen der Registry für Dateiverknüpfungen (Doppelklick auf QGIS-Projektdatei startet QGIS, Icons für Stil-, Drucklayout-, Template-Dateien). Unter Umständen möchte man auch spezielle Schrift- oder Symbolfonts zur Nutzung unter QGIS auf den Clients installieren und registrieren. Ist dies der Fall, muss entgegen der Beschreibung eine Zwischenschritt durchgeführt werden, der als Initialisierungsphase bezeichnet werden kann und während des ersten QGIS-Start auf den Clients durchgeführt werden muss. Dazu empfiehlt es sich, ebenfalls eine Variante der beiden Batchdateien „qgis-dev-start.bat“ und „qgis-dev-prepare.bat“ z.B. unter den Namen „qgis-dev-start-initialize.bat“ und „qgis-dev-prepare-initialize.bat“ anzulegen. In Ersterer muss der Name zur Prepare-Datei korrigiert werden. In Letzterer müssen die in der Prepare-Phase auskommentierten Zeilen einkommentiert werden.
Das einmalige Ausführen der Datei „qgis-dev-start-initialize.bat“ kann entweder über eine Softwareverteilung angestoßen werden oder händisch auf dem Rechner ausgeführt werden.
8)
Alte Fassung: Einmalig die Datei „Q:\OSGeo4W64\bin\qgis-dev-start-initialize.bat“ mit Administrator-Rechten starten. Während der Ausführung werden das benutzerspezifische QGIS-Verzeichnis lokal unter “%userprofile%\AppData\Roaming\QGIS\OSGeo4W\qgis-dev„, das Desktop-Icon, die Startmenü-Einträge usw. angelegt. Nach dem Erststart von QGIS ist die Initialisierungsphase abgeschlossen.