Automatische Installation innerhalb eines Releases

Hallo zusammen

ich weiß nicht ob ich hier an der richtigen Stelle bin mit meinem Problem. Ich schildere es mal so gut es geht:
Wir haben ein Projekt in VS2008, zu dem auch eine PostgreSQL-Datenbank gehört (eingebunden mit Hilfe des npgsql-Treibers). Nun kann man ja in .Net schöne Releases seiner Projekte erstellen mit einem executable-file, mit dem man dann problemlos das Release auf einem anderen Rechner installieren kann. Meine Frage ist nun, ob man in solch ein Release auch eine PostgreSQL-Datenbank mit einbinden kann und die dann sozusagen out-of-the-box auf einem anderen System installiert wird oder ob man nicht darum herum kommt zuerst die DB mit Hilfe von dump und restore auf dem anderen System von Hand zu installieren bevor man sein Projekt auf dem neuen System nutzen kann?

Wäre super wenn mir da jemand weiterhelfen könnte.

Wir reden über Windows?

Ich denke mal, der einfachste Weg dürfte sein, das Installer - MSI oder wie sich das nennt von PG zu nutzen, Dump einspielen. Ist ganz sicher der einfachste Weg. PG will schon sauber installiert sein, mit seinem User, Rechten etc., da steht sicher auch einiges in der zentralen Müllhalde (Registry).

Ja sorry, Windowssystem. PG hat eine Installer-MSI? Du meinst die mit der man sich postgreSQL auf einem Windows-System installiert? Hmm, stimmt, könnte ich mal versuchen ob das funktioniert, danke schonmal.
Ja mir ist schon bewusst das man postgreSQL sauber installieren muss, auch mit Superuser, passwörtern u.s.w… Meine Überlegung geht ja auch soweit zu sagen dass sich möglicherweise postgreSQL für solch eine Verwendung dann gar nicht eignet (eingebettete Projektdatenbank). Wahrscheinlich wäre es sinnvoller die Datenbank auf einem zentralen Server irgendwo zu hinterlegen und in dem Projekt dann sozusagen nur die Zugangsdaten für die Datenbank zu hinterlegen.

Genau. Sowas bieten wir übrigens an :wink:

Bei Interesse kannst mich gern privat kontaktieren.

Eingebettet ist mit server-basierten Datenbanken immer etwas schwierig.

Was mit Postgres - auch unter Windows - recht einfach geht ist eine “Installation” basierend auf dem ZIP Archiv. Also gar nicht den Installer nehmen (es gibt übrigens keinen MSI Installer mehr), sondern das Archiv mit den Binaries. Meine “Installationsroutine” (eine Batchdatei) mit der ich ohne ein “setup.exe” eine Entwicklerdatenbank aufsetze sieht in etwa so aus:

unzip postgresql-9.3.2-1-windows-x64-binaries.zip
set pgdir=%~dp0\pgsql
set datadir=%pgdir%datadir
set bindir=%pgdir%server\bin
set pwfile=%pgdir%password_for_postgres_db_user.txt
set pwd=secretpassword
echo $pwd%> %pwfile%

echo Initializing data directory...
"%bindir%\initdb" -D "%datadir%" --lc-messages=English -U postgres --pwfile="%pwfile%" -E UTF8 -A md5 > initialize.log

Danach kann man sich entschließen, ob man noch einen Windows Service erstellt (geht über pg_ctl) oder einfach den Server “manuell” startet wenn man ihn braucht, z.B. mit

"%bindir%\pg_ctl.exe" -D "%datadir%" start

(Die Variablen werden wieder analog wie oben initialisiert).

Wahrscheinlich wäre es sinnvoller die Datenbank auf einem zentralen Server irgendwo zu hinterlegen und in dem Projekt dann sozusagen nur die Zugangsdaten für die Datenbank zu hinterlegen.

Auf jeden Fall wäre das die bessere Lösung

Ich danke euch vielmals für die Hinweise und Tipps, die ihr mir gegeben habt. Das mit dem Script unter Windows werde ich mal versuchen, aber ich tendiere tatsächlich immer mehr dazu die Datenbank, wie es sich ja auch eigentlich gehört, auf einen zentralen Server zu plazieren und die Projekte darauf verweisen zu lassen. Macht auch die Wartung einfacher. Je mehr Projekte, desto mehr Projektdatenbanken hätte ich ja und desto mehr Wartung…

Mein Angebot steht noch :wink: