我使用WiX 3.6构建了一个Windows Installer程序包,它嵌入了自定义托管(C#)操作.
在此阶段,安装需要
实际上我无法绕过需求#1,因为托管操作只能在SharePoint安装程序帐户的上下文中运行时执行某些步骤.
我想删除需求#2并让安装程序正常运行,即使启用了UAC也是如此.
我已经对这个问题进行了相当广泛的研究,但仍然无法使其发挥作用.我已经在我的软件包中设置了InstallScope ="perMachine",这似乎正确地提示UAC提升,但安装程序仍然因臭名昭着的2869错误而失败.
主要问题是我的自定义操作配置了Impersonate ="yes",因为它必须在当前用户的上下文中运行,而不是本地管理员帐户.当我在线搜索时,几乎所有"修复"都指向自定义操作中的Impersonate ="no",但这对我来说不是一个选项.
因此,我的问题是:有没有办法使用当前用户的身份运行自定义托管操作,而无需完全禁用UAC?
当您使用“ Impersonate="yes"自定义”操作时,将使用当前登录用户的凭据在没有管理特权的情况下运行。
当Impersonate="no"您的“自定义”操作在“ 系统”上下文中运行时。在系统上下文中运行时,自定义操作具有对系统的完全访问权限。
从WiX CustomAction元素文档中,Impersonateattribute:
此属性指定在执行此自定义操作时,是否作为本地系统执行的Windows Installer应该模拟安装用户的用户上下文。通常,该值应为“是”,除非自定义操作需要提升的特权才能将更改应用于计算机。