存取 Windows 上 .NET 的 ClickOnce 部署屬性
從 .NET 7 和 Visual Studio 2022 17.4 版開始,您可以使用環境變數來存取 ClickOnce 部署屬性。
應用程式啟動器會與正在啟動的應用程式共用 ClickOnce 應用程式部署屬性 (僅限 .NET)。 屬性會使用環境變數來與應用程式共用。
變數名稱與 .NET Framework ApplicationDeployment 類別中的屬性緊密相符。 新的變數名稱包含 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 方法的同等項。
存取屬性
下列程式碼範例示範如何直接存取兩個屬性: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 參數。