Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A partire da .NET 7 e Visual Studio 2022 versione 17.4, è possibile accedere alle proprietà di distribuzione ClickOnce usando una variabile di ambiente.
Il programma di avvio dell'applicazione condivide le proprietà di distribuzione ClickOnce dell'applicazione 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<xref:System.Deployment.Application.ApplicationDeployment>. I nomi delle nuove variabili includono un ClickOnce_ prefisso:
- ClickOnce_IsNetworkDeployed
- ClickOnce_ActivationUri
- ClickOnce_CurrentVersion
- ClickOnce_DataDirectory
- ClickOnce_IsFirstRun
- ClickOnce_TimeOfLastUpdateCheck
- ClickOnce_UpdatedApplicationFullName
- ClickOnce_UpdatedVersion
- ClickOnce_UpdateLocation
Oltre a queste modifiche, è disponibile una nuova proprietà che restituisce la versione del launcher dell'applicazione:
ClickOnce_LauncherVersion
Un'applicazione .NET può usare queste proprietà direttamente o indirettamente.
Note
Usando questo metodo, è possibile accedere alle proprietà di distribuzione dell'applicazione, ma .NET 7 non supporta l'equivalente dei metodi ApplicationDeployment.
Impostazioni di accesso
L'esempio di codice seguente mostra come accedere direttamente a due proprietà, ClickOnce_IsNetworkDeployed 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 una nuova opzione, -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 trustURLParameters su true per consentire all'applicazione di accedere a ActivationUri e ai parametri URL.