Элемент SqlScript
в наборе инструментов WiX может делать много того, что вы просите. Он фактически хранит сценарии как потоки Binary
в MSI вместо того, чтобы полагаться на файлы относительно MSI. Это важное дизайнерское решение, потому что есть много случаев, когда ваш MSI будет выполнять, но не имеет доступа к исходному исходному медиа, чтобы он не нашел скрипты. Например, операции восстановления могут быть запущены из кэшированного пакета MSI. Если ваше собственное действие было исправлено, для получения сценариев потребуется исходный носитель. Это не очень желательно.
Если вы действительно хотите спуститься по этому пути, вам нужно посмотреть, как использовать каталог SourceDir
, чтобы получить «исходное местоположение» вашего MSI. Как отмечено выше, исходный носитель не всегда доступен, и SourceDir
будет пустым в этих случаях. Чтобы установить значение SourceDir
, вам необходимо добавить действие ResolveFiles
. Будьте осторожны при планировании ResolveFiles
, потому что для этого потребуется исходный носитель. Если это невозможно найти, пользователю будет предложено вставить его снова.
Худший случай плохого упорядочивания ResolveFiles
- это запрос от источника, когда пользователь пытается удалить свой продукт. Пользователь пытается получить ваше приложение на машине, и они предотвращаются, если только они не могут найти, как они изначально были установлены. Хороший способ действительно расстроить ваших пользователей. :)
Я настоятельно рекомендую посмотреть на элемент SqlScript
или исходный код, если вы действительно заинтересованы. Он находится в наборе инструментов WiX на src \ ca \ serverca (ищите файлы с «sql» в названии ниже).
Вы пробовали расширение SQL? Вы можете передать Sql Scripts как двоичный поток. подробнее: http://wix.sourceforge.net/manual-wix2/wix_xsd_sqlscript.htm – Vinoth