2016-08-10 8 views
-1

Я создал установщик wix для отправки файла в диске C. Когда я запустил .msi-файл, я попытался вызвать одно настраиваемое действие перед отправкой файла. В пользовательском действии следующий код, который я использовал.Как закрыть программу установки wix?

код пользовательских действий:

  bool isElevated; 
      WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
      WindowsPrincipal principal = new WindowsPrincipal(identity); 
      isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator); 
      if (!isElevated) 
      { 
       DialogResult dialogResult = MessageBox.Show("CustomAction is not running admode , so please refer online ?", "Admin Alert ", MessageBoxButtons.YesNo); 
       if (dialogResult == DialogResult.Yes) 
       { 
        Process.Start("Same Web site link"); 
        Environment.Exit(0); 
       } 
       else if (dialogResult == DialogResult.No) 
       { 
        Environment.Exit(0); 
       } 
      } 

Над настраиваемого действия рабочего fine.If пользовательского действия не работает админ режим успешно окно сообщения показано на рисунке. Если я не выберем вариант в окне сообщения, установщик wix будет закрыт, но файл будет отправлен. Поэтому, пожалуйста, скажите мне, как остановить установщик wix с помощью C#?

+0

Когда вы планируете это пользовательское действие? –

+0

Привет, Брайан, у меня есть планирование выше пользовательского действия, до установщика MSI. Пример: НЕ установлен ranjo

ответ

2

Если вам требуется, чтобы установка была поднята, просто скажите InstallPrivileges = повышенное значение в вашем WiX. Нет необходимости писать код, чтобы проверить его. Или проверить состояние привилегированной собственности в выполнении последовательности: https://msdn.microsoft.com/en-us/library/windows/desktop/aa370852(v=vs.85).aspx

Если вы хотите пользовательские действия для выполнения повышенными то оно должно быть в последовательности выполнения и отмеченном отсроченный и noimpersonate = истинные и пакет имеет InstallScope = perMachine ,

Таким образом, вы можете договориться о том, что установка будет поднята, и нет необходимости вообще выполнять какие-либо проверки, и вам не нужно предотвращать установку. Кроме того, если вам требуется администратору, чтобы сделать установку есть варианты, которые используют свойство AdminUser и MSIUSEREALADMINDETECTION:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa367545(v=vs.85).aspx

Вы бы объявляющие MSIUSEREALADMINDETECTION в источнике со значением 1, как сказано в документации. Использование свойства Privileged в качестве условия запуска. Затем установка не начнется, если пользователь не является администратором. Однако вторая директива здесь:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa368772(v=vs.85).aspx

вместо рекомендует тип 19 пользовательские действия для проверки Привилегированного установлен:

и есть пример здесь, прокрутите вниз:

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Help-on-type-19-custom-action-td712797.html

Однако, если вам нужна установка для повышения, используйте InstallPriviges = повышенный элемент вашего пакета.

+0

Пожалуйста, поделитесь некоторым примером – ranjo

+0

Привет, PhilDW, я использовал ваши комментарии. Не работает для меня, пожалуйста, поделитесь мной некоторыми образцами. – ranjo

Смежные вопросы