PackageManager.AddPackageAsync 메서드

정의

오버로드

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions)

지정된 배포 옵션을 사용하여 패키지(기본 패키지) 및 현재 사용자에 대한 종속성 패키지를 추가합니다.

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions, PackageVolume)

지정된 배포 옵션을 사용하여 패키지(기본 패키지) 및 해당 종속성 패키지를 현재 사용자의 지정된 볼륨에 추가합니다.

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions, PackageVolume, IIterable<String>, IIterable<Uri>)

지정된 배포 옵션을 사용하여 패키지 및 해당 종속성 패키지를 현재 사용자의 지정된 볼륨에 추가합니다.

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions, PackageVolume, IIterable<String>, IIterable<Uri>, IIterable<Uri>)

지정된 배포 옵션을 사용하여 패키지(기본 패키지) 및 현재 사용자에 대한 종속성 패키지를 추가합니다.

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions)

지정된 배포 옵션을 사용하여 패키지(기본 패키지) 및 현재 사용자에 대한 종속성 패키지를 추가합니다.

public:
 virtual IAsyncOperationWithProgress<DeploymentResult ^, DeploymentProgress> ^ AddPackageAsync(Uri ^ packageUri, IIterable<Uri ^> ^ dependencyPackageUris, DeploymentOptions deploymentOptions) = AddPackageAsync;
/// [Windows.Foundation.Metadata.Overload("AddPackageAsync")]
IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> AddPackageAsync(Uri const& packageUri, IIterable<Uri> const& dependencyPackageUris, DeploymentOptions const& deploymentOptions);
[Windows.Foundation.Metadata.Overload("AddPackageAsync")]
public IAsyncOperationWithProgress<DeploymentResult,DeploymentProgress> AddPackageAsync(System.Uri packageUri, IEnumerable<System.Uri> dependencyPackageUris, DeploymentOptions deploymentOptions);
function addPackageAsync(packageUri, dependencyPackageUris, deploymentOptions)
Public Function AddPackageAsync (packageUri As Uri, dependencyPackageUris As IEnumerable(Of Uri), deploymentOptions As DeploymentOptions) As IAsyncOperationWithProgress(Of DeploymentResult, DeploymentProgress)

매개 변수

packageUri
Uri Uri

추가할 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.

dependencyPackageUris

IIterable<Uri>

IEnumerable<Uri>

추가할 종속성 패키지의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.

deploymentOptions
DeploymentOptions

DeploymentOptions 열거형의 열거형 값의 비트 조합입니다. ForceApplicationShutdownNone 은 이 메서드에 유효한 유일한 옵션입니다. 다른 옵션을 지정하면 반환 값이 E_INVALIDARG.

반환

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

특성

Windows 요구 사항

앱 기능
packageManagement

예제

다음 예제에서는 PackageManager.AddPackageAsync 메서드를 사용하여 종속성이 없거나 종속성이 이미 설치된 패키지를 설치합니다. 기본 패키지의 경로는 예제에서 인수로 전달됩니다. AddPackageAsync 는 비동기 작업을 관리하는 데 사용할 수 있는 개체를 반환합니다. 이 예제에서는 Completed 속성을 사용하여 대리자를 설정하고 Status 속성을 확인하여 배포 작업의 상태 확인합니다. 상태 Error이면 GetResults 메서드를 호출하여 추가 오류 정보를 가져옵니다.

using Windows.Foundation;
using Windows.Management.Deployment;

public static int Main(string[] args)
{
    string inputPackageUri = args[0];
    int returnValue=0;

    Uri packageUri = new Uri(inputPackageUri);            

    PackageManager packageManager = new PackageManager();

    IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> deploymentOperation = 
        packageManager.AddPackageAsync(
            packageUri, 
            null, 
            DeploymentOptions.None);

    // 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("Installation canceled");
    }
    else if (deploymentOperation.Status == AsyncStatus.Completed)
    {
        Console.WriteLine("Installation succeeded");
    }
    else
    {
        returnValue = 1;
        Console.WriteLine("Installation 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 packageUriString{ argv[1] };
    Uri packageUri{ packageUriString };
    PackageManager packageManager;

    auto deploymentOperation{ packageManager.AddPackageAsync(packageUri, nullptr, DeploymentOptions::None) };
    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"Installation canceled" << std::endl;
    }
    else if (deploymentOperation.Status() == AsyncStatus::Completed)
    {
        std::wcout << L"Installation succeeded" << std::endl;
    }
    else
    {
        std::wcout << L"Installation status unknown" << std::endl;
        returnValue = 1;
    }
    return returnValue;
}
using namespace Windows::Foundation;
using namespace Windows::Management::Deployment;

[STAThread]
int __cdecl main(Platform::Array<String^>^ args)
{  
    String^ inputPackageUri = args[1];
    int returnValue=0;

    Uri^ packageUri = ref new Uri(inputPackageUri);

    PackageManager^ packageManager = ref new PackageManager();

    auto deploymentOperation = packageManager->AddPackageAsync(
        packageUri, 
        nullptr, 
        DeploymentOptions::None);

    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"Error code: " << deploymentOperation->ErrorCode.Value << endl;
        wcout << L"Error text: " << deploymentResult->ErrorText->Data() << endl;
        returnValue = 1;
    }
    else if ( deploymentOperation->Status == AsyncStatus::Canceled )
    {
        wcout << L"Installation canceled" << endl;
    }
    else if ( deploymentOperation->Status == AsyncStatus::Completed )
    {
        wcout << L"Installation succeeded" << endl;
    }
    else
    {
        wcout << L"Installation status unknown" << endl;
        returnValue = 1;
    }
    return returnValue;
}

추가 정보

적용 대상

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions, PackageVolume)

지정된 배포 옵션을 사용하여 패키지(기본 패키지) 및 해당 종속성 패키지를 현재 사용자의 지정된 볼륨에 추가합니다.

public:
 virtual IAsyncOperationWithProgress<DeploymentResult ^, DeploymentProgress> ^ AddPackageAsync(Uri ^ packageUri, IIterable<Uri ^> ^ dependencyPackageUris, DeploymentOptions deploymentOptions, PackageVolume ^ targetVolume) = AddPackageAsync;
/// [Windows.Foundation.Metadata.Overload("AddPackageToVolumeAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> AddPackageAsync(Uri const& packageUri, IIterable<Uri> const& dependencyPackageUris, DeploymentOptions const& deploymentOptions, PackageVolume const& targetVolume);
[Windows.Foundation.Metadata.Overload("AddPackageToVolumeAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperationWithProgress<DeploymentResult,DeploymentProgress> AddPackageAsync(System.Uri packageUri, IEnumerable<System.Uri> dependencyPackageUris, DeploymentOptions deploymentOptions, PackageVolume targetVolume);
function addPackageAsync(packageUri, dependencyPackageUris, deploymentOptions, targetVolume)
Public Function AddPackageAsync (packageUri As Uri, dependencyPackageUris As IEnumerable(Of Uri), deploymentOptions As DeploymentOptions, targetVolume As PackageVolume) As IAsyncOperationWithProgress(Of DeploymentResult, DeploymentProgress)

매개 변수

packageUri
Uri Uri

추가할 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.

dependencyPackageUris

IIterable<Uri>

IEnumerable<Uri>

추가할 종속성 패키지의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.

deploymentOptions
DeploymentOptions

DeploymentOptions 열거형의 열거형 값의 비트 조합입니다. ForceApplicationShutdownNone 은 이 메서드에 유효한 유일한 옵션입니다. 다른 옵션을 지정하면 반환 값이 E_INVALIDARG.

targetVolume
PackageVolume

패키지가 추가되는 볼륨입니다.

반환

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

특성

Windows 요구 사항

앱 기능
packageManagement

추가 정보

적용 대상

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions, PackageVolume, IIterable<String>, IIterable<Uri>)

지정된 배포 옵션을 사용하여 패키지 및 해당 종속성 패키지를 현재 사용자의 지정된 볼륨에 추가합니다.

public:
 virtual IAsyncOperationWithProgress<DeploymentResult ^, DeploymentProgress> ^ AddPackageAsync(Uri ^ packageUri, IIterable<Uri ^> ^ dependencyPackageUris, DeploymentOptions deploymentOptions, PackageVolume ^ targetVolume, IIterable<Platform::String ^> ^ optionalPackageFamilyNames, IIterable<Uri ^> ^ externalPackageUris) = AddPackageAsync;
/// [Windows.Foundation.Metadata.DefaultOverload]
/// [Windows.Foundation.Metadata.Overload("AddPackageToVolumeAndOptionalPackagesAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> AddPackageAsync(Uri const& packageUri, IIterable<Uri> const& dependencyPackageUris, DeploymentOptions const& deploymentOptions, PackageVolume const& targetVolume, IIterable<winrt::hstring> const& optionalPackageFamilyNames, IIterable<Uri> const& externalPackageUris);
[Windows.Foundation.Metadata.DefaultOverload]
[Windows.Foundation.Metadata.Overload("AddPackageToVolumeAndOptionalPackagesAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperationWithProgress<DeploymentResult,DeploymentProgress> AddPackageAsync(System.Uri packageUri, IEnumerable<System.Uri> dependencyPackageUris, DeploymentOptions deploymentOptions, PackageVolume targetVolume, IEnumerable<string> optionalPackageFamilyNames, IEnumerable<System.Uri> externalPackageUris);
function addPackageAsync(packageUri, dependencyPackageUris, deploymentOptions, targetVolume, optionalPackageFamilyNames, externalPackageUris)
Public Function AddPackageAsync (packageUri As Uri, dependencyPackageUris As IEnumerable(Of Uri), deploymentOptions As DeploymentOptions, targetVolume As PackageVolume, optionalPackageFamilyNames As IEnumerable(Of String), externalPackageUris As IEnumerable(Of Uri)) As IAsyncOperationWithProgress(Of DeploymentResult, DeploymentProgress)

매개 변수

packageUri
Uri Uri

추가할 원본 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.

dependencyPackageUris

IIterable<Uri>

IEnumerable<Uri>

추가할 종속성 패키지의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.

deploymentOptions
DeploymentOptions

DeploymentOptions 열거형의 열거형 값의 비트 조합입니다. ForceApplicationShutdownNone 은 이 메서드에 유효한 유일한 옵션입니다. 다른 옵션을 지정하면 반환 값이 E_INVALIDARG.

targetVolume
PackageVolume

패키지가 추가되는 볼륨입니다.

optionalPackageFamilyNames

IIterable<String>

IEnumerable<String>

IIterable<Platform::String>

IIterable<winrt::hstring>

등록할 기본 번들의 패키지 패밀리 이름입니다.

externalPackageUris

IIterable<Uri>

IEnumerable<Uri>

등록할 기본 번들에 있는 다른 패키지의 URI입니다.

반환

배포 작업의 전체 과정에서 완료된 DeploymentProgress 비율입니다.

특성

Windows 요구 사항

디바이스 패밀리
Windows 10 Creators Update (10.0.15063.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v4.0에서 도입되었습니다.)

추가 정보

적용 대상

AddPackageAsync(Uri, IIterable<Uri>, DeploymentOptions, PackageVolume, IIterable<String>, IIterable<Uri>, IIterable<Uri>)

지정된 배포 옵션을 사용하여 패키지(기본 패키지) 및 현재 사용자에 대한 종속성 패키지를 추가합니다.

public:
 virtual IAsyncOperationWithProgress<DeploymentResult ^, DeploymentProgress> ^ AddPackageAsync(Uri ^ packageUri, IIterable<Uri ^> ^ dependencyPackageUris, DeploymentOptions options, PackageVolume ^ targetVolume, IIterable<Platform::String ^> ^ optionalPackageFamilyNames, IIterable<Uri ^> ^ packageUrisToInstall, IIterable<Uri ^> ^ relatedPackageUris) = AddPackageAsync;
/// [Windows.Foundation.Metadata.Overload("AddPackageToVolumeAndRelatedSetAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> AddPackageAsync(Uri const& packageUri, IIterable<Uri> const& dependencyPackageUris, DeploymentOptions const& options, PackageVolume const& targetVolume, IIterable<winrt::hstring> const& optionalPackageFamilyNames, IIterable<Uri> const& packageUrisToInstall, IIterable<Uri> const& relatedPackageUris);
[Windows.Foundation.Metadata.Overload("AddPackageToVolumeAndRelatedSetAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperationWithProgress<DeploymentResult,DeploymentProgress> AddPackageAsync(System.Uri packageUri, IEnumerable<System.Uri> dependencyPackageUris, DeploymentOptions options, PackageVolume targetVolume, IEnumerable<string> optionalPackageFamilyNames, IEnumerable<System.Uri> packageUrisToInstall, IEnumerable<System.Uri> relatedPackageUris);
function addPackageAsync(packageUri, dependencyPackageUris, options, targetVolume, optionalPackageFamilyNames, packageUrisToInstall, relatedPackageUris)
Public Function AddPackageAsync (packageUri As Uri, dependencyPackageUris As IEnumerable(Of Uri), options As DeploymentOptions, targetVolume As PackageVolume, optionalPackageFamilyNames As IEnumerable(Of String), packageUrisToInstall As IEnumerable(Of Uri), relatedPackageUris As IEnumerable(Of Uri)) As IAsyncOperationWithProgress(Of DeploymentResult, DeploymentProgress)

매개 변수

packageUri
Uri Uri

추가할 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.

dependencyPackageUris

IIterable<Uri>

IEnumerable<Uri>

추가할 프레임워크 종속성의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.

options
DeploymentOptions

패키지에 대한 배포 옵션입니다.

targetVolume
PackageVolume

패키지가 추가되는 볼륨입니다.

optionalPackageFamilyNames

IIterable<String>

IEnumerable<String>

IIterable<Platform::String>

IIterable<winrt::hstring>

등록할 기본 번들의 패키지 패밀리 이름입니다.

packageUrisToInstall

IIterable<Uri>

IEnumerable<Uri>

기본 앱 패키지와 함께 설치할 선택적 패키지의 URI입니다.

relatedPackageUris

IIterable<Uri>

IEnumerable<Uri>

새 선택적 패키지와 동일한 버전으로 업데이트할 관련 선택적 패키지의 URI입니다.

반환

배포 작업의 전체 과정에서 완료된 DeploymentProgress 비율입니다.

특성

Windows 요구 사항

디바이스 패밀리
Windows 10 Fall Creators Update (10.0.16299.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v5.0에서 도입되었습니다.)

추가 정보

적용 대상