PackageManager.RemovePackageAsync Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
RemovePackageAsync(String) |
Rimuove un pacchetto per l'utente corrente in modo asincrono e riceve i messaggi di stato e stato per l'operazione di rimozione. I pacchetti di dipendenza vengono rimossi anche per l'utente se nessun altro pacchetto installato per l'utente dipende da essi. |
RemovePackageAsync(String, RemovalOptions) |
Rimuove un pacchetto per l'utente corrente in modo asincrono e riceve i messaggi di stato e stato per l'operazione di rimozione. I pacchetti di dipendenza vengono rimossi anche per l'utente se nessun altro pacchetto installato per l'utente dipende da essi. |
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)
Parametri
- packageFullName
-
String
Platform::String
winrt::hstring
Rappresentazione di stringa dell'identità del pacchetto per identificare il pacchetto da rimuovere.
Restituisce
Stato della richiesta di distribuzione. DeploymentResult contiene il valore finale restituito dell'operazione di distribuzione al termine dell'operazione di distribuzione. DeploymentProgress può essere usato per ottenere la percentuale di completamento nell'intero corso dell'operazione di distribuzione.
- Attributi
Esempio
Chiamare il metodo RemovePackageAsync(String) per disinstallare il pacchetto dell'app. Si noti che il nome completo del pacchetto in packageFullName proviene da un argomento della riga di comando.
RemovePackageAsync(String) restituisce un oggetto che può essere usato per gestire l'operazione asincrona. Utilizzare la proprietà Completed per impostare il delegato. Controllare la proprietà Status per determinare lo stato dell'operazione di distribuzione. Se lo stato è Error, nell'esempio viene chiamato il metodo GetResults per ottenere informazioni aggiuntive sull'errore.
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;
}
Vedere anche Supporto di Visual Studio per 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;
}
Commenti
Affinché una chiamata a questo metodo venga eseguita correttamente, il chiamante deve soddisfare una di queste condizioni:
- Il chiamante è in esecuzione in un AppContainer (Low IL) e ha la funzionalità con restrizioni packageManagement .
- Il chiamante è in esecuzione con media IL o versione successiva.
- Il server di pubblicazione del chiamante corrisponde all'editore del pacchetto (o del volume) da rimuovere.
Per le descrizioni dei termini precedenti e collegamenti ad altre informazioni, vedi Creazione di pacchetti, distribuzione e processo.
Questa richiesta non può essere annullata. Il nome completo del pacchetto è una forma alternativa dell'identità del pacchetto più breve ed è adatta per la denominazione di oggetti, ad esempio file e directory. Un'identità del pacchetto è rappresentata dall'elemento Identity del manifesto del pacchetto. Quando un pacchetto viene rimosso, viene rimosso per l'utente corrente, il che significa che il payload del pacchetto continua a esistere se altri utenti hanno installato il pacchetto, ma non saranno accessibili all'utente corrente. Se non è installato alcun altro utente, il relativo payload verrà rimosso dalla directory %ProgramFiles%\WindowsApps. Qualsiasi app associata al pacchetto da rimuovere verrà arrestata automaticamente durante la rimozione del pacchetto.
Vedi anche
Si applica 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)
Parametri
- packageFullName
-
String
Platform::String
winrt::hstring
Rappresentazione di stringa dell'identità del pacchetto per identificare il pacchetto da rimuovere.
- removalOptions
- RemovalOptions
Valore tipizzato RemovalOptions che modifica l'operazione di rimozione.
Restituisce
Puntatore che riceve l'indirizzo di un oggetto che implementa l'interfaccia IAsyncOperationWithProgress .
- Attributi
Commenti
Affinché una chiamata a questo metodo venga eseguita correttamente, il chiamante deve soddisfare una di queste condizioni:
- Il chiamante è in esecuzione in un AppContainer (Low IL) e ha la funzionalità con restrizioni packageManagement .
- Il chiamante è in esecuzione con media IL o versione successiva.
- Il server di pubblicazione del chiamante corrisponde all'editore del pacchetto (o del volume) da rimuovere.
Per le descrizioni dei termini precedenti e collegamenti ad altre informazioni, vedi Creazione di pacchetti, distribuzione e processo.