Přístup k vlastnostem nasazení ClickOnce pro .NET ve Windows
Od verze .NET 7 a Visual Studio 2022 verze 17.4 máte přístup k vlastnostem nasazení ClickOnce pomocí proměnné prostředí.
Spouštěč aplikací sdílí vlastnosti nasazení aplikace ClickOnce se spuštěnou aplikací (pouze .NET). Vlastnosti jsou sdíleny s aplikací pomocí proměnných prostředí.
Názvy proměnných úzce odpovídají vlastnostem ve třídě rozhraní .NET Framework ApplicationDeployment . Nové názvy proměnných zahrnují předponu ClickOnce_
:
- ClickOnce_IsNetworkDeployed
- ClickOnce_ActivationUri
- ClickOnce_CurrentVersion
- ClickOnce_DataDirectory
- ClickOnce_IsFirstRun
- ClickOnce_TimeOfLastUpdateCheck
- ClickOnce_UpdatedApplicationFullName
- ClickOnce_UpdatedVersion
- ClickOnce_UpdateLocation
Kromě těchto změn je k dispozici nová vlastnost, která vrací verzi spouštěče aplikací:
ClickOnce_LauncherVersion
Aplikace .NET může tyto vlastnosti používat přímo nebo nepřímo.
Poznámka:
Pomocí této metody můžete přistupovat k vlastnostem nasazení aplikace, ale rozhraní .NET 7 nepodporuje ekvivalent metod ApplicationDeployment.
Vlastnosti přístupu
Následující příklad kódu ukazuje, jak přistupovat ke dvěma vlastnostem přímo ClickOnce_IsNetworkDeployed
a 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();
}
}
Nepřímé použití těchto vlastností vyžaduje implementaci nové ApplicationDeployment
třídy na úrovni aplikace. Tato třída abstrahuje čtení proměnných prostředí a poskytuje podobné prostředí jako stará třída rozhraní .NET Framework.
Ukázkovou implementaci této třídy najdete v tématu ApplicationDeployment.cs.
Následující fragment kódu ukazuje, jak používat tuto třídu:
NameValueCollection nameValueTable = new NameValueCollection();
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
if (ad.ActivationUri != null)
{
nameValueTable = HttpUtility.ParseQueryString(ad.ActivationUri.Query);
}
}
Aktivační identifikátoryURI a parametry adresy URL
Počínaje rozhraním .NET 7 podporuje dotnet-mage nový přepínač nebo -TrustURLParameters
-tu
. Tento přepínač umožňuje nastavit požadovaný atribut nasazení pomocí nástroje dotnet-mage. Tato změna je vylepšením starého nástroje Mage, který tuto funkci nepodporuje a také vyžadoval ruční úpravu manifestu aplikace pro přidání atributu trustURLParameters
<deployment install="true" trustURLParameters="true"true">.
Pokud chcete aplikaci povolit přístup k ActivationUri
parametrům a parametrům adresy URL, musíte nastavit trustURLParameters
hodnotu true.