Настройка удаления и удаления программы "Добавить / удалить"

Есть два способа удалить мое приложение.

  1. Используя ту же настройку.
  2. Установка и удаление программ на панелях управления

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


person ABCD    schedule 19.10.2012    source источник
comment
Вы хотите запускать настраиваемые диалоговые окна удаления установки при нажатии кнопки «Удалить» в разделе «Установка и удаление программ»?   -  person Sandeep    schedule 19.10.2012


Ответы (2)


Если вы используете проект на основе MSI, то кнопка «Удалить» запустит удаление в пассивном режиме. Таким образом, любые действия в вашем пользовательском интерфейсе или диалоговой последовательности будут пропущены. Чтобы обойти это, обычно отключают кнопку удаления (см. ARPNOREMOVE) и требуют, чтобы конечные пользователи вместо этого нажимали кнопку «Изменить» (которая действительно отображает пользовательский интерфейс).

person Michael Urman    schedule 19.10.2012
comment
+1, спасибо за ответ. Я попытался изменить HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ {xxxx} - ›UninstallString, чтобы получить пользовательский интерфейс, но не смог. Разве MsiExce не использует эту строку для удаления приложения? Если да, то какова цель UnistallString? - person ABCD; 29.10.2012
comment
Неа. UninstallString здесь, предположительно, для обратной совместимости с приложениями, которые напрямую обращаются к ключу Uninstall, но не знают о MSI. См. stackoverflow.com/a/1826857/89999 - person Michael Urman; 29.10.2012
comment
То, что вы предложили, - единственное возможное решение, которое я смог найти. На данный момент мы не предоставляем опции «Изменить» или «Восстановить» в наших настройках. Но все же на кнопке ARP написано «Изменить». Можно ли изменить отображаемое имя кнопки? - person ABCD; 02.11.2012
comment
Я считаю, что текст на кнопке контролируется Microsoft, поэтому вы можете увидеть другой текст, обновив или понизив свою версию Windows. В противном случае (реально) вы не сможете изменить текст на этой кнопке. - person Michael Urman; 02.11.2012

Вы можете сделать это с помощью WMI < / а>. Вы можете настроить программу удаления в соответствии с вашими потребностями. Для этого необходимо использовать Win32_Product class и метод удаления. Ниже приведен пример удаления программы на локальном компьютере:

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class CallWMIMethod
    {
        public static void Main()
        {
            try
            {
                ManagementObject classInstance =
                    new ManagementObject("root\\CIMV2",
                    "Win32_Product.IdentifyingNumber='{EDDE41A3-A870-4D97-A1ED-67FF62AA0552}',Name='MyServiceSetup',Version='1.0.0'",
                    null);

                // No method in-parameters to define


                // Execute the method and obtain the return values.
                ManagementBaseObject outParams =
                    classInstance.InvokeMethod("Uninstall", null, null);

                // List outParams
                Console.WriteLine("Out parameters:");
                Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
            }
            catch(ManagementException err)
            {
                MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
            }
        }
    }
}

Вы можете проверить возвращаемое значение в Коды ошибок (Настольные приложения Windows).

person Arshad    schedule 19.10.2012