使用没有管理员权限的.NET框架部署应用程序

时间:2018-02-20 13:13:45

标签: .net windows installation inno-setup

免责声明:如果此问题不属于SO,请在提示位置留言。

大家好,

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

实现此类应用程序自动更新的唯一方法是实现Windows Update和类似工具的功能:

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

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