PackageManager.RemovePackageAsync Метод

Определение

Перегрузки

RemovePackageAsync(String)

Асинхронно удаляет пакет для текущего пользователя и получает сообщения о ходе и состоянии операции удаления. Пакеты зависимостей также удаляются для пользователя, если от них не зависят другие пакеты, установленные для пользователя.

RemovePackageAsync(String, RemovalOptions)

Асинхронно удаляет пакет для текущего пользователя и получает сообщения о ходе и состоянии операции удаления. Пакеты зависимостей также удаляются для пользователя, если от них не зависят другие пакеты, установленные для пользователя.

RemovePackageAsync(String)

Асинхронно удаляет пакет для текущего пользователя и получает сообщения о ходе и состоянии операции удаления. Пакеты зависимостей также удаляются для пользователя, если от них не зависят другие пакеты, установленные для пользователя.

public:
 virtual IAsyncOperationWithProgress<DeploymentResult ^, DeploymentProgress> ^ RemovePackageAsync(Platform::String ^ packageFullName) = RemovePackageAsync;
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> RemovePackageAsync(winrt::hstring const& packageFullName);
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperationWithProgress<DeploymentResult,DeploymentProgress> RemovePackageAsync(string packageFullName);
function removePackageAsync(packageFullName)
Public Function RemovePackageAsync (packageFullName As String) As IAsyncOperationWithProgress(Of DeploymentResult, DeploymentProgress)

Параметры

packageFullName
String

Platform::String

winrt::hstring

Строковое представление удостоверения пакета для идентификации удаляемого пакета.

Возвращаемое значение

Состояние запроса на развертывание. DeploymentResult содержит окончательное возвращаемое значение операции развертывания после ее завершения. DeploymentProgress можно использовать для получения процента завершения в течение всего процесса развертывания.

Атрибуты

Примеры

Вызовите метод RemovePackageAsync(String), чтобы удалить пакет приложения. Обратите внимание, что полное имя пакета в packageFullName происходит из аргумента командной строки.

RemovePackageAsync(String) возвращает объект, который можно использовать для управления асинхронной операцией. Используйте свойство Completed , чтобы задать делегат. Проверьте свойство Состояние , чтобы определить состояние операции развертывания. Если состояние — Error, в примере вызывается метод GetResults для получения дополнительных сведений об ошибке.

using Windows.Foundation;
using Windows.Management.Deployment;

[STAThread]
public static int Main(string[] args)
{
    string inputPackageFullName = args[0];
    int returnValue = 0;

    PackageManager packageManager = new Windows.Management.Deployment.PackageManager();

    IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> deploymentOperation = 
        packageManager.RemovePackageAsync(inputPackageFullName);
    // This event is signaled when the operation completes
    ManualResetEvent opCompletedEvent = new ManualResetEvent(false); 

    // Define the delegate using a statement lambda
    deploymentOperation.Completed = (depProgress, status) => { opCompletedEvent.Set(); };

    // Wait until the operation completes
    opCompletedEvent.WaitOne();

    // Check the status of the operation
    if (deploymentOperation.Status == AsyncStatus.Error)
    {
        DeploymentResult deploymentResult = deploymentOperation.GetResults();
        Console.WriteLine("Error code: {0}", deploymentOperation.ErrorCode);
        Console.WriteLine("Error text: {0}", deploymentResult.ErrorText);
        returnValue = 1;
    }
    else if (deploymentOperation.Status == AsyncStatus.Canceled)
    {
        Console.WriteLine("Removal canceled");
    }
    else if (deploymentOperation.Status == AsyncStatus.Completed)
    {
        Console.WriteLine("Removal succeeded");
    }
    else
    {
        returnValue = 1;
        Console.WriteLine("Removal status unknown");
    }

    return returnValue;
}

Также см. сведения в разделе Поддержка Visual Studio для C++/WinRT, XAML, расширения VSIX и пакета NuGet.

// main.cpp : In Visual Studio, create a new Windows Console Application (C++/WinRT).
#include "pch.h"

#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Management.Deployment.h>
#include <iostream>

using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Management::Deployment;

int wmain(int /* argc */, wchar_t *argv[], wchar_t * /* envp[] */)
{
    winrt::init_apartment();

    int returnValue{ 0 };

    std::wstring inputPackageFullName{ argv[1] };
    PackageManager packageManager;

    auto deploymentOperation{ packageManager.RemovePackageAsync(inputPackageFullName) };
    deploymentOperation.get();

    // Check the status of the operation
    if (deploymentOperation.Status() == AsyncStatus::Error)
    {
        auto deploymentResult{ deploymentOperation.GetResults() };
        std::wcout << L"Error code: " << deploymentOperation.ErrorCode() << std::endl;
        std::wcout << L"Error text: " << deploymentResult.ErrorText().c_str() << std::endl;
        returnValue = 1;
    }
    else if (deploymentOperation.Status() == AsyncStatus::Canceled)
    {
        std::wcout << L"Removal canceled" << std::endl;
    }
    else if (deploymentOperation.Status() == AsyncStatus::Completed)
    {
        std::wcout << L"Removal succeeded" << std::endl;
    }
    else
    {
        std::wcout << L"Removal status unknown" << std::endl;
        returnValue = 1;
    }
    return returnValue;
}
using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Management::Deployment;

int __cdecl main(Platform::Array<String^>^ args)
{
    String^ inputPackageFullName = args[1];
    int returnValue = 0;

    PackageManager^ packageManager = ref new PackageManager();

    auto deploymentOperation = packageManager->RemovePackageAsync(inputPackageFullName);

    DeploymentResult^ deploymentOperationResult;

    // This event is signaled when the operation completes
    opCompletedEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

    // Define the delegate
    deploymentOperation->Completed = 
        ref new AsyncOperationWithProgressCompletedHandler<DeploymentResult^, DeploymentProgress>(
        [&](IAsyncOperationWithProgress<DeploymentResult^, DeploymentProgress>^ operation, AsyncStatus)
    {
        SetEvent(opCompletedEvent);
    });

    // Wait until the operation completes
    WaitForSingleObject(opCompletedEvent, INFINITE);

    // Check the status of the operation
    if ( deploymentOperation->Status == AsyncStatus::Error )
    {
        auto deploymentResult = deploymentOperation->GetResults();
        wcout << L"Removal Error: " << deploymentOperation->ErrorCode.Value << endl;
        wcout << L"Detailed Error Text: " << deploymentResult->ErrorText->Data() << endl;
        returnValue = 1;
    }
    else if ( deploymentOperation->Status == AsyncStatus::Canceled )
    {
        wcout << L"Removal Canceled" << endl;
    }
    else if ( deploymentOperation->Status == AsyncStatus::Completed )
    {
        wcout << L"Removal succeeded!" << endl;
    }
    else
    {
        wcout << L"Removal status unknown" << endl;
        returnValue = 1;
    }

    return returnValue;
}

Комментарии

Чтобы вызов этого метода был успешным, вызывающий объект должен выполнить одно из следующих условий:

  • Вызывающий объект выполняется в AppContainer (Low IL) и имеет возможность с ограниченным доступом packageManagement .
  • Вызывающий объект выполняется со средним IL или выше.
  • Издатель вызывающего объекта соответствует издателю удаляемого пакета (или тома).

Описание описанных выше терминов и ссылки на дополнительные сведения см. в статье Упаковка, развертывание и процесс.

Этот запрос нельзя отменить. Полное имя пакета — это альтернативная форма удостоверения пакета, которая короче и подходит для именования объектов, таких как файлы и каталоги. Удостоверение пакета представлено элементом Identity манифеста пакета. При удалении пакета он удаляется для текущего пользователя, что означает, что полезные данные пакета продолжают существовать, если другие пользователи установили пакет, но они не будут доступны текущему пользователю. Если указанный пакет не установлен ни у других пользователей, полезные данные будут удалены из каталога %ProgramFiles%\WindowsApps. Любое приложение, связанное с удаляемым пакетом, будет автоматически завершено при удалении пакета.

См. также раздел

Применяется к

RemovePackageAsync(String, RemovalOptions)

Асинхронно удаляет пакет для текущего пользователя и получает сообщения о ходе и состоянии операции удаления. Пакеты зависимостей также удаляются для пользователя, если от них не зависят другие пакеты, установленные для пользователя.

public:
 virtual IAsyncOperationWithProgress<DeploymentResult ^, DeploymentProgress> ^ RemovePackageAsync(Platform::String ^ packageFullName, RemovalOptions removalOptions) = RemovePackageAsync;
/// [Windows.Foundation.Metadata.Overload("RemovePackageWithOptionsAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> RemovePackageAsync(winrt::hstring const& packageFullName, RemovalOptions const& removalOptions);
[Windows.Foundation.Metadata.Overload("RemovePackageWithOptionsAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperationWithProgress<DeploymentResult,DeploymentProgress> RemovePackageAsync(string packageFullName, RemovalOptions removalOptions);
function removePackageAsync(packageFullName, removalOptions)
Public Function RemovePackageAsync (packageFullName As String, removalOptions As RemovalOptions) As IAsyncOperationWithProgress(Of DeploymentResult, DeploymentProgress)

Параметры

packageFullName
String

Platform::String

winrt::hstring

Строковое представление удостоверения пакета для идентификации удаляемого пакета.

removalOptions
RemovalOptions

Значение типа RemovalOptions, которое изменяет операцию удаления.

Возвращаемое значение

Указатель, получающий адрес объекта, реализующего интерфейс IAsyncOperationWithProgress .

Атрибуты

Комментарии

Чтобы вызов этого метода был успешным, вызывающий объект должен выполнить одно из следующих условий:

  • Вызывающий объект выполняется в AppContainer (Low IL) и имеет возможность с ограниченным доступом packageManagement .
  • Вызывающий объект выполняется со средним IL или выше.
  • Издатель вызывающего объекта соответствует издателю удаляемого пакета (или тома).

Описание описанных выше терминов и ссылки на дополнительные сведения см. в статье Упаковка, развертывание и процесс.

См. также раздел

Применяется к