我们有一个应用程序套件,它通过启动器启动子应用程序。启动器通过带有查询字符串的 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) 调用应用程序时,这似乎有效。但是当通过网络浏览器控件调用相同的 url 时,它会出现 clickonce 错误。
对此有什么想法吗?
谢谢, 阿尼夫
请您参考如下方法:
我在使用 WebBrowser 类并尝试在 Windows 8 上导航到我们的 clickonce .application 文件时看到了同样的问题。该 .application 文件将下载然后在本地运行,导致文件未找到错误。在 Windows 7 及更低版本中,.application 文件在服务器上执行,工作正常。
解决方法是在部署 clickonce 包时向 mage 添加 -ProviderURL 参数。 ProviderURL 的值是您的 .application 文件的完全限定路径。
