Zentrale Netzwerk-Installation für Windows

Häufige Release-Wechsel von QGIS lassen vor allem in größeren Organisationen mit zahlreichen QGIS-Installationen schnell den Ruf nach einer zentralen Netzwerk-Installation aufkommen, die eine Auslieferung der Software auf Windows-Clients ermöglicht. QGIS bietet diese Option von Haus aus nicht.

Es gibt aber die Möglichkeit, auf einem Windows-PC eine Standardinstallation von QGIS-Desktop vorzunehmen und den Installationsordner zentral im Netzwerk abzulegen. Mit einigen wenigen Anpassungen kann man von da aus

  1. den Installationsordner entweder schlicht auf einen Client-PC kopieren,
  2. aus dem Installationsordner ggf. mit weiteren Anpassungen ein neues Setup generieren, dass über eine Softwareverteilung auf die Clients ausgeliefert wird
  3. oder QGIS gar über eine Desktop-Verknüpfung direkt von diesem Ort aus starten.

Die Varianten 1 und 2 funktionieren aus eigener Erfahrung des Autors erstaunlich gut und zuverlässig. Persönliche Einstellungen der Oberfläche (Werkzeugkästen, Übersicht der kürzlich verwendeten Projekte etc.) bleiben nach dem ersten Start von QGIS erhalten.
Dreh- und Angelpunkt einer zentralen Installation sind die QGIS-Startparameter „configpath“ und „optionpath“. Bei einer Standardinstallation legt QGIS beim ersten Start den Ordner „.qgis2“ unter „C:\Users\<Name des Benutzers>“ an. Weitere Einstellungen werden in der Registry unter „HKEY_CURRENT_USER\Software\QGIS2“ abgelegt. Hier werden die persönlichen Einstellungen des jeweiligen Anwenders abgelegt. Mit dem Startparameter „configpath“ kann man nun das Verzeichnis für den .qis2-Ordner neu festlegen, mit dem Parameter „optionpath“ definiert man das Verzeichnis zum Speichern einer ini-Datei, in der fortan die Registry-Einträge abgelegt werden.
Die nachfolgenden Ausführungen basieren im wesentlichen auf den Artikeln von Bo Victor Thomsen, Kommune Frederikssund, Dänemark:

Die Variante 3 wurde vom Autor noch nicht getestet. Im Folgenden werden daher die Varianten 1 und 2 einer zentralen Netzwerk-Installation für die QGIS LTR-Version (QGIS 2.x) beispielhaft genauer beschrieben. Die Einrichtung gliedert sich in zwei Aufgabenbereiche. Während der Prepare-Phase muss zunächst eine herkömmliche QGIS-Installation durchgeführt werden, die im Anschluss angepasst und schließlich auf ein Netzlaufwerk kopiert wird. Im zweiten Schritt muss diese Kopie entweder direkt auf die Clients kopiert oder über die Erstellung eines Setups per Softwareverteilung „installiert“ werden. Dort sind ebenfalls einige begleitende Maßnahmen vorzunehmen.

1. Prepare-Phase (Netzwerk-Installationvorlage erstellen, QGIS 2.x)

Wichtige Hinweise: Grundsätzlich sollten die Installationen für die Vorbereitungsphase auf den Betriebssystemen durchgeführt werden, auf denen QGIS später auch laufen muss (Windows 7 32bit, Windows 7 64bit). Dafür bieten sich ggf. virtuelle Maschinen an. Umfangreiche Tests haben ergeben, dass sich eine Installation z.B. auf einem Windows Server Betriebssystem nicht eignet, da es immer wieder Probleme mit der deutschen Benutzeroberfläche gegeben hat. Die Schaltflächen der Dialogfenster werden nicht durchgängig in Deutsch beschriftet. Führt man die Vorbereitungsphase jedoch auf den jeweiligen Zielsystemen (Windows 7 32bit, Windows 7 64bit) durch, gibt es hinterher auf den Clients keine derartigen Probleme.
Hält man sich an der Vorgabe der Anleitung von Frederikssund und installiert die QGIS-Vorlage nicht im Programme-Verzeichnis, gibt es später ebenfalls Probleme bei Verwendung der deutschen Oberfläche. Auch in diesem Fall werden in einigen Dialogen die Dialog-Buttons („Ok“, „Abbrechen“ etc.) nicht auf Deutsch beschriftet.
Außerdem sollte man das Userverzeichnis „…\.qgis_template“ nach „…\qgis_template“ umbenennen. Mit führendem „.“ (Punkt) im Dateinamen kommt Windows nicht so gut zurecht :-).

  1. Die unter dieser Adresse angebotenen Dateien herunterladen und in einem Ordner der Wahl abspeichern
  2. Auf einem beliebigen Windows-PC die aktuelle eigenständige QGIS LTR-Version (nur QGIS 2.18.x) über die Setup-Datei in herkömmlicher Weise installieren. 1) Als Installationsverzeichnis wird „C:\Program Files\qgis-ltr“ vorgeschlagen.
    Erläuterung: Bei einer Standard-Installation gibt die Setup-Routine von QGIS Verzeichnisnamen der Art „…\QGIS Las“, „…\QGIS 2.14“ vor. Die Bezeichnungen beziehen sich auf ein konkretes Major-Release und führen bei künftigen Updates zu Verwirrungen, so dass eine „Verallgemeinerung“ des Verzeichnisnamens für den QGIS-Installationsordner sinnvoll erscheint.
  3. Kopie der Datei „C:\Program Files\qgis-ltr\bin\qgis-ltr.bat“ erstellen, diese nach „qgis-start.bat“ umbenennen und die letzte Zeile wie folgt anpassen:
    REM Original command
    REM start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qgis-ltr-bin.exe %*
    
    REM changed Command for network-installation
    call "%OSGEO4W_ROOT%\bin\qgis-prepare.bat" 
    start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qgis-ltr-bin.exe --configpath "%QGIS_UDIR%" %*
  4. „qgis-ltr.bat“ nach „qgis-ltr.bat.org“ umbenennen (kann später gelöscht werden)
  5. Die unter [1] heruntergeladenen Dateien „qgis-prepare.bat“, „qgis.reg.tmpl“ und „minised.exe“ nach „C:\Program Files\qgis-ltr\bin“ kopieren
  6. In der Datei „qgis.reg.tmpl“ das Shell-Kommando in der letzten Zeile nach von „qgis.bat“ nach „qgis-start.bat“ ändern.
  7. Datei „qgis-prepare.bat“ wie folgt anpassen (Pfade, Bezeichnungen etc. gegebenenfalls an die eigenen Bedürfnisse anpassen):
    • QGIS_UDIR=%USERPROFILE%\AppData\Roaming\qgis-ltr
    • QGIS_TEXT=QGIS LTR
    • „.qgis_template“ nach „qgis_template“ ändern (s.o.)
    • Für den Eintrag in das „Start → Programme“-Menü den Eintrag nircmd shortcut … „~$folder.programs$\QGIS“ … ändern und - falls gewünscht - für die OSGeo4W Shell nachtragen:
      nircmd shortcut """%OSGEO4W_ROOT%""\OSGeo4W.bat" "%ProgramData%\Microsoft\Windows\Start Menu\Programs\QGIS" "OSGeo4W Shell" "" """%OSGEO4W_ROOT%""\OSGeo4W.ico" "" "" """\" ""
  8. Pfad „C:\Program Files\qgis-ltr\apps\msys“ erstellen (s. Punkt 9f)
  9. Datei „qgis_start.bat“ ausschließlich mit Admin-Rechten ausführen! Im QGIS Programm-Ordner wird ein neues Verzeichnis namens „qgis_template“ angelegt. Hier werden während der Prepare-Phase nun sämtliche Konfigurationen abgespeichert, die als Vorlage für das persönliche Verzeichnis des späteren Anwenders dient.
  10. Einstellungen vornehmen, ggf. mehrfach wiederholen
    1. „Einstellungen → Optionen“ anpassen:

      Hinweis: Startet man QGIS in der Prepare-Phase mit Admin-Rechten, werden die Netzwerk-Laufwerke nicht angezeigt. Bei Eingabe von Verzeichnispfaden muss man UNC-Pfade eingeben!

      • „Allgemein“, beispielsweise → Vorlagenverzeichnis einstellen, Option „QGIS-Version beim Start überprüfen“ deaktivieren
      • „System“, beispielsweise → SVG-Pfade einstellen
      • „Datenquellen“, beispielsweise → Unter „Datenquellenbehandlung“ die Option „Shapedatei-Kodierungsangabe ignorieren“ deaktivieren (Häkchen entfernen). Dadurch wird beim Laden einer Shape-Datei die cpg-Datei berücksichtigt und die Umlaute korrekt dargestellt.
      • „Darstellung“, beispielsweise → Option „Layer mit vielen CPU-Kernen parallel zeichnen“ aktivieren
      • „Kartenwerkzeuge“, beispielsweise → „Vordefinierte Maßstäbe“ → vorhandene Liste löschen und über „Aus Datei importieren“ neue/erweiterte Liste einlesen
      • „Zusammenstellung“, beispielsweise → Vorgabeschriftart einstellen, Pfad für Druckvorlagen vorgeben
      • „KBS“, beispielsweise → Neue Projekte immer mit EPSG:25832 beginnen, neue Layer immer im EPSG:25832
      • „Netzwerk“, beispielsweise → „Proxy für Webzugriff benutzen → DefaultProxy“ einstellen
    2. ggf. Aktualisierung der Erweiterungen, falls noch nicht passiert, beispielsweise → Einbinden eines lokalen Repositories für eigene Plugin-Entwicklungen
    3. Installation gewünschter Erweiterungen, beispielsweise → „Instant Print“, „QuickMapService“ und „Digitizing Tools“
    4. Aktivierung der Erweiterungen (unter „installiert“), den Rest deaktivieren, beispielsweise:
      • DB Manager
      • GDAL-Georeferenzierung
      • GdalTools
      • Geometrieprüfung
      • MetaSearch Catalogue Client
      • Processing
      • Topologie-Prüfung
    5. Bedienfelder und Werkzeugkästen anpassen

      Hinweis: Die „Web-Werkzeugleiste“ enthält nach Deaktivierung einiger Erweiterungen keine Schaltflächen mehr. Sie ist dann nur noch als vertikale Punktleiste sichtbar und kann daher ausgeschaltet werden.

    6. Einstellungen der Verarbeitungsoptionen überprüfen
      • Achtung: Überprüfen, ob Fehlermeldung zu fehlenden Verzeichnissen erscheinen: So muss bei QGIS 2.18.x ggf. der Pfad „C:\Program Files\qgis-ltr\apps\msys“ händisch erstellt werden, damit keine Fehlermeldung erfolgt. Er wird (noch) für das Grass 6.4.3 Plugin benötigt.
        Erläuterung: Bei der „Prepare“-Phase kann es nach der Standard-Installation zu Problemen mit dem Processing kommen. Eine Anpassung der Optionen scheitert ggf. an Fehlermeldungen: „Wrong value for parameter '…'. Specified path does not exist …“. Hier können unterschiedliche Verzeichnisse fehlen oder falsch bezeichnet sein (z.B. „msys“, „grass-7.2.2“). Bei Auftreten dieses Fehlers reicht es aus, den fehlenden Pfad im Verzeichnis „%OSGEO4W_ROOT%\apps“ einzurichten. Das Verzeichnis kann ruhig leer sein. Anschließend startet man QGIS erneut, stellt die Optionen wie gewünscht ein und bestätigt die Änderungen mit OK. Dieses Mal wird keine Fehlermeldung angezeigt (vgl. auch hier).
      • Achtung: In den „processing options“ werden die Pfade für die Provider zum Teil unterschiedlich gesetzt: mal erscheint der volle Verzeichnisname ein anderes Mal wird die DOS-Namenskonvention verwendet (z.B. „C:\PROGRA~1\qgis-ltr\apps\grass\grass-7.2.2“ vs. „C:\Program Files\qgis-ltr\apps\grass\grass-7.2.2“). Das führt zu unvollständigen Ersetzungen während der ersten RUN-Phase. Vor Veröffentlichung daher unbedingt die Pfade in der Datei „…\qgis_template\QGIS\QGIS.ini“ überprüfen!
      • Im Reiter „Allgemein“ die Option „Behalte Dialog nach Abschluss des Algorithmus offen“ aktivieren, die Option „Tooltip anzeigen, wenn es abgeschaltete Anbieter gibt“ deaktivieren
    7. ggf. muss in den Projekteigenschaften unter „Allgemein → Koordinatenanzeige → Koordinatenanzeige in“ die Option „Karteneinheiten (Meter)“ eingestellt werden. In älteren Projekten kann dort noch „Dezimal Grad“ stehen.
    8. ggf. PostGIS-Layer für die vorhandene Datenbank(en) anlegen:
      |PostGIS-Verbindung einrichten
  11. Für die QGIS-Installation auf den Clients müssen einige weitere Vorbereitungen erfolgen. Die Batch-Datei mit Anweisungen zu den Dateiverknüpfungen, Desktop-Symbolen etc. pp. muss vorm bzw. beim ersten Start von QGIS mit Admin-Rechten ausgeführt werden, damit die Änderungen auch in der Registry übernommen werden. Für die Variante 2 (Setup per Softwareverteilung) empfiehlt sich daher, direkt nach der QGIS-Installation eine entsprechende Batch-Datei auszuführen, da die Installation ohnehin mit Admin-Rechten durchgeführt wird. Als Grundlage für diese Batchdatei kann man die „qgis-prepare.bat“ verwenden und beispielsweise folgende Änderungen vornehmen:
    • Datei nach „qgis-postinstall.bat“ kopieren
    • ggf. Registry-Dateien für zusätzliche Schriftarten nach „C:\Program Files\qgis-ltr\bin“ kopieren
    • Übernahme der ersten Zeilen aus der qgis-start.bat zum Setzen der Pfade
    • nicht benötigte Zeilen entfernen
    • Für das Desktop-Icon sowie die Einträge im Programme-Verzeichnis sollten die „Öffentlichen Ordner“ verwendet werden, damit unabhängig vom jeweiligen Benutzer, auf QGIS zugegriffen werden kann. Per Default greift die „qgis-prepare.bat“ von Frederikssund nur auf Verzeichnisse des angemeldeten Benutzers zu. Darüber hinaus ist im „Programme“-Verzeichnis der Eintrag für die OSGeo4W Shell nachzutragen (GDAL-Befehle aus der Komandozeile ausführen). Eine gute Übersicht über „offizielle“ Abkürzungen für die benötigten Verzeichnisse gibt es auf dieser Microsoft-Seite Common folder variables. Daraus ergeben sich folgende Änderungen in der „qgis-postinstall.bat“:
      REM Desktop-Icon erstellen 
      REM nircmd shortcut """%OSGEO4W_ROOT%""\bin\qgis-start.bat" "~$folder.desktop$" "%QGIS_TEXT%" "" """%OSGEO4W_ROOT%""\icons\QGIS.ico" "0" "min" """%OSGEO4W_ROOT%""\bin" ""
      nircmd shortcut """%OSGEO4W_ROOT%""\bin\qgis-start.bat" "%PUBLIC%\Desktop" "%QGIS_TEXT%" "" """%OSGEO4W_ROOT%""\icons\QGIS.ico" "0" "min" """%OSGEO4W_ROOT%""\bin" ""
      
      REM Programm-Einträge erstellen 
      REM nircmd shortcut """%OSGEO4W_ROOT%""\bin\qgis-start.bat" "~$folder.programs$\QGIS" "%QGIS_TEXT%" "" """%OSGEO4W_ROOT%""\icons\QGIS.ico" "0" "min" """%OSGEO4W_ROOT%""\bin" ""
      REM nircmd shortcut """%OSGEO4W_ROOT%""\OSGeo4W.bat" "~$folder.programs$\QGIS" "OSGeo4W Shell" "" """%OSGEO4W_ROOT%""\OSGeo4W.ico" "" "" """\" ""
      nircmd shortcut """%OSGEO4W_ROOT%""\bin\qgis-start.bat" "%ProgramData%\Microsoft\Windows\Start Menu\Programs\QGIS" "%QGIS_TEXT%" "" """%OSGEO4W_ROOT%""\icons\QGIS.ico" "0" "min" """%OSGEO4W_ROOT%""\bin" ""
      nircmd shortcut """%OSGEO4W_ROOT%""\OSGeo4W.bat" "%ProgramData%\Microsoft\Windows\Start Menu\Programs\QGIS" "OSGeo4W Shell" "" """%OSGEO4W_ROOT%""\OSGeo4W.ico" "" "" """\" ""

      Die Änderungen müssen für alle Betriebssystem-Varianten vorgenommen werden!

    • ggf. Symbol-Fonts kopieren und registrieren
    • Microsoft Visual C++ Redistributable: Bei der „normalen“ Installation von QGIS 2.18.x werden die entsprechenden Pakete für VC++ 2008 SP1, VC++ 2013 und VC++ 2015 hinzugefügt. Die orignalen Pakete werden nach der Installation normalerweise gelöscht. Die Original-Quellen liegen hier (X86) bzw. hier (X86_64). Sie müssen wieder in den Ordner „C:\Program Files\qgis-ltr\bin“ kopiert werden!

      Hinweis: Dort liegen spezielle Versionen:
      64bit: Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.17 (ServicePack 1 von VC++ 2008), Microsoft Visual C++ 2013 x64 Additional Runtime - 12.0.21005 (VC++ 2013) sowie Microsoft Visual C++ 2015 x64 Additional Runtime - 14.0.23026 (VC++ 2015).
      32bit: Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17 (ServicePack 1 von VC++ 2008), Microsoft Visual C++ 2013 x86 Additional Runtime - 12.0.21005 (VC++ 2013) sowie Microsoft Visual C++ 2015 x86 Additional Runtime - 14.0.23918 (VC++ 2015).Bitte nur diese Versionen für das QGIS-Installationpaket verwenden!

  12. Sind alle Einstellungen vorgenommen, wird der komplette Ordner „C:\Program Files\qgis-ltr“ getrennt nach Versionen (Betriebssystemvarianten) auf entsprechende Netzlaufwerke kopiert.
  13. In der Datei „qgis-start.bat“ muss folgende Zeile um die Angabe „RUN“ ergänzt werden:
    call "%OSGEO4W_ROOT%\bin\qgis-prepare.bat"
    call "%OSGEO4W_ROOT%\bin\qgis-prepare.bat" RUN

Die erste Phase der Vorbereitung ist damit abgeschlossen.

2a. Variante 1: Installationsordner kopieren

In komplexen Umgebungen wird man QGIS über ein entsprechendes Softwareverteilungs-Tool „ausrollen“ wollen (z.B. Microsoft SCCM, Matrix 42 Empirum etc.). Hierzu muss man die nachfolgenden Arbeitsschritte in der entsprechenden Management Konsole einarbeiten und ggf. anpassen (siehe unten [2b.]). Für kleinere Umgebungen reicht es aus, dass der Administrator QGIS „von Hand“ ausrollt:

  1. Überprüfen, ob die benötigten Microsoft-Runtime auf dem Client-PC installiert sind: je nach QGIS-Version werden Microsoft Visual C++ 2008 Redistributable, Microsoft Visual C++ 2010 Redistributable, Microsoft Visual C++ 2012 Redistributable, Microsoft Visual C++ 2013 Redistributable oder Microsoft Visual C++ 2015 Redistributable benötigt (s.o.). Die Setup-Dateien für die erforderlichen Runtimes befinden sich wie oben beschrieben, im QGIS bin-Verzeichnis und können von dort aus ausgeführt werden.
    Hinweis: Sollten die Runtimes nicht vorhanden sein, bricht QGIS den Start mit einer entsprechenden Fehlermeldung ab.
  2. Komplettes Installationsverzeichnis vom Netzlaufwerk nach „C:\Program Files\qgis-ltr“ kopieren
  3. Beim ersten Start von QGIS auf dem Client die Datei „qgis-start.bat“ mit Admin-Rechten starten, damit das Desktop-Icon, die Startmenü-Einträge die Dateiverknüpfungen etc. pp. und der Benutzerordner ordnungsgemäß eingerichtet werden.
  4. Anschließend QGIS schließen und mit normalen User-Rechten über das Desktop-Icon starten.
  5. Einstellungen / Funktionsfähigkeit prüfen
2b. QGIS-Setup.exe erstellen

Für die Variante 2 (QGIS Setup für Softwareverteilung) geht es nun darum, ein Installationspaket mit allen erforderlichen Komponenten zu schnüren und als „QGIS-Setup.exe“ abzulegen. Die nachfolgenden Ausführungen verstehen sich als beispielhaftes Vorgehen, dass beim Autor zum Erfolg geführt hat.
Für die Erstellung eines Installationspakets hat sich das Programm „Inno Setup“ bewährt (Homepage). Inno Setup bringt einen eigenen Script-Editor mit (Inno Script Studio), mit dem man das Skript zur Erstellung der Setup-Datei zusammenstellen und editieren kann. Das Skript unterstützt Coding in Pascal. Eine gute Übersicht über die Funktionalitäten erhält man in der Hilfe. Das Programm wird auf einem beliebigen Rechner installiert. Für die Erstellung der Skripte ist folgendes Vorgehen erforderlich (Ersteinrichtung 64bit-Variante):

  1. Inno Script Studio bringt einen Assistenten mit, der bei der Neuanlage eines Skripts behilflich ist. Hier werden zunächst wesentliche Angaben vorgenommen:
    • Nach dem Start fragt das Programm, ob man ein neues Skript mit dem Assistenten erstellen möchte:
      Neues Skript erstellen
      Skript Assistent
    • Allgemeine Informationen zur „QGIS LTR“-Installation:
      QGIS-Informationen
    • Lokales Ziel-Verzeichnis auf dem Client-PC eintragen. Option zur „Änderung des Ziel-Verzeichnisses durch den Anwender“ deaktivieren:
      Ziel-Verzeichnis
    • Option „Keine ausführbare Datei“ aktivieren, QGIS Quell-Ordner (= Installationsordner aus der Prepare-Phase) hinzufügen:
      QGIS-Quell-Ordner
    • Verzeichnisnamen für das Startmenü eintragen. Alle anderen Optionen deaktivieren:
      Startmenü-Eintrag
    • Angaben zur Lizenz etc. leer lassen:
      Lizenzen
    • Setup-Sprache auswählen:
      Setup-Sprache
    • Angaben zu den Compiler-Einstellungen (Ausgabeverzeichnis, Setup-Icon etc.):
      Compiler-Einstellungen
    • Preprozessors benutzen:
      Preprozessor benutzen
    • Skript fertigstellen:
      Skript fertigstellen
  2. Danach öffnet sich der Skript-Editor. Hier überprüft man zunächst die Angaben und nimmt ggf. Korrekturen vor.

    Achtung: Im Script muss der Parameter „DefaultDirName“ im Abschnitt „Setup“ auf „C:\Program Files\qgis_ltr(32bit + 64bit) gesetzt sein!

  3. Im Abschnitt [Setup] sind folgende Zeilen zu ergänzen:
    AppComments=mailto:<Email-Adresse>
    AppContact=<Organisation - Abteilung>
    AppSupportPhone=<Telefonnummer>
    AlwaysRestart=yes
    PrivilegesRequired=admin

    Wenn im weiteren Verlauf Schriftarten hinzugefügt und registriert werden, ist ein Neustart erforderlich (AlwaysRestart=yes). Der Anwender wird jedoch gefragt, ob er diesen Neustart unmittelbar nach der Installation vornehmen oder auf einen späteren Zeitpunkt verschieben möchte!

  4. Neuen Abschnitt namens [Run] anlegen. Hier müssen Einträge hinzugefügt werden, die nach der Kopie des QGIS-Verzeichnisses (Abschnitt [Files]) ausgeführt werden sollen (Beispiel 64bit-Variante):
    Filename: "{app}\bin\qgis-postinstall.bat"; Description: "Benutzerverzeichnis erstellen, Dateiverknüpfungen setzen"; Flags: shellexec waituntilterminated
    Filename: "{app}\bin\vcredist-2008-sp1-x64.exe"; Parameters: "/qb"; Check: IsWin64 and not VC2008installed
    Filename: "{app}\bin\vcredist-2013-x64.exe"; Parameters: "/install /passive"; Check: IsWin64 and not VC2013installed

    Die qgis-postinstall.bat stellt in der Registry die Dateiverknüpfungen her, kopiert ggf. die gewünschten Schriftarten, erstellt die Startmenü-Eintrage, platziert das Desktop-Icon und kopiert die Konfigurationsdatei in das dafür vorgesehene Benutzerverzeichnis (s. o.). Danach werden die erforderlichen Visual C++-Bibliotheken installiert, so sie nicht bereits installiert sind. Hier unterscheiden sich die Aufrufe je nach Betriebssystemvariante.
    Hinweis: Die „Parameters“-Angaben dienen zur „Silent installation“ ohne Nachfragen an den Anwender.

  5. Schließlich muss der Abschnitt [Code] angelegt werden. Für die 64bit-Variante muss hier zunächst überprüft werden, welche Betriebssystem-Version vorliegt (32bit oder 64bit) und ob die VC++-Bibliotheken bereits installiert sind (Beispiel für Windows 7 Professional, QGIS 2.18.16, 64bit-Version):
    [Code]
     // Überprüfen, welche Betriebssystem-Version installiert ist!
     // Unterlässt man dies, wird auf 64bit-Systemen im falschen Registry-Zweig gesucht
     function GetHKLM: Integer;
     begin
      if IsWin64 then
        Result := HKLM64
      else
        Result := HKLM32;
     end; 
    
     function VC2008installed: Boolean;
     // Function for Inno Setup Compiler
     // Returns True if same or later Microsoft Visual C++ 2008 SP1 Redistributable is installed, otherwise False.
     var
      //dn: String;
      version: Cardinal;
      major: Cardinal;
      minor: Cardinal;
      key: String;
      begin
      Result := False;
      key := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{8220EEFE-38CD-377E-8595-13398D740ACE}';
      //if RegQueryStringValue(HKEY_LOCAL_MACHINE, key, 'DisplayName', dn) then begin
      if RegQueryDWordValue(GetHKLM, key, 'Version', version) then begin
        if RegQueryDWordValue(GetHKLM, key, 'VersionMajor', major) then begin
          if RegQueryDWordValue(GetHKLM, key, 'VersionMinor', minor) then begin
                //Log('VC 2008 Redist DisplayName is: ' + dn );
                Log('VC 2008 Redist Version is: ' + IntToStr(version) + ' Minor is: ' + IntToStr(major) + ' Bld is: ' + IntToStr(minor));
                // Version info was found. Return true if later or equal to our 14.0.24212.00 redistributable
                // Note brackets required because of weird operator precendence
                //Result := (dn = 'Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.17')
                Result := (version >= 151025673) and (major >= 9) and (minor >= 0)
          end;
        end;
      end;
     end;
     
     function VC2013installed: Boolean;
     // Function for Inno Setup Compiler
     // Returns True if same or later Microsoft Visual C++ 2013 Redistributable is installed, otherwise False.
     var
      major: Cardinal;
      minor: Cardinal;
      bld: Cardinal;
      rbld: Cardinal;
      key: String;
      begin
      Result := False;
      key := 'SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x64';
      if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'Major', major) then begin
        if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'Minor', minor) then begin
          if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'Bld', bld) then begin
            if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'RBld', rbld) then begin
                Log('VC 2013 Redist Major is: ' + IntToStr(major) + ' Minor is: ' + IntToStr(minor) + ' Bld is: ' + IntToStr(bld) + ' Rbld is: ' + IntToStr(rbld));
                // Version info was found. Return true if later or equal to our 14.0.24212.00 redistributable
                // Note brackets required because of weird operator precendence
                Result := (major >= 12) and (minor >= 0) and (bld >= 21005) and (rbld >= 0)
            end;
          end;
        end;
      end;
     end;
      
     function VC2015installed: Boolean;
     // Function for Inno Setup Compiler
     // Returns True if same or later Microsoft Visual C++ 2015 Redistributable is installed, otherwise False.
     var
      major: Cardinal;
      minor: Cardinal;
      bld: Cardinal;
      rbld: Cardinal;
      key: String;
      begin
      Result := False;
      key := 'SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64';
      if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'Major', major) then begin
        if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'Minor', minor) then begin
          if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'Bld', bld) then begin
            if RegQueryDWordValue(HKEY_LOCAL_MACHINE, key, 'RBld', rbld) then begin
                Log('VC 2015 Redist Major is: ' + IntToStr(major) + ' Minor is: ' + IntToStr(minor) + ' Bld is: ' + IntToStr(bld) + ' Rbld is: ' + IntToStr(rbld));
                // Version info was found. Return true if later or equal to our 14.0.24212.00 redistributable
                // Note brackets required because of weird operator precendence
                Result := (major >= 14) and (minor >= 0) and (bld >= 23026) and (rbld >= 0)
            end;
          end;
        end;
      end;
     end;
  6. Abschließend wird das Skript abgespeichert und kann ausgeführt werden. Die Erstellung der Dateien „QGIS-Setup_32bit.exe“ bzw. „QGIS-Setup_64bit.exe“ nimmt ca. 15 Minuten in Anspruch.

weitere Hinweise:

  • Um die Liste der zuletzt geöffneten Projekte zu löschen, muss man in der Datei „QGIS2.ini“ im Abschnitt „[UI]“ alle Einträge mit „recentProjects\“ löschen und die Änderungen abspeichern.
  • In Ergänzung zu in der o.g. Anleitung erwähnten „qgis-ltr.bat“ kann man ggf. auch die Datei „qgis_grass7.bat“ anpassen. Beim Starten von QGIS gibt es nach Aktivierung der „Meldungen“ im Reiter „Erweiterungen“ Fehlermeldungen beim Laden der entsprechenden DLL's von Grass7 / Globe. Im Regelfall können diese ignoriert werden. Die entsprechenden Funktionen stehen im Menü „Verarbeitung“ in der „Werkzeugkiste“ trotzdem zur Verfügung. Startet man die angepasste Batch-Datei für Grass 7, erscheinen keine Fehlermeldungen mehr.
  • nircmd shortcut - Das Kommando wird für die Startmenü-Einträge benötigt (QGIS-LTR, OSGeo4W Shell).
  • Zum Erstellen einer exe-Datei mit „Inno Setup“ gibt es hier weitere Hinweise.
  • Die Integration der Visual C++-Bibliotheken in die Setup-Datei ist ein wenig tricky. Hinweise zur Überprüfung und Installation der Microsoft Visual C++ Redistributable Packages gibt es hier und insbesondere hier.
    Probleme mit Visual C++ 2008 → siehe hier und hier
    Programmierbeispiele → hier.
    Auf 64bit-Systemen muss man eine Abfrage erstellen, welche Betriebssystemversion auf dem Client verwendet wird. Erst wenn „HKLM64“ verwendet wird, nimmt Inno Setup auch den richtigen Pfad in der Registry. Andernfalls wird im Pfad für 32bit-Systeme geschaut (siehe hier.
3. Installation auf den Clients

Die Installation auf den Clients kann zum einen händisch durch Ausführen der „QGIS-Setup_<Variante>.exe“ mit Admin-Rechten erfolgen. Nach dem Starten der exe-Datei erscheint eine Abfrage, ob man mit der Installation beginnen will:
QGIS-Setup Abfrage
Bestätigt man die Abfrage mit „Installieren“ läuft die Einrichtung von QGIS ohne weitere Nachfrage durch. Zum Schluss wird gegebenenfalls nach einem Neustart gefragt:
Neustart-Abfrage
Dieser wird durch die Installation von Schrift-Fonts erforderlich.
In der Regel wird die Installation jedoch über eine Softwareverteilung erfolgen. Hierbei ist darauf zu achten, dass man dem Setup zwei Parameter mitgibt, um die o.g. Benutzerdialoge zu verhindern:

QGIS-Setup_<Variante>.exe /silent /norestart

Damit verläuft die Installation ohne Nachfragen an den Benutzer. Allerdings stehen die Schrift-Fonts erst nach einem Neustart zur Verfügung. Ein vollständige Übersicht über die zur Verfügung stehenden Parameter beim Start der Setupdatei bekommt man nach Eingabe von „QGIS-Setup_<Variante>.exe /?“. Durch Angabe von /LOG wird eine Log-Datei in das Temp-Verzeichnis des Benutzer geschrieben („C:\users\<Benutzername>\AppData\Local\Temp“). Der eindeutige Dateiname besteht aus dem Datum und die Uhrzeit. Ältere Log-Dateien werden nicht überschrieben. Durch Angabe von /LOG=„<Verzeichnis>\<Dateiname>“ kann man das Verzeichnis und den Namen der LOG-Datei vorgeben. Bei Weglassen des Verzeichnisnamens schreibt Inno Setup die Datei in das Verzeichnis, in dem die Setupdatei gestartet wurde. Vorhandene Dateien werden überschrieben!

Hinweis: Die hier dokumentierte Verfahrensbeschreibung beschränkt sich auf den Arbeitsbereich des GIS-Administrators und der Vorbereitung der QGIS-Installation. Welche darüber hinausgehenden Anforderungen von Seiten der Software für die Softwareverteilung bestehen, hängt stark von dem eingesetzten Programm ab und muss im Einzelnen mit den EDV-Administratoren abgesprochen werden.

Fassung 1 (veraltet, QGIS 2.x)

Netzwerk-Installationsvorlage erstellen

  1. Auf einem beliebigen Windows-PC wird die aktuelle QGIS LTR-Version über die Setup-Datei in herkömmlicher Weise installiert. 2) Als Installationsverzeichnis wird „C:\Program Files\qgis-ltr“ vorgegeben.
    Erläuterung: Bei einer Standard-Installation gibt die Setup-Routine von QGIS Verzeichnisnamen der Art „…\QGIS Las“, „…\QGIS 2.14“ vor. Die Bezeichnungen beziehen sich auf ein konkretes Major-Release und führen bei künftigen Updates zu Verwirrungen, so dass eine „Verallgemeinerung“ des Verzeichnisnamens für den QGIS-Installationsordner sinnvoll erscheint.
  2. Mit dem ersten Start der Anwendung werden im User-Verzeichnis des Anwenders der Ordner „C:\Users\<Name des Anwenders>\.qgis2“ sowie ein Registry-Eintrag unter „HKEY_CURRENT_USER\Software\QGIS“ angelegt. Letzterer enthält wesentliche Einstellungen zum Aussehen, zu den Datenbank-Verbindungen, Projektvorlagen, Maßstabslisten etc. pp. von QGIS.
  3. Nach dem ersten Start von QGIS schließt man das Programm direkt wieder und erstellt im Installationsverzeichnis den Unterordner „qgisini“.
  4. In diesen Ordner verschiebt man das o.g. Verzeichnis „C:\Users\<Name des Anwenders>\.qgis2“ und benennt ihn z.B. nach „config“ um.
  5. Im Verzeichnis „qgisini“ erstellt man einen zweiten Ordner namens „options“.
  6. Nun bedient man sich der oben erwähnten Startparameter „configpath“ und „optionspath“ und muss dazu die Batch-Datei zum Starten von QGIS folgendermaßen anpassen („C:\Program Files\qgis-ltr\bin\qgis-ltr.bat“):
    ...
    
    REM Überprüfung, ob der qgisini-ltr-Ordner im Benutzer-Verzeichnis existiert, ggf. Kopie erstellen
    if not exist "%APPDATA%"\qgisini-ltr xcopy "%OSGEO4W_ROOT%"\qgisini "%APPDATA%"\qgisini-ltr /e /i >nul
    REM start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qgis-ltr-bin.exe %*
    start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qgis-ltr-bin.exe --configpath "%APPDATA%"\qgisini-ltr\config --optionspath "%APPDATA%"\qgisini-ltr\options %*
  7. Anschließend QGIS starten. Dabei wird im %APPDATA%-Verzeichnis des Anwenders der Ordner „qgisini-ltr“ mit den Unterordnern „config“ und „options“ angelegt. Letzterer enthält eine „QGIS/QGIS2.ini“-Datei, die die Angaben enthält, die normalerweise in der Registry abgespeichert werden.
  8. Danach nimmt man die gewünschten Einstellungen vor, beispielsweise:
    1. ggf. Aktualisierung der vorhandenen Erweiterungen, Einbinden eines Erweiterungsrepositoriums im lokalen Netzwerk
    2. Installation und Aktivierung der gewünschten Erweiterungen (z.B. DB Manager, GdalTools, GDAL-Georeferenzierung, Processing, Instant Print, QuickMapServices etc.)
    3. Anpassung der Bedienfelder und Werkzeugkästen
      Hinweis: An dieser Stelle hat man die Möglichkeit, das Erscheinungsbild der QGIS-Oberfläche zu beeinflussen. So kann man die Oberfläche nach Bedarf deutlich verschlanken, in dem man einige Werkzeugkästen ausblendet, Funktionen deaktiviert etc. pp.
    4. „Einstellungen → Optionen“ anpassen, beispielsweise:
      • „Allgemein“ → zentrales „Vorlagenverzeichnis“ einstellen, Option „QGIS-Version beim Start überprüfen“ deaktivieren
      • „System“ → „SVG-Pfade“: zentrales Netzwerkverzeichnis hinzufügen
      • „Datenquellen“ → Unter „Datenquellenbehandlung“ die Option „Shapedatei-Kodierungsangabe ignorieren“ deaktivieren (Häkchen entfernen). Dadurch wird beim Laden einer Shape-Datei die cpg-Datei berücksichtigt und die Umlaute korrekt dargestellt.
      • „Kartenwerkzeuge“ → „Vordefinierte Maßstäbe“ → Liste löschen und über „Aus Datei importieren“ eine zentral abgelegte XML-Datei „Maßstäbe.xml“ neu einlesen
      • „Zusammenstellung“ → Vorgabeschriftart auf die gewünschte Schriftart einstellen, zentrales Netzwerkverzeichnis für Druckvorlagen vorgeben
      • „KBS“ → ggf. Vorgabe für „Projekte immer mit diesem KBS beginnen“ einstellen, ggf. für neue Layer Vorgabe „Voreingestelltes KBS verwenden“ einstellen
      • „Netzwerk“: „Proxy für Webzugriff benutzen → DefaultProxy“ einstellen3)
  9. ggf. muss in den Projekteigenschaften unter „Allgemein → Koordinatenanzeige → Koordinatenanzeige in“ die Option „Karteneinheiten (Meter)“ eingestellt werden. In älteren Projekten kann dort noch „Dezimal Grad“ stehen.
  10. QGIS schließen und Unterverzeichnisse im %APPDATA%-Verzeichnis in das Installationsverzeichnis nach „C:\Program Files\qgis-ltr\qgisiniverschieben.
  11. %APPDATA%-Verzeichnis löschen und QGIS erneut starten. Dabei wird der zuvor gelöschte Ordner neu angelegt. Überprüfen, ob die gewünschten Einstellungen übernommen wurden. Ggfs Korrekturen vornehmen und den Vorgang wiederholen
  12. Vor dem nächsten Schritt ist zu kontrollieren, ob im Verzeichnis „%OSGEO4W_ROOT%„\apps\qgis-ltr\icons die Icons für QGIS-Dateien vorhanden sind (Projektdatei, Druckvorlage, Layerdatei, Stildatei), damit später auf den Client-PC's die Verknüpfungen zu den Dateitypen angelegt werden können.
  13. Bei erfolgreicher Überprüfung muss der komplette Installationsordner “C:\Program Files\qgis-ltr“ auf ein Netzlaufwerk kopiert werden. Anschließend kann man mit der Clientinstallation fortfahren (vgl. unten).
  14. Sind nach einer Aktualisierung der QGIS-Version Ergänzungen oder Änderungen an den Voreinstellungen erforderlich (z.B. ein neues Erweiterungsrepository, weitere / andere Plugins beim Start einbinden etc. pp.), müssen einige der o.g. Arbeitsschritte wiederholt werden:
    • Das Verzeichnis „C:\%userprofile%\AppData\Roaming\qgisini-ltr“ löschen oder umbenennen.4)
    • QGIS starten.5)
    • Erforderliche Änderungen / Ergänzungen vornehmen.
    • Das gesamte Verzeichnis „C:\%userprofile%\AppData\Roaming\qgisini-ltr“ nach „%OSGEO4W_ROOT%„\qgisini kopieren.6)
    • Danach stehen die Änderungen zur Verfügung.
    • Zur Kontrolle erneut das Verzeichnis “C:\%userprofile%\AppData\Roaming\qgisini-ltr“ löschen.
    • Beim anschließenden Neustart von QGIS wird es wieder erstellt und man kann überprüfen, ob die Änderungen zur Verfügung stehen.
    • Den unter [13] genannten Installationsordner aktualisieren

QGIS-Installation auf dem Client

In komplexen Umgebungen wird man QGIS über ein entsprechendes Softwareverteilungs-Tool „ausrollen“ wollen (z.B. Microsoft SCCM, Matrix 42 Empirum etc.). Hierzu muss man die nachfolgenden Arbeitsschritte in der entsprechenden Management Konsole einarbeiten und ggf. anpassen. Für kleinere Umgebungen reicht es aus, dass der Administrator QGIS „von Hand“ ausrollt:

  1. Überprüfen, ob die benötigten Microsoft-Runtime auf dem Client-PC installiert sind: je nach QGIS-Version werden Microsoft Visual C++ 2008 Redistributable, Microsoft Visual C++ 2010 Redistributable, Microsoft Visual C++ 2012 Redistributable, Microsoft Visual C++ 2013 Redistributable oder Microsoft Visual C++ 2015 Redistributable benötigt.
    Die für QGIS benötigten aktuellen Runtimes kann man auf dieser OSGeo4W-Seite herunterladen.
    Hinweis: Sollten die Runtimes nicht vorhanden sein, bricht QGIS den Start mit einer entsprechenden Fehlermeldung ab. In diesem Fall müssen die erforderlichen Runtimes nachinstalliert werden!
  2. Komplettes Installationsverzeichnis vom Netzlaufwerk nach „C:\Program Files\qgis-ltr“ kopieren
  3. Verknüpfung zur Batchdatei „C:\Program Files\qgis-ltr\bin\qgis-ltr.bat“ zum Starten von QGIS auf dem Desktop ablegen und mit dem QGIS-Icon versehen („C:\Program Files\qgis-ltr\icons\QGIS.ico“). Verknüpfung anpassen:
    "C:\Program Files\qgis-ltr\bin\nircmd.exe" exec hide "C:\Program Files\qgis-ltr\bin\qgis-ltr.bat"

    Dadurch verhindert man, dass beim Starten der Anwendung kurzzeitig eine DOS-Box „aufflackert“.

  4. QGIS-Dateien für Projekte, Layer, Stile und Druckvorlagen mit QGIS-Anwendung verknüpfen.
    Hinweis: Hierbei helfen die beiden DOS-Kommandos „assoc“ und „ftype“. Mit Ihnen kann man Dateiverknüpfungen erstellen, ändern und sich anzeigen lassen. Ein „assoc“ auf die QGIS-Dateiendungen ergibt z.B.:
    .qgs=QGIS Project
    .qlr=QGIS Layer Definition
    .qml=QGIS Layer Settings
    .qpt=QGIS Composer Template

    Mit „ftype“ kann man das Standardprogramm zum Öffnen der QGIS Projekte festlegen:

    ftype QGIS Project="C:\Program Files\qgis-ltr\bin\qgis-ltr.bat" "%1"

    Mit diesen Informationen lässt sich eine Batch-Datei zusammenstellen, die die benötigten Verknüpfungen auf dem Client nachbaut.

  5. QGIS starten und Einstellungen / Funktionsfähigkeit prüfen
1) , 2)
Es wird davon ausgegangen, dass nur noch 64bit-Versionen zum Einsatz kommen. Andernfalls muss man zwischen 32bit- und 64bit-Versionen und z.B. bei Verzeichnisnamen ein „.32bit“ bzw. „.64bit“ anhängen.
3)
Unter Windows werden in diesem Fall die Einstellungen verwendet, die unter „Systemsteuerung → Internetoptionen → Reiter 'Verbindungen' → Schaltfläche 'LAN-Einstellungen' → Proxy-Server“ vorgenommen wurden
4)
Gegebenenfalls muss man vorher die laufende QGIS-Anwendung schließen.
5)
Das soeben gelöschte Verzeichnis wird neu erstellt
6)
Bei Bedarf kann man das alte Verzeichnis vorher umbenennen!