代码之家  ›  专栏  ›  技术社区  ›  gillonba

在Vista中自动更新我的.NET应用程序,无需管理员权限

  •  0
  • gillonba  · 技术社区  · 17 年前

    我知道有很多关于如何在.NET应用程序中实现自动更新的问题,我可能已经阅读了其中的大部分。不幸的是,据我所知,我所见没有一个完全符合我的情况。

    我正在尝试构建一个自我更新的.NET应用程序,它将在用户帐户有限的环境中运行。这里没有管理员权限。该应用程序必须在Vista和XP上运行,并且可能会在推出时赢得7分。X-copy部署就可以了。我不想用click一次

    到目前为止,我尝试过一个应用程序检查清单并下载更新后的二进制文件的系统,这在开发中很有用,但在安装应用程序时就没有这么多了。Vista拒绝让我把文件复制到程序文件。在那之后,我尝试下载一个更新的.msi,除了msi有一个UAC提示外,它工作正常——如果用户没有具有本地管理权限的帐户,则不执行。

    一些帖子建议在appdata中运行程序并使用x-copy方法可能有效,但我没有看到任何人说他们已经尝试过了,而且它确实有效。这对没有管理权限的帐户有效吗?在我开始写更多的代码之前,有人能担保这个方法吗?

    2 回复  |  直到 11 年前
        1
  •  3
  •   Will Dean    17 年前

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

    程序文件没有什么神奇之处,除了非特权用户不能写入(默认情况下)。

    如果有管理员执行初始安装,则可以更改“程序文件”文件夹的权限,以便后续升级可以覆盖这些文件。但这并不符合事物的精神。

    ClickOnce的主要缺点是不常见的安装位置和原始的安装程序-如果你无论如何都要做xcopy到一个奇怪的地方,那么你已经有了很多关于ClickOnce的讨厌之处,没有任何优势。

        2
  •  1
  •   Idzy    11 年前

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

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