2015-10-01 1 views
0

Я новичок в Postgresql и собираюсь установить в каталог для моего приложения. После создания пакета, включая приложение и Postgresql, я должен доставить его другому пользователю (установщиком, но Postresql не встроен).Работает ли Postgresql после копирования в другой каталог на окнах?

Мне было интересно, если это нормально для меня, просто скопируйте Postgresql в другой каталог без учета переменных реестра или среды в Windows.

Работает ли это путем копирования всех каталогов в другой каталог или сервер?

+0

Возможный дубликат [Упаковка базы данных в приложение для пользователей] (http://stackoverflow.com/questions/25269274/packaging-database-into-application-seamlessly-for-users) –

+0

Я не имею в виду встроенные Postgresql в приложение. Я просто хочу знать, как скопировать Postgresql в другой каталог. Поскольку Пользователь может выбрать другой каталог установки, поэтому мне нужно скопировать предварительно установленный Postgresql в другой каталог во время установки. – Sigularity

+1

Так что, если вы его скопируете и увидите? – zerkms

ответ

0

Если вы остановите работу службы PostgreSQL и сохраните права доступа к файлам при копировании/перемещении, а также конечным пунктом файловой системы NTFS, она будет работать. Но вам придется настроить определение сервиса или создать новый, чтобы начать с нового места; PostgreSQL не будет знать, где находится каталог данных, пока вы не сообщите об этом.

Однако.

Вы должны просто initdb PostgreSQL, где это должно быть в первую очередь. Нет необходимости в копия или переместить каталог данных. Спросите пользователя, где они хотят, чтобы он был поставлен, а затем положил его туда с самого начала.

Я настоятельно рекомендую вам установить двоичные файлы PostgreSQL в установщик, вместо того, чтобы сначала запустить установщик PostgreSQL. Затем приложите свой initdb свой собственный каталог данных PostgreSQL для его использования.

См. Installation of postgresql with NSIS (не имеет значения, используете ли вы NSIS, принципы одинаковы).

+0

Я согласен с вашим подходом в отношении связывания PostgreSQL с установщиком. У меня есть еще один вопрос. Что касается зарегистрированного сервиса, достаточно выполнить команду «pg_ctl.exe» register ...? Не нужно создавать службу вручную с помощью команды «sc»? – Sigularity

+0

@Sigularity Правильно, 'pg_ctl register' - это помощник, который устанавливает службу. Вы можете создать его вручную с помощью 'sc', если вы предпочитаете делать это таким образом; результат будет таким же. –

+0

Отлично. Мой сценарий таков: установите мое приложение и PostgreSQL локально, а затем создайте несколько таблиц. Попросите установщика InnoSetup скопировать исходный файл в выбранный пользователем каталог. Затем установщик будет запускать команду регистрации pg_ctl вслепую. Не нужно выпускать «initdb». Мне нужно сохранить предыдущие таблицы. Я попробую все это. Вы считаете, что это правильно? Ваш совет очень полезен. – Sigularity