ARPNOMODIFY : Я думаю, это зависит от того, насколько важно, чтобы эти функции никогда не менялись.Вы можете установить ARPNOMODIFY
в MSI на 1
, и не будет никакой кнопки для вызова Modify
из:
<Property Id="ARPNOMODIFY" Value="1" Secure="yes" />
Отказ от ответственности ниже .Вот драконы.
msiexec.exe : Тем не менее, вы все равно можете вызвать модификацию, запустив сам файл MSI (наборы диалогов по умолчанию должны корректно отключатьсяхотя кнопка «Изменить»), но хуже: вы можете перейти через командную строку msiexec.exe
и изменить все, что вы захотите:
msiexec /i "MySetup.msi" ADDLOCAL=MyFeature
Это может быть нормально, так как это может показатьсяредко используется.Однако вы должны знать, что системы удаленного управления часто используют командную строку msiexec.exe
для управления развертыванием MSI, и поэтому систему развертывания можно использовать для простого изменения состояния функции (через графический интерфейс средства развертывания)., нет командных строк для обработки).
Настраиваемое действие : я не знаю, каким образом можно автоматически отменить установку, если пользователь пытается изменитьструктура объектов, вызываемая из командной строки msiexec.exe
, но я полагаю, что вы можете использовать пользовательское действие, возможно, прямо перед InstallInitialize
в InstallExecuteSequence
, чтобы прервать установку, если ADDLOCAL
, REMOVE
или ADVERTISE
установлены? Если вы не подготовите это пользовательское действие должным образом, это может привести к тому, что пакет вообще не удалится или не обновится должным образом .
Некоторые непроверенные предложения по подготовке: Как выполнить условное настраиваемое действие только при установке и изменении?
MigrateFeatureStates : при значительном обновлении графический интерфейс не будет работать так, как если бы он былвыполняется изменение, но новая установка (поскольку GUID продукта является новым).Следовательно, отображается исходный графический интерфейс установки, а не модифицированный.Соответственно, вам может потребоваться отключить некоторые элементы управления графическим интерфейсом или скрыть целые диалоги, чтобы предотвратить выбор функции (не уверен в диалоговых окнах WiX по умолчанию).Добавил ссылку для этого ниже.Стандартное действие MigrateFeatureStates позаботится о сохранении состояний установки функции между версиями, если вы не сделали ничего кардинального для структуры функции.Вы включаете это стандартное действие для запуска Таблица обновлений .Я думаю, что по умолчанию должен работать в WiX MSI.
ОБНОВЛЕНИЕ :
Предварительно выбранное свойство : есть специальное свойство под названием Preselected , которое автоматически скрывает выбор объектов.Вы можете попытаться установить его или проверить, установлен ли он автоматически WiX, чтобы увидеть, скрывает ли он выбор функций.Честно говоря, я никогда не пробовал.
Некоторые дополнительные ресурсы :