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

제거할 패키지를 식별하는 패키지 ID의 문자열 표현입니다.

반환

배포 요청의 상태. DeploymentResult는 완료되면 배포 작업의 최종 반환 값을 포함합니다. DeploymentProgress를 사용하여 배포 작업의 전체 과정에서 완료 비율을 얻을 수 있습니다.

특성

예제

RemovePackageAsync(String) 메서드를 호출하여 앱 패키지를 제거합니다. packageFullName의 패키지 전체 이름은 명령줄 인수에서 가져옵니다.

RemovePackageAsync(String)는 비동기 작업을 관리하는 데 사용할 수 있는 개체를 반환합니다. Completed 속성을 사용하여 대리자를 설정합니다. Status 속성을 확인하여 배포 작업의 상태 확인합니다. 상태 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 지원을 참조하세요.

// 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(낮은 IL)에서 실행 되고 있으며packageManagement 제한된 기능이 있습니다.
  • 호출자가 중간 IL 이상으로 실행되고 있습니다.
  • 호출자의 게시자는 제거되는 패키지(또는 볼륨)의 게시자와 일치합니다.

위의 용어에 대한 설명과 자세한 정보 링크는 패키징, 배포 및 프로세스를 참조하세요.

이 요청은 취소할 수 없습니다. 패키지 전체 이름은 더 짧고 파일 및 디렉터리와 같은 개체의 이름을 지정하는 데 적합한 대체 형식의 패키지 ID입니다. 패키지 ID는 패키지 매니페스트의 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

제거할 패키지를 식별하는 패키지 ID의 문자열 표현입니다.

removalOptions
RemovalOptions

제거 작업을 수정하는 RemovalOptions 형식 값입니다.

반환

IAsyncOperationWithProgress 인터페이스를 구현하는 개체의 주소를 수신하는 포인터입니다.

특성

설명

이 메서드를 성공적으로 호출하려면 호출자가 다음 조건 중 하나를 충족해야 합니다.

  • 호출자가 AppContainer(낮은 IL)에서 실행 되고 있으며packageManagement 제한된 기능이 있습니다.
  • 호출자가 중간 IL 이상으로 실행되고 있습니다.
  • 호출자의 게시자는 제거되는 패키지(또는 볼륨)의 게시자와 일치합니다.

위의 용어에 대한 설명과 자세한 정보 링크는 패키징, 배포 및 프로세스를 참조하세요.

추가 정보

적용 대상