2013-05-03 4 views
1

Я хочу вызвать пользовательское действие для выполнения набора файлов .sql для данной базы данных. Я могу сделать это с помощью специального кода действия (в C#), если я жестко задаю путь к папке, где доступны мои SQL-файлы.WiX Installer - как читать содержимое файла sql из папки, которая находится в том же месте, что и .msi

Я хочу разместить эту папку сценариев sql в том же месте, где присутствует мой .msi. Как я могу получить/найти этот путь к папке из пользовательских действий во время установки?

Я использую Wix 3.6. Я использую dot net bootstrapper для создания моего setup.exe.

+0

Вы пробовали расширение SQL? Вы можете передать Sql Scripts как двоичный поток. подробнее: http://wix.sourceforge.net/manual-wix2/wix_xsd_sqlscript.htm – Vinoth

ответ

2

Элемент SqlScript в наборе инструментов WiX может делать много того, что вы просите. Он фактически хранит сценарии как потоки Binary в MSI вместо того, чтобы полагаться на файлы относительно MSI. Это важное дизайнерское решение, потому что есть много случаев, когда ваш MSI будет выполнять, но не имеет доступа к исходному исходному медиа, чтобы он не нашел скрипты. Например, операции восстановления могут быть запущены из кэшированного пакета MSI. Если ваше собственное действие было исправлено, для получения сценариев потребуется исходный носитель. Это не очень желательно.

Если вы действительно хотите спуститься по этому пути, вам нужно посмотреть, как использовать каталог SourceDir, чтобы получить «исходное местоположение» вашего MSI. Как отмечено выше, исходный носитель не всегда доступен, и SourceDir будет пустым в этих случаях. Чтобы установить значение SourceDir, вам необходимо добавить действие ResolveFiles. Будьте осторожны при планировании ResolveFiles, потому что для этого потребуется исходный носитель. Если это невозможно найти, пользователю будет предложено вставить его снова.

Худший случай плохого упорядочивания ResolveFiles - это запрос от источника, когда пользователь пытается удалить свой продукт. Пользователь пытается получить ваше приложение на машине, и они предотвращаются, если только они не могут найти, как они изначально были установлены. Хороший способ действительно расстроить ваших пользователей. :)

Я настоятельно рекомендую посмотреть на элемент SqlScript или исходный код, если вы действительно заинтересованы. Он находится в наборе инструментов WiX на src \ ca \ serverca (ищите файлы с «sql» в названии ниже).

 Смежные вопросы

  • Нет связанных вопросов^_^