Code-Konventionen#
Für eine möglichst einheitliche Paketstruktur haben wir uns auf einige grundlegende Absprachen festgelegt.
Benennung von Sektionen#
Sektionstyp und Sektionsnamen durch Unterstrich _ trennen, z. B. Files_Copy. Der Name sollte das beschreiben, was die Sektion tut, z. B.
Files_Copy
: Kopieren von InstallationsdateienFiles_Delete
: Löschen von ProgrammdateienFiles_Cleanup
: Löschen von Programmresten nach der Deinstallation
Schreibweisen#
Leerzeilen sind nur zwischen Sektionen zu verwenden und nicht innerhalb einer Sektion.
Alle Pfadangaben werden in doppelten Anführungszeichen („Pfad“) angegeben.
Variablen sollten am Anfang, in der Sektion [Initial], in CamelCase deklariert werden. Beispiele:
$ExitCode$, $Reboot$
Unter [Aktionen] sollte kein eingerückter Code wie z. B.
if-Blöcke
stehen, sondern nur Aufrufe an Sub-Blöcke. Der entsprechende Code kann einfach in einen entsprechenden Sub-Block ausgelagert werden (z. B.Sub_Check
).
Dateien und Ordner#
Alle winst-Scripte sollten die Erweiterung .ins haben; Include-Dateien die Erweiterung .inc.ins.
Alle unmodifizierten Dateien vom Upstream-Hersteller sollten im Unterordner
data
liegen.Alle Dateien vom Paketersteller (Sie) sollten im Paketordner, aber nicht in
data
-Verzeichnis liegen.Sollen vorgegebene Dateien während der Installation modifiziert werden, kopiert man sie erst und modifiziert sie, wenn möglich, mit Hilfe von winst. (Patches-, PatchTextFile-, XMLPatch-Sektionen).
Datenablage (Verzeichnisse, wo alle Benutzer Zugriff drauf haben müssen), liegen in
/srv/appdata/<paketname>
. Die Schreibrechte sollten so restriktiv wie möglich sein (Eigentümer root:root; 755 für Ordner, 644 für Dateien). Ordner, die für Benutzer schreibbar sein müssen, werden auf root:root 777 gesetzt.Jedes Paket muss ein Changelog
/srv/deploy/install/<paketname>/changelog
haben.Das Paket muss ein sinnvolles Logo (PNG, 160x160px) haben.
Dokumentation innerhalb eines Paketes#
Alle Workarounds, die vom Standard-Ablauf abweichen, sollten dokumentiert werden, z. B. Sleep-Aufrufe, spezielle MSI-Parameter, oder die Parameter der diversen Setups.
Wenn möglich, Internetquellen angeben.
Dokumentation, die über wenige Zeilen hinaus gehen, sind in einer zusätzlich README.md Datei zu dokumentieren, damit die Lesbarkeit des Installationsskriptes nicht leidet.
Wenn besondere Schritte erforderlich sind, um das
appdata
-Verzeichnis aus der Software zu extrahieren, oder die Daten darin für den Betrieb mit IServ angepasst werden müssen, müssen diese Schritte inreadme.txt
dokumentiert werden.
msiexec Aufrufe#
Alle msiexec-Aufrufe sollten die folgenden Parameter verwenden:
Installation:
msiexec /passive /i "%ScriptPath%datapaket.msi" [OPTION=WERT]...
Deinstallation:
msiexec /passive /x "%ScriptPath%datapaket.msi" [OPTION=WERT]...
Alle Abweichungen sollten dokumentiert werden. In bestimmten Fällen (z. B. bei der Deinstallation von SMART Notebook) funktioniert /passive
nicht (gibt eine Frage aus); in dem Fall funktioniert /qn
besser, was dann allerdings als Ausnahme dokumentiert werden muss.