Доступ к свойствам развертывания ClickOnce для .NET в Windows
Начиная с .NET 7 и Visual Studio 2022 версии 17.4, можно получить доступ к свойствам развертывания ClickOnce с помощью переменной среды.
Средство запуска приложений предоставляет общие свойства развертывания приложений ClickOnce с запущенным приложением (только для .NET). Свойства предоставляются приложению с помощью переменных среды.
Имена переменных тесно соответствуют свойствам в классе платформа .NET FrameworkApplicationDeployment. Новые имена переменных включают ClickOnce_
префикс:
- ClickOnce_IsNetworkDeployed
- ClickOnce_ActivationUri
- ClickOnce_CurrentVersion
- ClickOnce_DataDirectory
- ClickOnce_IsFirstRun
- ClickOnce_TimeOfLastUpdateCheck
- ClickOnce_UpdatedApplicationFullName
- ClickOnce_UpdatedVersion
- ClickOnce_UpdateLocation
Помимо этих изменений, доступно новое свойство, которое возвращает версию средства запуска приложений:
ClickOnce_LauncherVersion
Приложение .NET может использовать эти свойства напрямую или косвенно.
Примечание.
С помощью этого метода можно получить доступ к свойствам развертывания приложений, но .NET 7 не поддерживает эквивалент методов ApplicationDeployment.
Свойства access
В следующем примере кода показано, ClickOnce_IsNetworkDeployed
как напрямую получить доступ к двум свойствам и ClickOnce_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. Это изменение является улучшением старого средства Mage, который не поддерживает эту функциональность, а также требует ручного изменения манифеста приложения для добавления trustURLParameters
атрибута, <deployment install="true" trustURLParameters="true".>
Необходимо задать trustURLParameters
значение true, чтобы разрешить приложению доступ к ActivationUri
параметрам и ПАРАМЕТРАМ URL-адреса.