Установка SQL Server Express 2014 с помощью Wix Burn

Я пытаюсь запустить автоматическую установку SQL Server Express 2014 в цепочке пакетов записи, но постоянно сталкиваюсь с проблемами, поэтому ищу совета.

  1. Прямо сейчас я устанавливаю его, запуская самораспаковывающийся SQLEXPR_x64_ENU.exe с переключателями, но есть две проблемы с этим методом, первая из которых заключается в том, что окно извлечения не появляется перед моим пользовательским пользовательским интерфейсом загрузчика, а во-вторых, я не могу указать каталог извлечения по умолчанию. Есть переключатель /X:"C:/Temp", но если я его использую, то основной Setup.exe не запускается после завершения извлечения.

  2. Я попытался решить эту проблему, распаковав его и включив все необходимые файлы в качестве группы полезной нагрузки. Это работает, но время компиляции и время установки неприемлемо медленные из-за всех небольших файлов, которые необходимо извлечь и проверить.

  3. Я также попытался просто сослаться на Setup.exe в извлеченной папке и оставил ее несжатой, чтобы файлы находились в подкаталоге в корне каталога установщика, но это вызывало у меня некоторые проблемы с запуском.

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

Мне было бы интересно услышать, как другие справились с этим, и любой совет будет принят с благодарностью.


person Thermonuclear    schedule 11.11.2014    source источник


Ответы (1)


Мы решили эту проблему с помощью нашего управляемого приложения начальной загрузки следующим образом.

Sql Server 2014 Express SP1 решил проблему с переключателем /qs. Мы можем использовать /qs с /x, чтобы указать папку извлечения, и извлечение продолжится без ввода данных пользователем.

Однако, как вы заметили, это просто извлекает файлы и не запускает setup.exe. Хорошей новостью является то, что извлеченные файлы все еще находятся в папке, указанной с помощью переключателя /x.

В нашем управляемом приложении начальной загрузки мы обрабатываем событие ExecutePackageComplete. Когда пакет Sql Server завершен (все, что он сделал, это извлек файлы), мы используем System.Diagnostics.Process.Start для запуска Sql Server setup.exe.

По завершении установки мы удаляем папку извлечения.

Это не то, что мы думали, что будем делать, когда начинали, но, по крайней мере, это работает.

Больше информации:

Как вы также упомянули, окно прогресса процесса извлечения открывается за окном приложения начальной загрузки.

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

Мы использовали таймер, чтобы дать загрузчику время для обработки любых событий, затем мы перечисляем Process.GetProcesses и ищем ProcessName, содержащее «извлечение sql». Когда мы находим его, мы используем SetWindowPos, чтобы вывести его на передний план.

person David Dunetz    schedule 29.09.2015
comment
Спасибо, я сам отказался от этого, просто предложив пользователю выбрать каталог, но это приемлемое решение, и мне придется попробовать его при первой же возможности. - person Thermonuclear; 26.10.2015
comment
Я добавил информацию о том, как мы справляемся с индикатором выполнения извлечения, появляющимся за окном начальной загрузки. - person David Dunetz; 26.10.2015
comment
Есть ли лучший способ сделать это в наши дни? Я искал, но не нашел ничего полезного. Я также хотел бы пропустить установку SQL Express, если она уже установлена. - person RugerSR9; 19.07.2017