如何使用安装项目创建不需要管理员访问权限的 Windows 安装程序 MSI?

Posted

技术标签:

【中文标题】如何使用安装项目创建不需要管理员访问权限的 Windows 安装程序 MSI?【英文标题】:How can I create a windows installer MSI that does not require admin access using setup project? 【发布时间】:2021-12-26 14:53:25 【问题描述】:

这个问题帮助我创建了一个 MSI 文件 - https://docs.microsoft.com/en-us/answers/questions/256664/is-it-possible-to-create-a-setup-filemsi-in-visual.html 现在,我如何创建不需要管理员权限的安装程序?

【问题讨论】:

您认为系统允许非管理员安装软件是明智的吗? @FranzGleichmann 我必须创建一个 MSI 安装程序,无需输入管理员凭据即可为我的组织中的标准用户安装,这可能吗?如果是,我该如何创建这样的 msi?谢谢。 看这里:reddit.com/r/sysadmin/comments/7bt5jb/… 更好的解决方案可能是通过域推出 msi - 向本地 Windows 网络管理员寻求帮助 @absolutealgorithm 一种方法是使用 WiX 工具集而不是 Microsoft Visual Studio 安装程序安装项目并使用 non-Admin 安装。 【参考方案1】:

免责声明:MSI 是一项古老的技术,其按用户(非管理员设置)的实现并不理想(severe technical limitations / restrictions强>、poor servicing for patching and upgradesetc...)。我建议使用其他一些部署机制,例如MSIX or AppV。


Non-Admin MSI / Per-User MSI:尽管如此,这里有一些关于每用户安装主题的 cmets 以及使用 WiX 制作的示例:

WiX 示例:https://github.com/glytzhkof/WiXPerUserSample On the topic of per-user MSI installations(操作方法、困难和特点) Having an issue with WIX upgrade Understanding “Per-User” or “Per-Machine” context for application Setup packages You must adhere to a number of restrictions for the MSI

【讨论】:

【参考方案2】:

Windows Installer 项目将创建一个 MSI 文件,允许用户在安装过程中选择安装类型、按用户或按机器。

Windows 安装程序根据 ALLUSERS 属性的值、MSIINSTALLPERUSER 属性的值和操作系统。

ALLUSERS 属性的值在安装时确定安装上下文。

1ALLUSERS 属性值指定 per-machine 安装上下文。

空字符串 ("") 的 ALLUSERS 属性值指定 per-user 安装上下文。

因此,在 Windows Installer 项目 中,您需要将 ALLUSERS 属性定义为空字符串,以便进行 per-user 安装。请确保生成的安装程序不包含在 HKLM 上创建的任何注册表,或不将任何文件安装在需要管理员权限的位置(例如 ProgramFiles)。由于安装程序没有管理员权限,安装会失败。

【讨论】:

以上是关于如何使用安装项目创建不需要管理员访问权限的 Windows 安装程序 MSI?的主要内容,如果未能解决你的问题,请参考以下文章

win10激活时(管理员权限运行)报 0x80070005 拒绝访问:所请求的操作需要提升

安装软件无法获得管理员权限?

我们如何创建不需要管理员权限的安装程序?

已经用管理员账户登录WIN7在安装oracle 10g xe时提示权限不够,需要用管理员账户进行安装?如何解决

WIN10系统访问局域网中其他电脑要怎么输入网络凭据?

如何提升windows7的权限