我为一家生产商业产品的公司工作,我们目前正在努力提供一种解决方案,使我们的一些大客户能够通过ClickOnce分发我们应用程序的客户端。

目的是我们的客户将ClickOnce安装部署到网络共享,然后通过电子邮件或其他方式向客户发送应用程序清单的链接。

我们已经能够成功地将ClickOnce安装的生产集成到我们的自动构建中(使用Mage命令行工具),然后我们就可以在客户端计算机上成功运行实际安装。但是,在安装和启动之后,我们的应用程序在运行时抛出SecurityException,因为它被拒绝访问FileIOPermission。我们的应用程序需要FullTrust权限,但似乎如果执行程序集的CodeBase位置是网络共享,则只授予LocalIntranet权限(不包括FileIOPermission)。

这里有一篇文章似乎表明这是一个非常常见的问题: http://blogs.msdn.com/shawnfa/archive/ 2004/12/30 / 344554.aspx

本文使用CasPol工具提供了一种解决方法,但我们必须在部署环境中的每台客户端计算机上运行此方法。这本身并不是一个问题,更重要的是,您需要客户端计算机上的管理员权限来执行CasPol工具以及我们的大多数客户端所做的事情。客户的环境赢得了这些特权。

一篇文章也发表在同一博客上,似乎暗示运行CasPol修复程序的需求已经通过.NET 3.5 SP1的发布得到了缓解: http://blogs.msdn。 COM / shawnfa /存档/ 2008/05/12 / fulltrust - 上的-localintranet.aspx

但是,我修改了我们的应用程序以专门针对框架的SP1版本,如本文所述: http://msdn.microsoft.com/en-us/library/bb398202的.aspx#

执行此操作后,我们仍然遇到相同的SecurityException。所以我然后应用了文章中详述的一些特定的SP1 ClickOnce设置,但仍然没有乐趣。 如果我直接从发布网络共享启动应用程序我授予了权限,那么似乎只有在ClickOnce的上下文中我们才会拒绝它们。

还有其他人遇到类似这些的问题吗?我想如果框架的SP1版本中存在关于这些权限的问题,其他人会在我们之前注意到它,因为我们还没有发布ClickOnce解决方案。

有帮助吗?

解决方案

我想我在.NET 4.0上遇到过类似的问题,在午餐时有安全例外。我找到的解决方案是使用已批准的证书对清单进行数字签名(而不是默认的一个visual studio为您的项目生成)。

这是一个已知的“bug”。 (或通过设计)在ClickOnce部署的清单上。

您的项目是否已签署?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top