Tutto quello che devi fare è creare una directory di dati:
initdb -D %PROGRAMDATA%\MyApp\data
quindi installa il tuo file di configurazione PostgreSQL e pg_hba.conf oppure apportare le modifiche richieste ai file generati automaticamente da initdb in %PROGRAMDATA%\MyApp\data\postgresql.conf e %PROGRAMDATA%\MyApp\data\pg_hba.conf .
Quindi:
pg_ctl register -D %PROGRAMDATA%\MyApp\data -S auto -N postgres-MyApp -U NETWORKSERVICE
net start postgres-MyApp
Per favore non utilizzare la porta predefinita 5432. Eseguire su una porta non predefinita che non entrerà in conflitto con alcuna installazione PostgreSQL esistente o futura. Inoltre, non utilizzare i nomi di servizio "standard" come postgresql-9.2 .
(NSIS potrebbe offrire un comando per avviare un servizio, invece di utilizzare net start . In tal caso, utilizzare il comando NSIS appropriato).
Nota che %PROGRAMDATA% è definito solo per Windows Vista e versioni successive (dove punta a %SYSTEMDRIVE%\ProgramData per impostazione predefinita). Puoi usare %ALLUSERSPROFILE% su Windows XP, ma davvero, chi se ne frega di XP adesso?
Personalmente, suggerisco di utilizzare i programmi di installazione MSI con WiX.