Проект установки Visual Studio: как заставить деинсталлятор работать в режиме администратора? - PullRequest
4 голосов
/ 28 октября 2011

Я создал проект установки Visual studio, и у меня есть классы установщика, созданные для моего основного приложения. В этом классе установщика я переопределил функцию удаления, чтобы очистить дополнительные папки, созданные моим приложением. Это прекрасно работает в Windows XP, но не в Windows 7, так как я предполагаю, что это как-то связано с UAC. Как заставить мой Uninstaller повысить привилегии?

Я задал этот вопрос в другом посте, но я не совсем понял свои намерения.

Я нашел эти ссылки, но не знаю, насколько они актуальны:
http://msdn.microsoft.com/en-us/library/aa370852.aspx
http://msdn.microsoft.com/en-us/library/aa370134%28v=VS.85%29.aspx




ОБНОВЛЕНИЕ (11/7/2011)

Я узнал о Orca , который можно использовать для изменения свойств приложения установки msi, но для этого нет соответствующей документации (или примеров / руководств). Вот шаги, которые я предпринял, чтобы решить эту проблему:

  1. открыть приложение Instal.msi с Orca.
  2. из левых таблиц нажмите на customAction
  3. добавить новую запись в конец всех строк (дважды щелкнув новую строку)
  4. введите Elevate_Install_Uninstall для имен действий и 3072 для типа
  5. введите ВСЕ для цели и оставьте Источник пустым

Надеюсь, это кому-нибудь поможет /

Ответы [ 3 ]

1 голос
/ 29 октября 2011

Я предполагаю, что вы создали новое пользовательское действие, которое выполнялось при удалении пакета MSI. Для запуска пользовательского действия с повышенными правами - либо при установке, либо при деинсталляции - оно должно быть отложено и помечено флагом noimpersonation .

В WiX вы должны установить эти свойства элемента CustomAction :

  • Execute="deferred" и
  • Impersonate="no".

С точки зрения установщика Windows, ваше настраиваемое действие должно иметь следующие биты: msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate; см. Параметры выполнения пользовательских сценариев в сценарии .

1 голос
/ 04 февраля 2012

Добавьте эти атрибуты в процедуру удаления:

    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Uninstall(IDictionary savedState)
    {
        base.Uninstall(savedState);
    }
1 голос
/ 28 октября 2011

UAC в Vista похож на Windows 7, поэтому вы должны найти некоторую помощь здесь:

http://www.professionalvisualstudio.com/blog/2007/10/05/enabling-your-application-for-uac-on-vista/

В этом документе подробно описано, как настроить приложение для запуска без проблем с UAC.

Это позволяет вам добавить файл манифеста в ваше решение, чтобы убедиться, что он работает с определенным уровнем привилегий.

...