3

我们的用户从开始菜单/桌面快捷方式运行我们的 ClickOnce WPF应用程序。当应用程序每次启动时,我们都需要获取最初下载它的 URL。我尝试使用 ActivationUri,但这仅在直接从网站 setup.exe 而不是桌面/开始菜单快捷方式运行时才有效:

string activationUri = "???";
try
{
    if (System.Deployment.Application.ApplicationDeployment.CurrentDeployment == null)
    {
        activationUri = "currentDeployment is null";
    }
    else if (System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri == null)
    {
        activationUri = "deployment not null but uri is";
    }
    else if (System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri != null)
    {
        activationUri =
            System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri.AbsoluteUri;
    }
}
catch (Exception ex)
{
    activationUri = ex.Message;
    //Error getting the URL so put question mark
}

MessageBox.Show(activationUri);

从设置(从网站)运行时,我会得到 URL,每隔一次我会得到“部署不为空,但 URI 是”。

4

3 回答 3

8
ApplicationDeployment.CurrentDeployment.ActivationUri

如果您激活“发布清单”选项中的“允许将 URL 参数传递给应用程序”复选框,则不为空。

否则使用ApplicationDeployment.CurrentDeployment.UpdateLocation

于 2013-10-24T07:26:42.417 回答
2

尝试ApplicationDeployment.UpdateLocation属性。除非您在 Visual Studio 中的项目属性 -> 发布 -> 更新 -> 更新位置中配置了不同的更新 URL,否则它应该返回原始部署 URL。

于 2012-04-19T12:44:21.823 回答
1

我认为您所能做的就是在应用程序第一次下载和运行时将 URI 保存在某处,然后在应用程序脱机运行时引用此值。

于 2012-04-17T14:46:58.380 回答