Todo lo que necesita hacer es crear un directorio de datos:
initdb -D %PROGRAMDATA%\MyApp\data
luego instale su archivo de configuración de PostgreSQL y pg_hba.conf o realice las modificaciones necesarias en los archivos generados automáticamente por initdb en %PROGRAMDATA%\MyApp\data\postgresql.conf y %PROGRAMDATA%\MyApp\data\pg_hba.conf .
Entonces:
pg_ctl register -D %PROGRAMDATA%\MyApp\data -S auto -N postgres-MyApp -U NETWORKSERVICE
net start postgres-MyApp
Por favor no use el puerto predeterminado 5432. Ejecute en un puerto no predeterminado que no entre en conflicto con ninguna instalación de PostgreSQL existente o futura. Además, no utilice los nombres de servicio "estándar" como postgresql-9.2 .
(NSIS puede ofrecer un comando para iniciar un servicio, en lugar de usar net start . Si es así, use el comando NSIS apropiado).
Tenga en cuenta que %PROGRAMDATA% solo está definido para Windows Vista y superior (donde apunta a %SYSTEMDRIVE%\ProgramData por defecto). Puede usar %ALLUSERSPROFILE% en Windows XP, pero realmente, ¿a quién le importa XP ahora?
Personalmente, sugiero usar instaladores MSI con WiX.