通过web url启动ClickOnce应用程序在Windows 8中不起作用

时间:2012-11-14 14:54:17

标签: c# windows-8 clickonce

我们有一个应用程序套件,它通过启动器启动子应用程序。启动器通过带有查询字符串的ClickOnce Url调用其他应用程序。我们这样做的方式是通过以下代码:

 WebBrowser webBrowser1 = new WebBrowser();
 webBrowser1.Navigate(url);

我们使用以下代码使用客户端应用程序中的查询字符串:

 string url = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0];
            if (!isNetworkDeployed)
            {
                return false;
            }
            string queryString = (new Uri(url)).Query;

似乎queryString在Windows 8中总是为空。

然后根据MSDN我做了以下更改来获取查询字符串:

        private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();

        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
        }
        return (nameValueTable);
    }

当我通过浏览器(Internet Explorer)调用应用程序时,这似乎正常。但是当通过网络浏览器控件调用它时,它会产生clickonce错误。

有关于此的任何想法吗?

谢谢, Aneef

1 个答案:

答案 0 :(得分:0)

我在使用WebBrowser类时遇到了同样的问题,并尝试在Windows 8上导航到我们的clickonce .application文件。然后将.application文件下载然后在本地运行,导致找不到文件错误。在Windows 7及更低版本中,.application文件在服务器上执行,工作正常。

解决方法是在部署clickonce包时将-ProviderURL参数添加到mage。 ProviderURL的值是.application文件的完全限定路径。