我们有一个应用程序套件,它通过启动器启动子应用程序。启动器通过带有查询字符串的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
答案 0 :(得分:0)
我在使用WebBrowser类时遇到了同样的问题,并尝试在Windows 8上导航到我们的clickonce .application文件。然后将.application文件下载然后在本地运行,导致找不到文件错误。在Windows 7及更低版本中,.application文件在服务器上执行,工作正常。
解决方法是在部署clickonce包时将-ProviderURL参数添加到mage。 ProviderURL的值是.application文件的完全限定路径。