2009-04-16 67 views
0

我知道有很多关于如何在.NET应用程序中实现自动更新的问题,而且我可能已经阅读了其中的大部分内容。不幸的是,据我所知,没有人看到我的情况非常合适。在没有管理员权限的情况下在Vista中自动更新我的.NET应用程序

我试图建立,将在有限的用户帐户的环境中运行自更新.NET应用程序。这里没有管理员权限。该应用程序必须在Vista和XP上运行,并可能在Win 7出现时运行。 X-copy部署会很好。我宁愿不使用点击一次

到目前为止,我已经尝试了应用程序检查清单和下载更新的二进制文件,这是安装应用程序时,开发伟大的工作,但没有这么多的系统。 Vista拒绝让我将文件复制到Program Files。之后,我试着下载一个更新的.msi,除了MSI有一个UAC提示符之外,它工作正常 - 如果用户没有具有本地管理员权限的帐户,则不会执行。

有些岗位提出,在运行应用程序数据的程序,并使用X-复制方法可能会奏效,但我还没有看到任何人说,他们已经尝试过了,它的工作。这将适用于没有管理员权限的帐户吗?在我开始编写更多代码之前,任何人都可以为此方法担保吗?

+1

任何原因你会回避ClickOnce?这对于这种场景来说非常完美。 – 2009-04-16 22:19:24

回答

3

你只需要确保你“安装”(即复制到)的非特权用户可以访问的位置。

没有什么神奇的有关程序文件只是一个非特权用户无法写入它(默认情况下)。

如果你有一个管理员做你的初始安装,那么你就可以改变你的Program Files文件夹的权限,以便随后的升级可能会覆盖这些文件。但这不符合事物的精神。

ClickOnce的主要缺点是不常见的安装位置和原始安装程序 - 如果您打算将xcopy变成奇怪的地方,那么您已经拥有很多关于ClickOnce的内容,没有任何优势。

0

虽然相当复杂,但其中一种策略是创建一个作为本地系统运行的Windows服务。以管理用户身份安装一次,然后让此服务下载更新并将其复制到程序文件目录。

您可能还需要制作某种用户界面才能在更新过程中显示进度和状态。很容易通过WCF服务或类似的方式公开它。

相关问题