PackageManager.AddPackageAsync 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
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)
매개 변수
추가할 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.
- dependencyPackageUris
추가할 종속성 패키지의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.
- deploymentOptions
- DeploymentOptions
DeploymentOptions 열거형의 열거형 값의 비트 조합입니다. ForceApplicationShutdown 및 None 은 이 메서드에 유효한 유일한 옵션입니다. 다른 옵션을 지정하면 반환 값이 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)
매개 변수
추가할 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.
- dependencyPackageUris
추가할 종속성 패키지의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.
- deploymentOptions
- DeploymentOptions
DeploymentOptions 열거형의 열거형 값의 비트 조합입니다. ForceApplicationShutdown 및 None 은 이 메서드에 유효한 유일한 옵션입니다. 다른 옵션을 지정하면 반환 값이 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)
매개 변수
추가할 원본 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.
- dependencyPackageUris
추가할 종속성 패키지의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.
- deploymentOptions
- DeploymentOptions
DeploymentOptions 열거형의 열거형 값의 비트 조합입니다. ForceApplicationShutdown 및 None 은 이 메서드에 유효한 유일한 옵션입니다. 다른 옵션을 지정하면 반환 값이 E_INVALIDARG.
- targetVolume
- PackageVolume
패키지가 추가되는 볼륨입니다.
등록할 기본 번들의 패키지 패밀리 이름입니다.
- externalPackageUris
등록할 기본 번들에 있는 다른 패키지의 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)
매개 변수
추가할 패키지의 URI입니다. 지원되는 URI 체계는 로컬 파일 경로 및 로컬 네트워크 경로뿐이므로 URI는 파일 URI 스키마(file://)를 따라야 합니다.
- dependencyPackageUris
추가할 프레임워크 종속성의 URI입니다. 종속성 패키지가 없거나 종속성 패키지가 이미 등록된 경우 이 매개 변수는 null일 수 있습니다.
- options
- DeploymentOptions
패키지에 대한 배포 옵션입니다.
- targetVolume
- PackageVolume
패키지가 추가되는 볼륨입니다.
등록할 기본 번들의 패키지 패밀리 이름입니다.
- packageUrisToInstall
기본 앱 패키지와 함께 설치할 선택적 패키지의 URI입니다.
- relatedPackageUris
새 선택적 패키지와 동일한 버전으로 업데이트할 관련 선택적 패키지의 URI입니다.
반환
배포 작업의 전체 과정에서 완료된 DeploymentProgress 비율입니다.
- 특성
Windows 요구 사항
디바이스 패밀리 |
Windows 10 Fall Creators Update (10.0.16299.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v5.0에서 도입되었습니다.)
|