Accedere alle proprietà di distribuzione ClickOnce per .NET in Windows

A partire da .NET 7 e Visual Studio 2022 versione 17.4, è possibile accedere alle proprietà di distribuzione ClickOnce usando una variabile di ambiente.

L'utilità di avvio dell'applicazione condivide le proprietà di distribuzione dell'applicazione ClickOnce con l'applicazione avviata (solo .NET). Le proprietà vengono condivise con l'applicazione usando le variabili di ambiente.

I nomi delle variabili corrispondono strettamente alle proprietà nella classe .NET Framework ApplicationDeployment . I nomi delle nuove variabili includono un ClickOnce_ prefisso:

Oltre a queste modifiche, è disponibile una nuova proprietà che restituisce la versione dell'utilità di avvio dell'applicazione:

  • ClickOnce_LauncherVersion

Un'applicazione .NET può usare queste proprietà direttamente o indirettamente.

Nota

Usando questo metodo, è possibile accedere alle proprietà di distribuzione dell'applicazione, ma .NET 7 non supporta l'equivalente dei metodi ApplicationDeployment.

Proprietà di accesso

Nell'esempio di codice seguente viene illustrato come accedere direttamente ClickOnce_IsNetworkDeployed a due proprietà e 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();
    }
}

L'utilizzo indiretto di queste proprietà richiede l'implementazione di una nuova ApplicationDeployment classe a livello di applicazione. Questa classe astrae la lettura delle variabili di ambiente e offre un'esperienza simile alla classe .NET Framework precedente.

Per un'implementazione di esempio di questa classe, vedere ApplicationDeployment.cs.

Il frammento di codice seguente illustra come usare questa classe:

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

Parametri ActivationUri e URL

A partire da .NET 7, dotnet-mage supporta un nuovo commutatore -TrustURLParameters o -tu. Questa opzione consente di impostare l'attributo di distribuzione richiesto usando lo strumento dotnet-mage. Questa modifica è un miglioramento rispetto al vecchio strumento Mage, che non supportava questa funzionalità e richiedeva anche la modifica manuale del manifesto dell'applicazione per aggiungere l'attributo trustURLParameters , <deployment install="true" trustURLParameters="true">.

È necessario impostare su trustURLParameters true per consentire all'applicazione di accedere ai ActivationUri parametri url e .

ClickOnce per .NET in Windows