2

我们有一个应用程序套件,它通过启动器启动子应用程序。启动器通过带有查询字符串的 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;

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

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

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

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

当我通过浏览器(Internet Explorer)调用应用程序时,这似乎正在工作。但是当通过 Web 浏览器控件调用相同的 url 时,它会给出 clickonce 错误。

对此有什么想法吗?

谢谢,阿尼夫

4

1 回答 1

0

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

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

于 2013-04-05T21:25:28.790 回答