PackageManager.RemovePackageAsync Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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)
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)
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.