Windows에서 .NET용 ClickOnce 배포 속성에 액세스

.NET 7 및 Visual Studio 2022 버전 17.4부터 환경 변수를 사용하여 ClickOnce 배포 속성에 액세스할 수 있습니다.

애플리케이션 시작 관리자가 시작 중인 애플리케이션과 ClickOnce 애플리케이션 배포 속성을 공유합니다(.NET만 해당). 속성은 환경 변수를 사용하여 애플리케이션과 공유됩니다.

변수 이름은 .NET Framework ApplicationDeployment 클래스의 속성과 밀접하게 일치합니다. 새 변수 이름에는 ClickOnce_ 접두사가 포함됩니다.

이러한 변경 사항 외에도 애플리케이션 시작 관리자 버전을 반환하는 새 속성을 사용할 수 있습니다.

  • ClickOnce_LauncherVersion

.NET 애플리케이션은 이러한 속성을 직접 또는 간접적으로 사용할 수 있습니다.

참고 항목

이 메서드를 사용하면 애플리케이션 배포 속성에 액세스할 수 있지만 .NET 7은 ApplicationDeployment 메서드와 동등한 기능을 지원하지 않습니다.

액세스 속성

다음 코드 예제에서는 ClickOnce_IsNetworkDeployedClickOnce_ActivationUri 두 속성에 직접 액세스하는 방법을 보여 줍니다.

NameValueCollection nameValueTable = new NameValueCollection();
if (Environment.GetEnvironmentVariable("ClickOnce_IsNetworkDeployed")?.ToLower() == "true")
{
    string value = Environment.GetEnvironmentVariable("ClickOnce_ActivationUri");
    Uri activationUri = string.IsNullOrEmpty(value) ? null : new Uri(value);
    if (activationUri != null)
    {
        nameValueTable = HttpUtility.ParseQueryString(activationUri.Query);
        Console.WriteLine("Query string: " + activationUri.Query);
        Console.ReadKey();
    }
}

이러한 속성을 간접적으로 사용하려면 애플리케이션 수준에서 새 ApplicationDeployment 클래스를 구현해야 합니다. 이 클래스는 환경 변수 읽기를 추상화하고 이전 .NET Framework 클래스와 비슷한 환경을 제공합니다.

이 클래스의 샘플 구현은 ApplicationDeployment.cs를 참조하세요.

다음 코드 조각은 이 클래스를 사용하는 방법을 보여 줍니다.

NameValueCollection nameValueTable = new NameValueCollection();
if (ApplicationDeployment.IsNetworkDeployed)
{
    ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
    if (ad.ActivationUri != null)
    {
        nameValueTable = HttpUtility.ParseQueryString(ad.ActivationUri.Query);
    }
}

ActivationUri 및 URL 매개 변수

.NET 7 부터 dotnet-mage는 새 스위치, -TrustURLParameters 또는 -tu를 지원합니다. 이 스위치를 사용하면 dotnet-mage 도구를 사용하여 필요한 배포 특성을 설정할 수 있습니다. 이 변경 사항은 이 기능을 지원하지 않고 <deployment install="true" trustURLParameters="true">인 trustURLParameters 속성을 추가하기 위해 애플리케이션 매니페스트를 수동으로 수정해야 했던 이전 Mage 도구에 비해 개선된 것입니다.

애플리케이션이 ActivationUri 및 URL 매개 변수에 액세스할 수 있도록 trustURLParameters를 true로 설정해야 합니다.

Windows의 .NET용 ClickOnce