Postgres Installer selbst erstellen (mit Installshield)

Hallo zusammen,

hat jemand schon mal mit der Installersoftware “Installshield” ein Installationspaket für seine eigene Software gebaut, die einen PostgreSQL Server mit einrichtet ?

Warum habe ich so etwas vor ?

Ich möchte beim Installieren meiner eigenen Anwendung bei Bedarf einen PostgreSQL Server (der Anwender soll beim Installieren wählen können, ob er PostgreSQL als Datenbank verwenden möchte) auf dem Anwender PC einrichten.

Das soll beim Installieren meiner Software in Sachen Postgres passieren:

  1. Kopieren der für den Betrieb nötigen und im Installationspaket enthaltenen Postgres-Dateien (die ich aus dem Binary Paket herausextrahiert habe)
  2. Einrichten des Data Directorys per Kommandozeilentool Aufruf
  3. Einrichten eines DB users per Kommandozeilentool Aufruf
  4. Einrichten der Anwendungsdatenbank per Kommandozeilentool Aufruf
  5. Bei Bedarf Einrichtung eines Windows Users, unter dem der PostgreSQL Server läuft (aus Sicherheitsgründen)
  6. PostgreSQL als Dienst registrieren unter NT AUTHORITY/Networkservice oder neuem Windows User (siehe 5)

Jetzt kommen die Dinge, die ich bei der normalen PostgreSQL Installation per Installer Paket nicht bekomme:

  1. Erzeugen einer Datei, in der die DB Connect Parameter (IP Adresse des Postgres Rechners, Port, Datenbankname, DB User) stehen und die für die Clients in einem bei der Installation angegebenen Verzeichnis abgelegt wird
  2. Dem Aufruf eines eigenen Programmes, welches eine Push Nachricht an die Clients sendet, auf denen meine Anwendung zur Zeit der Installation läuft
    und evtl. weitere Sachen

Frage 1: Hat jemand so ein eigenes Installationspaket MIT Postgres Server schon mal gebaut ?

Dann noch eine Frage:

Natürlich sehe ich auch Probleme dabei, die Installation und Einrichtung des Postgres Servers durch einen eigenen Installer durchzuführen und ich frage mich auch noch, ob das der richtige Weg ist.

Denn ich muss mich selbst darum kümmern, den von mir installierten Server upzudaten. Zum Beispiel einen laufenden Server dabei zu stoppen und zu restarten und ggfs die Daten zu mogrieren, etc.

Deshalb noch eine weitere Frage in die Runde:

Frage 2: Sind Euch Anwendungen bekannt, die den Postgres Server mit ausliefern und bei der Installation (der Hauptanwendung) mit installieren/einrichten ?
Also das tun, was ich vorhabe.

Frage 3: Oder macht man das einfach nicht, weil …???

Bin gespannt, ob jemand Erfahrungen auf dem Gebiet hat.

Vielen Dank für Deine Aufmerksamkeit und noch größeren Dank für Antworten :slight_smile:

1: ja, wir
2: https://www.2ndquadrant.com/de/resources/2uda/

Grad bei dem 2uda Installer fand ich es eigentlich ziemlich nervig, dass er (ungefragt) noch ein Postgres installiert. Zumindest als ich das vor einer Weile mal ausprobiert habe war das so, ich weiß nicht ob das noch immer so ist.

Insofern wäre meine Antwort auf 3): nein macht man nicht.

Natürlich hängt das ein wenig von der Art der Anwendung und dem “Zielpublikum” ab. Aber in einer professionellen Umgebung würde ich erwarten dass der DBA (oder wer auch immer den Hut auf hat) bestimmen möchte wie der Datenbankserver installiert wird.

Es gab mal ein Poker-Software die sowas gemacht hat. Das hat dann zu extrem vielen Anfragen auf der Postgres Mailing Liste geführt, weil der Installer zum einen eine vollkommen veraltete Postgres Version installiert hat, und diese auch noch ziemlich murksig.

Wenn überhaupt, sollte der Installer fragen ob Postgres installiert werden soll, wenn nicht, halt die Verbindungsinformationen abfragen.

Danke akretschmer und castrop !

@castrop : “Natürlich hängt das ein wenig von der Art der Anwendung und dem “Zielpublikum” ab”
=> Genau deshalb möchte ich das gerne machen, weil das Zielpublikum technisch nicht sehr versiert ist und ne Installation aus einem Guss erwartet.

Zur Zeit Arbeitet die Anwendung auch (noch) in der Regel mit einer sehr gut und für die meisten Anwender ausreichenden Embedded Datenbank. Aber es gibt auch Nutzer, die mehr wollen. Die können dann aus der Anwendung heraus den PostgreSQL Server hochziehen (die Binaries liefere ich mit der Anwendung aus) und die Anwendung startet dann den Server und richtet diesen zuvor aus der Anwendung heraus ein. Und das alles lokal. Anwender, die den PG Server auf einem dedizierten Server betreiben wollen, installieren und konfigurieren dann selbst. Das sind dann aber versierte Systemadmins, die das auch hinkriegen.

Und genau das hier

"Es gab mal ein Poker-Software die sowas gemacht hat. Das hat dann zu extrem vielen Anfragen auf der Postgres Mailing Liste geführt, weil der Installer zum einen eine vollkommen veraltete Postgres Version installiert hat, und diese auch noch ziemlich murksig. "

muss ich vermeiden, weshalb ich hier Nachfrage und auf Erfahrungen baue, die man mir zuträgt.

Das hier

“Wenn überhaupt, sollte der Installer fragen ob Postgres installiert werden soll, wenn nicht, halt die Verbindungsinformationen abfragen.”

ist genau mein Plan. Der Anwender kann sich beim Installieren entscheiden, ob er einen Postgres Server betreiben/nutzen möchte. Wenn er sich dagegen entscheidet, läuft die Anwendung mit der Embedded Datenbank.

@akretschmer :

Ich gucke mir Euren Installer mal an. Stehst Du für ein oder zwei weitere Fragen zur Verfügung ?

joa, aber ich hab da nichts mit zu tun, das bauen unsere Leute in Pakistan oder so …