Skip to main content
 首页 » 编程设计

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

2024年01月01日52myhome

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