Allgemein_Header_6

 

Erstellen der App, Deployment und Hinweise

Die Sourcen für PV-Anzeige sind auf Github zu finden. Am Einfachsten verwendet man “GitHub Desktop” um das Repository komplett auf den eigenen Rechner zu ziehen.

Um das Programm selbst zu erstellen ist die Installation des Qt Creator notwendig. Für privaten, nichtkommerziellen Einsatz des Tools die Variante ”Downloads for open source users” auswählen, sich registrieren und den Download starten, idealer Weise den “Qt Online Installer” wählen.

Im Installer muss die Version gewählt werden. PV-Anzeige kann mit Qt 5 und Qt 6 erstellt werden, wobei für Qt 6 in der “main.qml” die GraphicalEffects Library durch eine Compatibility Lib ersetzt werden muss, da die Farbspiele in der Haus Komponente und da insbesondere das Clipping an den runden Ecken, von der Qt 6 Version der GraphicalEffects nicht mehr unterstützt werden.

    import QtQuick 2.12
    import QtQuick.Window 2.12
    import QtGraphicalEffects 1.0

wird zu

    import QtQuick 2.12
    import QtQuick.Window 2.12
    import Qt5Compat.QtGraphicalEffects

Hinweis
PV-Anzeige läuft erstellt mit Qt 6 nicht stabil, siehe hier. Daher besser mit Qt 5 arbeiten .


Der Download aller Komponenten von Qt dauert eine geraume Weile, nicht ungeduldig werden. Durch Doppelklick auf die Qt-Projektdatei “PV-Anzeige.pro” öffnet sich das Projekt in Qt Creator zur Bearbeitung.

Qt Creator bietet mehrere Möglichkeiten, die Sourcen in ausführbaren Code umzuwandeln, ich habe mich für “MinGW 64-bit” entschieden.

QT Creator Compiler

Hat man alles übersetzt, muss noch das sogenannte “Deployment” durchgeführt werden, um das fertige Programm lauffähig auf einen anderen Rechner transferieren zu können. Im BIN-Ordner der Qt Installation findet man laut Anleitung das Tool “windeployqt.exe”.

Aber Achtung!
Es existieren mehrere Versionen - die zu nutzende Version dieses Tools muss passend zur verwendeten Build-Umgebung gewählt werden. Für MinGW 64-bit ist also die Version im Pfad “Qt\5.15.2\mingw81_64\bin\” zu verwenden.

Der korrekte und zielführende Weg ist also:

  • Bestimme die Build-Umgebung (hier “MinGW 64-bit”)
  • Starte in einem CMD Fenster (DOS-Box) den Batch file
    Install-Laufwerk:\Qt\5.15.2\mingw81_64\bin\qtenv2.bat
  • Starte im gleichen Fenster den Aufruf
    windeployqt.exe
       --dir Pfad-zum_Zielverzeichnis\PV-Anzeige_Deployment_MinGW
       --qmldir Pfad-zum_Zielverzeichnis\PV-Anzeige [hier ein Leerzeichen]
       Pfad-zum_Zielverzeichnis\build-PV-Anzeige
                 -Desktop_Qt_5_15_2_MinGW_64_bit-Release\release\PV-Anzeige.exe
      --no-translations
  • Kopiere die Datei “PV-Anzeige.exe” aus dem Build-Ordner in das Deployment-Verzeichnis
  • Kopiere die korrekt mit der echten IP-Adresse des Raspberry Pi befüllte Datei “PVconfig.ini” in das Deployment-Verzeichnis

Jetzt kann getestet werden, ob alles richtig im Zielverzeichnis angekommen ist. Der Start von PV-Anzeige.exe sollte die GUI öffnen und kurz darauf sollten Werte aus der PV-Anlage in den Anzeigen erscheinen.

Deployment
Leider resultiert das Deployment auf diesem beschriebenen Weg nicht in einer einzelnen, ausführbaren EXE-Datei als Programm, sondern es wird ein Verzeichnis mit mehreren Dateien und Unterverzeichnissen erzeugt, das dann auf den Zielrechner kopiert werden muss. Wir reden hier über 100 MB Daten in 400 Dateien, verteilt auf den Hauptordner und 25 Unterordner.

Um den Transfer auf einen anderen Rechner etwas handhabbarer zu gestalten, habe ich mit ChilkatZipSE alles in eine Installer-EXE verpackt, die das Deployment-Verzeichnis auf dem Zielrechner unter “%UserProfile%\Documents\PV-Anzeige” ablegt und direkt nach dem Auspacken mittels eines Batch einen Link auf die ausführbare “PV-Anzeige.EXE” auf dem Desktop erzeugt.

Die Benutzeroberfläche des Pack-Programms ist schon etwas abgehangen, funktioniert aber auch unter dem aktuellsten Windows 11 klaglos (Stand 11/2025). Überhaupt nicht abgehangen ist hingegen die herausragende Funktionalität des Packers. Chilkat Software stellt das Programm unter dem Namen ZIP 2 Secure EXE als Freeware zum Download zur Verfügung und auch die Premium Options sind jetzt per Freischaltkey nutzbar - den Key findet man auf der Homepage von Chilkat Software.

Gebranntes Kind...
Die Batch-Datei, die zur Steuerung der oben beschriebenen Verpackung der Daten in eine einzelne EXE dient, kam beim Umzug meiner Umgebung auf einen neuen Rechner leider unter die Räder und ich hatte kein Backup davon angelegt :(

Daher hier dieser zweizeilige Batch zum Nachlesen:

start /wait D:\Programme\_Tools\ZIP2EXE_Chilkat\ChilkatZipSE.exe -u EXTRCTSFX_App4hvhU1Aof -sm -r setup.bat -d %UserProfile%\Documents\PV-Anzeige -exe PV-Anzeige_installer.exe PV-Anzeige_install.zip

copy PV-Anzeige_installer.exe “Zielverzeichnis”

Der Inhalt der Batch-Datei aufgeschlüsselt:

start /wait gehört zum Batch und bewirkt, dass die zweite Zeile copy ... erst dann ausgeführt wird, wenn die erste Zeile komplett abgearbeitet ist. Dadurch wird tatsächlich die gerade erzeugte Datei “PV-Anzeige_installer.exe” kopiert und nicht eine evtl. bereits vorhandene, ältere Version des Programms.
Der copy-Befehl in der zweiten Zeile kopiert das Ergebnis der Aktion an ein auch von anderen Rechnern im Heimnetz (LAN) erreichbares Laufwerk einer NAS.

Alle weiteren Angaben der ersten Zeile sind Parameter für ChilkatZipSE:

-u übermittelt den Freischaltcode der Spezialkommandos von ChilkatZipSE.
-sm unterdrückt den Standarddialog bei der Ausführung der Installation.
-r setup.bat bewirkt, dass nach Ablegen der Dateien/Ordner im User-Verzeichnis der im ZIP enthaltene Batch “setup.bat” ausgeführt wird.
-d %UserProfile%\Documents\PV-Anzeige ist der Pfad, unter dem das Verzeichnis “PV-Anzeige” beim Auspacken abgelegt wird.
-exe PV-Anzeige_installer.exe legt den Namen der erzeugten EXE-Datei fest.
PV-Anzeige_install.zip schließlich ist die zu verarbeitende Ausgangs-ZIP-Datei.


Bei den Umstellungen zwischen den verschiedenen Qt Versionen stellte sich heraus, dass es angezeigt ist, den Installationsordner auf dem Zielrechner vor der erneuten Installation einer anderen Version zu löschen, ansonsten passiert es, dass die App nicht startet, obwohl auf dem Entwicklungsrechner keine Probleme auftreten.

Das war aber leider nicht der Grund für die unmotivierten Abstürze der V6 Generierung, die treten weiterhin auf.


Hier noch ein paar Ergebnisse aus dem Prozess des Erkenntnisgewinns während der Umstellung von Qt 5 auf Qt 6.

In der Dokumentation zu Qt wird erklärt, wie das Deployment mittels windeployqt.exe durchgeführt werden soll und dass dafür ein CMD Fenster zur Festlegung der Qt-Umgebung für die nachfolgenden Befehle per qtenv2.bat aus dem bin Ordner der Qt Installation gestartet werden muss. Trägt man jedoch die Maßnahmen für das Deployment direkt im Qt Creator unter “Projekte” ein, erübrigt sich das temporäre Festlegen der Qt Umgebung außerhalb von Qt. Das Deployment wird dann direkt nach dem Erstellen und nach Aufruf der Funktion “Ausführen” im Qt Creator durchgeführt. Der immanente Nachteil hierbei ist, dass bei jedem Programmstart in der IDE (Qt Creator) auch das Deployment durchgeführt wird, was beim gegebenen Projekt etwas länger dauert - wie schon beschrieben werden dabei ca. 400 Dateien in 25 Ordnern erzeugt und anschließend noch in ein ZIP-Archiv verpackt.

Hier vermisse ich einen Mechanismus analog eines optimierenden Linkers, wie er von Arduino bekannt ist, denn längst nicht alle beim Deployment mit eingebundenen DLLs werden vom Programm auch wirklich benötigt. Die überflüssigen DLLs werden durch die Einbindung von übergeordneten Klassen mit eingebunden. Man kann/soll in “main.cpp” durchaus feiner granular inkludieren, aber meine Versuche in dieser Richtung waren nicht immer von sichtbarem Erfolg gekrönt.

Umgehen kann man das Deployment beim Start der App in der Default-Einstellung der GUI nur über den Umweg Menü “Erstellen - Ausführen ohne Deployment”, in meinen Augen unschön gelöst. Ein Maus-Shortcut für diese Funktion ähnlich dem Hammer für “Erstellen” links unten in der GUI wäre eine schöne Alternative. Über “Bearbeiten - Einstellungen - Umgebung - Tastatur” kann man eine Tastenkombination festlegen, die diese Funktionalität bereit stellt - ich habe mir Alt-Ctrl-X für RunWithoutDeploy ausgesucht, zu finden im Block ProjectExplorer der Tastatur-Einstellungen. Die geschmeidigere Alternative ist allerdings, über “Bearbeiten - Einstellungen - Erstellen und Ausführen” den Haken bei “Vor Ausführen des Projekts stets Deployment durchführen” zu entfernen. Das oberegrüne Dreieck “Ausführen” links unten in der GUI startet dann nur noch das Projekt und das Deployment kann/muss, wenn gewünscht, über das Menü “Erstellen - Deployment” explizit angestoßen werden.

Die Angaben für das Deployment von PV-Anzeige sind:Deployment-Angaben PV-Anzeige            (Click auf das Bild für volle Auflösung)

Die einzelnen Schritte werden von oben nach unten abgearbeitet.

  • Zuerst die Batch-Datei “Qt_Deployment_Tasks.bat” die die ggf. im Ordner “PV-Anzeige” vorhandenen Dateien und Unterordner löscht und anschließend einige Dateien, die nicht Bestandteil der normalen Buildumgebung aber für den Betrieb von “PV-Anzeige” notwendig sind, wieder in den Ordner “PV-Anzeige” kopiert. Dazu gehört die INI-Datei mit den Angaben zu IP-Adressen, Ports und sonstigen Einstellungen sowie Support-Dateien für den eigentlichen Installationsvorgang auf dem Zielrechner. Anschließend wird vorbereitend noch die ggf. vorhandene Datei “PV-Anzeige_install.zip” gelöscht.
  • Als nächster Schritt wird das eigentliche Deployment von Qt aufgerufen. Hierbei werden alle vom Programm “PV-Anzeige” zur Ausführung benötigten DLLs und sonstige Ressourcen in das mit dem ersten Batch geleerte Verzeichnis “PV-Anzeige” hinein kopiert.
  • Im dritten Schritt wird die beim Erstellen erzeugte ausführbare “PV-Anzeige.exe” in den Ordner “PV-Anzeige” kopiert. Hiermit ist das Deployment im Rahmen von Qt Creator abgeschlossen, im Ordner “PV-Anzeige” liegen jetzt alle Dateien vor, um das Programm starten zu können.
  • In Schritt vier werden mit der Batch-Datei “ZuViele_Ordner_loeschen.bat” Ordner aus der beim Deployment erzeugten Verzeichnisstruktur entfernt, die vom Programm zur Laufzeit nicht benötigt werden.
  • Der fünfte Schritt ist die Erzeugung des ZIP-Archivs per tar aus dem Ordner “PV-Anzeige”, zur Vereinfachung ebenfalls in den Deploymentprozess aufgenommen.

Den Abschluss bildet das Verpacken des Inhalts der ZIP-Datei mittels ChilkatZipSE in eine einzelne, ausführbare EXE-Datei, die das Programm auf dem Zielrechner installiert. Dieser Schritt wird mit einer Batch-Datei im Windows Explorer erledigt.

Tipp “ZIP-Archiv per Batch erstellen”...
In aktuellen Windows Versionen (Win 10 und Win 11, Stand 06/2025) haben die Entwickler das Tool tar eingebaut. Tar lässt sich per Kommandozeilenparameter steuern und ermöglicht so, diesen Teil des Deployment automatisch gleich mit erledigen zu lassen. Eine Batch-Datei, die den Inhalt des Ordners “PV-Anzeige” in ein ZIP-Archiv namens “PV-Anzeige.zip ” verpackt, wäre beispielsweise Folgende:

rem Alle Dateien im Ordner \PV-Anzeige in das Zipfile \PV-Anzeige.zip packen. (mind. .NET 4.5)
cd \PV-Anzeige
tar -acf \PV-Anzeige.zip *.*
cd ..
pause

Der Parameter -a bewirkt, dass ein ZIP-Archiv erstellt wird. Ohne diesen Parameter wird ein TAR-Archiv erstellt, das vom Windows Explorer nicht geöffnet werden kann. Der Aufruf “tar -acf ...” ist gleichwertig zu “tar -a -c -f ...”, die Parameter können einzeln oder zusammengefasst angegeben werden.

Nyau Wai Hoe hat die zur Verfügung stehenden Aufrufparameter von tar sehr schön aufbereitet beschrieben.

Die damit erzeugte Datei “PV-Anzeige_installer.exe” kann auf den Zielrechner übertragen und dort gestartet werden, was letztlich in einem Link auf dem Desktop mündet, der per Doppelklick das Programm PV-Anzeige startet. Mission accomplished :)

 


Beim Aufruf dieser Funktion werden Daten an Google in USA übermittelt. Neben Ihrer IP-Adresse wird auch die URL der besuchten Seite übertragen.
Besucherzaehler

Besucher seit
25.11.2000