【问题标题】:Deploying application with .NET framework without admin privileges在没有管理员权限的情况下使用 .NET 框架部署应用程序
【发布时间】:2018-02-20 13:13:45
【问题描述】:

免责声明:如果此问题不属于 SO,请提示将其移至何处。

大家好,

我工作的公司开发了一个应用程序,随着时间的推移积累了一堆依赖项:

  • .NET 3.5 更新
  • .NET 4.0 更新
  • VC++ Redist 2010
  • VC++ Redist 2013
  • VC++ Redist 2015
  • 我们的专有设备驱动程序

然后将所有内容打包到 Inno Setup 可执行文件中并分发给客户端。最近,有人指出需要自动更新机制,这导致我们遇到权限问题。以下是我需要满足的一些产品需求(但不知道如何满足):

  • 安装程序(和产品)必须支持旧版硬件和软件(读取为 Windows XP 及更高版本)
  • 安装(包括自动更新安装)可能需要管理员登录一次(在首次安装期间)。这意味着自动更新安装程序必须能够在非管理员帐户下静默运行。
  • 安装程序应安装到 {commonappdata} 文件夹(锁定),并且最终应用程序的行为应相同
  • 依赖项必须包含在应用程序安装程序中。它们不需要包含在自动更新安装程序中。

乍一看,这似乎微不足道,但我尝试的每一种组合,在安装期间或更新时都会遇到“拒绝访问”消息。有谁知道这样做的可靠方法吗?

【问题讨论】:

    标签: .net windows installation inno-setup


    【解决方案1】:

    如果没有管理员权限,您无法更新安装到仅管理员文件夹的应用程序。

    实现此类应用程序自动更新的唯一方法是实现 Windows 更新、Mozilla 维护服务、Google Chrome 提升服务、Adobe Acrobat 更新服务和类似服务所做的:

    • 使用管理员权限首次安装时,安装具有管理员权限的服务。
    • 要么让服务本身定期检查更新并启动自动更新;
    • 或者,如果您需要以其他方式触发更新,请为某人(例如,在没有管理员权限的情况下运行的应用程序本身)可以调用的服务实现 API 以触发自动更新。

    将具有管理员权限的服务安装到客户端系统是一个巨大的漏洞。因此,如果您决定这样做,请确保 200% 正确,不要在客户端系统中引入漏洞。


    相关问题:

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 2011-04-07
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 2014-03-17
      • 2021-07-10
      相关资源
      最近更新 更多