Как ограничить пользователя, чтобы изменить функцию в случае изменения и обновления в установщике? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть установщик, который просит пользователя выбрать функцию.Что бы пользователь ни выбрал, оно никогда не будет изменено в случае изменения и обновления установки.Например: в моем инсталляторе есть три функции, которые перечислены ниже:

      <Feature Id="Standalone" Title="Standalone" Level="2">
      </Feature>
      <Feature Id="CentralCase" Title="Central case" Level="2" >
      </Feature>
      <Feature Id="MiddleEF" Title="Middle Ef" Level="2" Display="expand">          
           <Feature Id="GUI" Title="Client" Level="3"></Feature>
           <Feature Id="AppServer" Title="Application Server" Level="3">  
      </Feature>
      </Feature> 

Теперь предположим, что пользователь запускает установку, выбирает первую автономную функцию и устанавливает ее.Теперь, если пользователь хочет изменить, ему нельзя разрешать изменять функцию, или даже если пользователь хочет обновить, пользователю также не следует разрешать изменять функцию.Он может обновить только то, что выбрал в первый раз.Есть ли способ сделать это?

1 Ответ

0 голосов
/ 12 декабря 2018

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, чтобы увидеть, скрывает ли он выбор функций.Честно говоря, я никогда не пробовал.


Некоторые дополнительные ресурсы :

...