在没有管理员权限的情况下使用 .NET 框架部署应用程序
Posted
技术标签:
【中文标题】在没有管理员权限的情况下使用 .NET 框架部署应用程序【英文标题】:Deploying application with .NET framework without admin privileges 【发布时间】: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 文件夹(锁定),并且最终应用程序的行为应相同 依赖项必须包含在应用程序安装程序中。它们不需要包含在自动更新安装程序中。乍一看,这似乎微不足道,但我尝试的每一种组合,在安装期间或更新时都会遇到“拒绝访问”消息。有谁知道这样做的可靠方法吗?
【问题讨论】:
【参考方案1】:如果没有管理员权限,您无法更新安装到仅管理员文件夹的应用程序。
实现此类应用程序自动更新的唯一方法是实现 Windows 更新、Mozilla 维护服务、Google Chrome 提升服务、Adobe Acrobat 更新服务和类似服务所做的:
使用管理员权限首次安装时,安装具有管理员权限的服务。 要么让服务本身定期检查更新并启动自动更新; 或者,如果您需要以其他方式触发更新,请为某人(例如,在没有管理员权限的情况下运行的应用程序本身)可以调用的服务实现 API 以触发自动更新。将具有管理员权限的服务安装到客户端系统是一个巨大的漏洞。因此,如果您决定这样做,请确保 200% 正确,不要在客户端系统中引入漏洞。
相关问题:
Choose right Windows directory to install software and allow auto-updates How to automatically update an application installed with Inno Setup【讨论】:
以上是关于在没有管理员权限的情况下使用 .NET 框架部署应用程序的主要内容,如果未能解决你的问题,请参考以下文章
在 Excel VBA 中调用没有管理权限的 COM 互操作 regasm
尝试在没有太多运气的情况下部署实体框架代码优先应用程序?最佳部署策略?