удаление приложений с использованием SCCM SDK

Я пытаюсь удалить приложения на устройствах или пользователях с помощью SCCM. Мне удалось создать приложение, которое будет устанавливать приложения, но я не смог его удалить. Код, который я использовал, это:

IResultObject assignment = this.manager.CreateInstance("SMS_ApplicationAssignment");
IResultObject application =
        this.manager.GetInstance("SMS_Application.CI_ID=16777339");

assignment["ApplicationName"].StringValue = application["LocalizedDisplayName"].StringValue;
assignment["AssignedCI_UniqueID"].StringValue = application["CI_UniqueID"].StringValue;
assignment["AssignedCIs"].IntegerArrayValue = new[] { application["CI_ID"].IntegerValue};
assignment["AssignmentName"].StringValue = "Deepak's deployment";
assignment["CollectionName"].StringValue = "Deepak's Collection of Devices";
assignment["DisableMomAlerts"].BooleanValue = true;
assignment["NotifyUser"].BooleanValue = false;
assignment["OfferFlags"].IntegerValue = 0;
assignment["DesiredConfigType"].IntegerValue = 1;           
assignment["OverrideServiceWindows"].BooleanValue = false;
assignment["RebootOutsideOfServiceWindows"].BooleanValue = false;
assignment["SuppressReboot"].IntegerValue = 0;
assignment["TargetCollectionID"].StringValue = "UKN0000F";
assignment["EnforcementDeadline"].DateTimeValue = DateTime.Now.AddDays(1);
assignment["StartTime"].DateTimeValue = DateTime.Now;
assignment["UseGMTTimes"].BooleanValue = false;
assignment["UserUIExperience"].BooleanValue = false;
assignment["WoLEnabled"].BooleanValue = false;
assignment["RequireApproval"].BooleanValue = true;
assignment["OfferTypeId"].IntegerValue = 2;
assignment.Put();

Этот код включит приложение в качестве установки в SCCM. Как получить его как развертывание для удаления? Существует перечисление AppAction , которое, как я подозреваю, используется клиентом, а не сервером.

typedef enum AppAction
{
    appDiscovery = 0, 
    appInstall = 1, 
    appUninstall = 2
} AppAction;

Любая помощь будет оценена!

2
nl ja de

3 ответы

Как я это делаю, сначала используйте uninstall.exe , чтобы определить ориентир программы, а затем создайте программу для пакета, которую я хочу удалить, и просто вызовите uninstall.exe/whatever как команду. Это работает для большинства приложений, которые отображаются в «Добавить/Удалить», и если он не отображается там, в любом случае для удаления необходимо будет взломать (или сценарий). Я полагаю, что причина, по которой вы падаете, объясняется тем, что если нет команды для удаления развертывания в sccm, то ей нечего запускать.

После создания программы удаления вы можете просто вызвать это развертывание из своего кода и вуаля.

0
добавлено

Если целевая программа, которую вы пытаетесь использовать, была установлена ​​через MSI (Microsoft Installer), вы можете пройти через реестр, чтобы найти свой продукт (местоположение реестра: «HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall») И просто посмотрите на каждое значение DisplayName.

В нашей среде я выполняю эту задачу, используя Powershell, и мы настраиваем программу, которая специально удаляет все, что мы делаем.

Надеюсь это поможет... Бурлила.

0
добавлено

Параметр, который необходимо изменить, DesiredConfigType .

Для вашего кода добавьте следующее до put() :

assignment["DesiredConfigType"].IntegerValue = 2;

Значение 1 представляет собой установку (обязательно) и 2 будет удалено (не разрешено).

https://msdn.microsoft.com/en-us/library/hh949014.aspx

0
добавлено