Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation MSI安装和UAC_Installation_Wix_Windows Installer - Fatal编程技术网

Installation MSI安装和UAC

Installation MSI安装和UAC,installation,wix,windows-installer,Installation,Wix,Windows Installer,我们的产品安装使用WiX构建。 它需要在服务器上执行,并且由于其性质,需要创建用户并分配此用户特定的权限(例如,作为服务执行) 为此,我们使用我们自己的自定义操作,这些自定义操作是在基于C的自定义操作库中定义的 当我们由具有管理权限但在Windows 2008上不是管理员的用户启动安装时,系统不会要求我们确认是否希望执行此应用程序(未显示UAC对话框)。 因此,所有这些操作都会失败,因为MSI似乎在没有管理权限的情况下运行。 我们不能延迟我们的操作,因为其中一些操作需要在UI序列期间执行,并且需

我们的产品安装使用WiX构建。 它需要在服务器上执行,并且由于其性质,需要创建用户并分配此用户特定的权限(例如,作为服务执行) 为此,我们使用我们自己的自定义操作,这些自定义操作是在基于C的自定义操作库中定义的

当我们由具有管理权限但在Windows 2008上不是管理员的用户启动安装时,系统不会要求我们确认是否希望执行此应用程序(未显示UAC对话框)。 因此,所有这些操作都会失败,因为MSI似乎在没有管理权限的情况下运行。 我们不能延迟我们的操作,因为其中一些操作需要在UI序列期间执行,并且需要标记为“立即”

我们如何将安装程序标记为需要管理权限的安装程序? 我们尝试了WiX属性InstallPrivileges='highted',但文档说它是默认设置的,没有任何区别


谢谢

您不能直接标记MSI以请求管理员权限。但是,您可以尝试使用通过清单请求提升的EXE引导程序:

更好的方法是拆分自定义操作,而不是执行所有操作的单个操作:

  • 使用从UI收集数据的即时自定义操作
  • 使用“延迟”,而不使用使用该数据的模拟自定义操作

UI自定义操作收集的信息可以存储在安装程序属性中。这些属性可以通过操作数据(CustomActionData属性)传递到延迟操作。

我在安装中使用InstallPrivileges='Highted',它在Windows 2008上显示UAC对话框。你看到“安装”按钮上的屏蔽图标了吗?

是的,我知道。谢谢提醒。我认为有一种方法不需要这样做。使用bootstrapper,如何使用卸载/修复功能-他们还需要删除用户或在手动删除用户的情况下重新创建用户?我们知道修复/卸载将直接启动,而不使用引导程序,这将导致同样的问题。不是吗?如果您想维护用户及其权限,安装在维护期间还需要管理员权限。在维护期间很难使用引导程序。如果您确实需要,高级安装程序具有此功能。我用另一个建议编辑了我的帖子。谢谢,这可能是我们要选择的一种方法-将动作标记为非模拟。这肯定会限制一些功能。例如,我们在UI序列期间验证用户是否存在,是否可以创建用户等。但我们似乎需要把这些都转移到延期部分。不,我不知道。我还使用InstallPrivileges='Highted',它不显示屏蔽图标。不知道为什么。我刚刚仔细检查了我在Windows 2008上的安装,InstallPrivileges=“Highted”可以正常工作。如果使用日志记录运行,您应该在日志中看到:“计算机策略值'AlwaysInstallHighted'为0”“用户策略值'AlwaysInstallHighted'为0”然后在后面显示:“MSI_LUA:提供了提升的凭据许可。安装将运行提升”我还注意到:“产品安装将被提升,因为用户提供的提升凭据和产品是每台机器安装的。”您是“每台机器”安装的吗?是的,我们是每台机器安装的,我们没有获得提升窗口。您是否在日志中看到上述消息?日志中显示了不同的消息”MSI_LUA:正在将AdminUser属性设置为1,因为这是客户端或用户已允许提升“。但没有要求我允许提升