PackageManager.RemovePackageAsync Metode

Definisi

Overload

RemovePackageAsync(String)

Menghapus Paket untuk pengguna saat ini secara asinkron dan menerima pesan kemajuan dan status pada operasi penghapusan. Paket dependensi juga dihapus untuk pengguna jika tidak ada paket lain yang diinstal untuk pengguna bergantung padanya.

RemovePackageAsync(String, RemovalOptions)

Menghapus Paket untuk pengguna saat ini secara asinkron dan menerima pesan kemajuan dan status pada operasi penghapusan. Paket dependensi juga dihapus untuk pengguna jika tidak ada paket lain yang diinstal untuk pengguna bergantung padanya.

RemovePackageAsync(String)

Menghapus Paket untuk pengguna saat ini secara asinkron dan menerima pesan kemajuan dan status pada operasi penghapusan. Paket dependensi juga dihapus untuk pengguna jika tidak ada paket lain yang diinstal untuk pengguna bergantung padanya.

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)

Parameter

packageFullName
String

Platform::String

winrt::hstring

Representasi string identitas paket untuk mengidentifikasi paket yang akan dihapus.

Mengembalikan

Status permintaan penyebaran. DeploymentResult berisi nilai akhir yang dikembalikan dari operasi penyebaran, setelah selesai. DeploymentProgress dapat digunakan untuk mendapatkan persentase penyelesaian selama seluruh operasi penyebaran.

Atribut

Contoh

Panggil metode RemovePackageAsync(String) untuk menghapus instalan paket aplikasi. Perhatikan bahwa nama lengkap paket dalam packageFullName berasal dari argumen baris perintah.

RemovePackageAsync(String) mengembalikan objek yang dapat digunakan untuk mengelola operasi asinkron. Gunakan properti Selesai untuk mengatur delegasi. Periksa properti Status untuk menentukan status operasi penyebaran. Jika statusnya adalah Kesalahan, contohnya memanggil metode GetResults untuk mendapatkan informasi kesalahan tambahan.

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

Lihat juga dukungan Visual Studio untuk 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;
}

Keterangan

Agar panggilan ke metode ini berhasil, pemanggil perlu memenuhi salah satu kondisi ini:

  • Pemanggil berjalan di AppContainer (Low IL) dan memiliki kemampuan packageManagement terbatas.
  • Penelepon berjalan dengan MEDIUM IL, atau yang lebih tinggi.
  • Penerbit penelepon cocok dengan penerbit paket (atau volume) yang dihapus.

Untuk deskripsi istilah di atas, dan tautan ke info selengkapnya, lihat Pengemasan, penyebaran, dan proses.

Permintaan ini tidak dapat dibatalkan. Nama lengkap paket adalah bentuk alternatif dari identitas paket yang lebih pendek dan cocok untuk penamaan objek seperti file dan direktori. Identitas paket diwakili oleh elemen Identitas dari manifes paket. Ketika paket dihapus, paket dihapus untuk pengguna saat ini, yang berarti bahwa payload paket terus ada jika pengguna lain telah menginstal paket, tetapi tidak akan dapat diakses oleh pengguna saat ini. Jika tidak ada pengguna lain yang menginstal paket yang ditentukan, payload-nya akan dihapus dari direktori %ProgramFiles%\WindowsApps. Aplikasi apa pun yang terkait dengan paket yang sedang dihapus akan dimatikan secara otomatis sebagai bagian dari penghapusan paket.

Lihat juga

Berlaku untuk

RemovePackageAsync(String, RemovalOptions)

Menghapus Paket untuk pengguna saat ini secara asinkron dan menerima pesan kemajuan dan status pada operasi penghapusan. Paket dependensi juga dihapus untuk pengguna jika tidak ada paket lain yang diinstal untuk pengguna bergantung padanya.

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)

Parameter

packageFullName
String

Platform::String

winrt::hstring

Representasi string identitas paket untuk mengidentifikasi paket yang akan dihapus.

removalOptions
RemovalOptions

Nilai jenis RemovalOptions yang memodifikasi operasi penghapusan.

Mengembalikan

Pointer yang menerima alamat objek yang mengimplementasikan antarmuka IAsyncOperationWithProgress .

Atribut

Keterangan

Agar panggilan ke metode ini berhasil, pemanggil perlu memenuhi salah satu kondisi ini:

  • Pemanggil berjalan di AppContainer (Low IL) dan memiliki kemampuan packageManagement terbatas.
  • Penelepon berjalan dengan MEDIUM IL, atau yang lebih tinggi.
  • Penerbit penelepon cocok dengan penerbit paket (atau volume) yang dihapus.

Untuk deskripsi istilah di atas, dan tautan ke info selengkapnya, lihat Pengemasan, penyebaran, dan proses.

Lihat juga

Berlaku untuk