Как Wix обрабатывает модули слияния, требующие прав администратора?
В настоящее время я планирую сценарий установки и обновления с использованием MSI, созданных с помощью Wix. Первоначальная установка будет включать сторонние драйверы в качестве модулей слияния, для которых потребуются повышенные разрешения.
Мы хотим максимально автоматизировать обновления программного обеспечения, поэтому будем регулярно обновлять пакеты MSI. Они будут загружены в фоновом режиме и установлены при следующем открытии приложения пользователем. Мы внедрим процессы, чтобы гарантировать, что изменения в модулях драйверов не будут включены в автоматические обновления.
Будет ли установщик Windows выполнять эти модули слияния, если они не были изменены? Какое влияние это окажет на общий установщик? Будет ли лучше создать отдельный MSI для этих драйверов, чтобы полностью изолировать их от основного пакета приложений?
1 ответ
Вот некоторые предпосылки, которые помогут прояснить ситуацию. Модули слияния не "выполняются". Фактически, после того, как вы создадите установщик, их больше не будет. Модуль слияния - это просто база данных, содержащая данные таблицы MSI, которая объединяется с вашим MSI во время сборки. Думайте об этом как о инкапсуляции набора компонентов и связанных метаданных. Это как файл C/C++ .LIB, который статически связан внутри EXE-файла.
Поэтому, если у вас есть компоненты (от MSI или от MSM), для установки которых требуются повышенные разрешения, тогда для окончательного MSI требуются повышенные разрешения для установки.
Я делал этот процесс автообновления в прошлом. Вы хотите, чтобы этот процесс имел повышенные права, и после его загрузки MSI "объявляет" его как управляемый для каждой машины (то, что я называю "благословенным" MSI). Это делается с помощью команды msiexec /jm foo.msi. Затем просигнализируйте процесс на стороне пользователя для установки MSI. При правильном создании MSI будет автоматически повышаться без предоставления прав администратора пользователю.