Partilhar via


PackageManager.RemovePackageAsync Método

Definição

Sobrecargas

RemovePackageAsync(String)

Remove um Pacote para o usuário atual de forma assíncrona e recebe mensagens de progresso e status na operação de remoção. Os pacotes de dependência também serão removidos para o usuário se nenhum outro pacote instalado para o usuário depender deles.

RemovePackageAsync(String, RemovalOptions)

Remove um Pacote para o usuário atual de forma assíncrona e recebe mensagens de progresso e status na operação de remoção. Os pacotes de dependência também serão removidos para o usuário se nenhum outro pacote instalado para o usuário depender deles.

RemovePackageAsync(String)

Remove um Pacote para o usuário atual de forma assíncrona e recebe mensagens de progresso e status na operação de remoção. Os pacotes de dependência também serão removidos para o usuário se nenhum outro pacote instalado para o usuário depender deles.

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)

Parâmetros

packageFullName
String

Platform::String

winrt::hstring

Uma representação de cadeia de caracteres da identidade do pacote para identificar o pacote a ser removido.

Retornos

O status da solicitação de implantação. O DeploymentResult contém o valor final retornado da operação de implantação, depois que ela é concluída. O DeploymentProgress pode ser usado para obter o percentual de conclusão durante todo o curso da operação de implantação.

Atributos

Exemplos

Chame o método RemovePackageAsync(String) para desinstalar o pacote do aplicativo. Observe que o nome completo do pacote em packageFullName vem de um argumento de linha de comando.

RemovePackageAsync(String) retorna um objeto que pode ser usado para gerenciar a operação assíncrona. Use a propriedade Completed para definir o delegado. Verifique a propriedade Status para determinar o status da operação de implantação. Se o status for Error, o exemplo chamará o método GetResults para obter informações adicionais de erro.

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;
}

Confira também Suporte do Visual Studio para C++/WinRT.

// 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;
}

Comentários

Para que uma chamada a esse método seja bem-sucedida, o chamador precisa cumprir uma destas condições:

  • O chamador está em execução em um AppContainer (IL baixo) e tem a funcionalidade restrita packageManagement .
  • O chamador está em execução com IL Médio ou superior.
  • O editor do chamador corresponde ao editor do pacote (ou volume) que está sendo removido.

Para obter descrições dos termos acima e links para mais informações, consulte Empacotamento, implantação e processo.

Essa solicitação não pode ser cancelada. O nome completo do pacote é uma forma alternativa da identidade do pacote que é mais curta e é adequada para nomear objetos como arquivos e diretórios. Uma identidade de pacote é representada pelo elemento Identity do manifesto do pacote. Quando um pacote é removido, ele é removido para o usuário atual, o que significa que o conteúdo do pacote continuará a existir se outros usuários tiverem instalado o pacote, mas ele não estará acessível ao usuário atual. Se nenhum outro usuário tiver o pacote especificado instalado, seu conteúdo será removido do diretório %ProgramFiles%\WindowsApps. Qualquer aplicativo associado ao pacote que está sendo removido será desligado automaticamente como parte da remoção do pacote.

Confira também

Aplica-se a

RemovePackageAsync(String, RemovalOptions)

Remove um Pacote para o usuário atual de forma assíncrona e recebe mensagens de progresso e status na operação de remoção. Os pacotes de dependência também serão removidos para o usuário se nenhum outro pacote instalado para o usuário depender deles.

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)

Parâmetros

packageFullName
String

Platform::String

winrt::hstring

Uma representação de cadeia de caracteres da identidade do pacote para identificar o pacote a ser removido.

removalOptions
RemovalOptions

Um valor do tipo RemovalOptions que modifica a operação de remoção.

Retornos

Um ponteiro que recebe o endereço de um objeto que implementa a interface IAsyncOperationWithProgress .

Atributos

Comentários

Para que uma chamada a esse método seja bem-sucedida, o chamador precisa cumprir uma destas condições:

  • O chamador está em execução em um AppContainer (IL baixo) e tem a funcionalidade restrita packageManagement .
  • O chamador está em execução com IL Médio ou superior.
  • O editor do chamador corresponde ao editor do pacote (ou volume) que está sendo removido.

Para obter descrições dos termos acima e links para mais informações, consulte Empacotamento, implantação e processo.

Confira também

Aplica-se a