MSI在终端服务器上安装 - 获取错误自定义操作服务器被拒绝 - 错误的上下文
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSI在终端服务器上安装 - 获取错误自定义操作服务器被拒绝 - 错误的上下文相关的知识,希望对你有一定的参考价值。
尝试在终端服务器上安装软件时,我们收到以下错误。任何帮助表示赞赏。
msi安装日志显示以下错误:
MSI (s) (1C:04) [07:27:28:750]: Executing op: ActionStart(Name=InstallODBC,Description=Installing ODBC components,)
Action 7:27:28: InstallODBC. Installing ODBC components
MSI (s) (1C:04) [07:27:28:750]: Executing op: ODBCInstallDriver(DriverKey=Microsoft FoxPro VFP Driver (*.dbf),Component={612B3EFA-F178-4C50-A049-B99BE6DCACE0},Folder=C:WindowsSysWOW64,Attribute_=Driver,Value_=vfpodbc.dll)
1: Microsoft FoxPro VFP Driver (*.dbf) 2: {612B3EFA-F178-4C50-A049-B99BE6DCACE0} 3: C:WindowsSysWOW64 4: Driver 5: vfpodbc.dll 6: Setup 7: vfpodbc.dll 8: ConnectFunctions 9: YYN 10: SQLLevel 11: 0 12: APILevel 13: 0 14: FileUsage 15: 1 16: DriverODBCVer 17: 02.50 18: FileExtns 19: *.dbf,*.cdx,*.idx,*.fpt
MSI (s) (1C:5C) [07:27:28:750]: Generating random cookie.
MSI (s) (1C:5C) [07:27:28:766]: Created Custom Action Server with PID 1876 (0x754).
MSI (s) (1C:10) [07:27:28:797]: Running as a service.
MSI (s) (1C:10) [07:27:28:797]: Custom Action Server rejected - Wrong Context
MSI (s) (1C:5C) [07:27:28:797]: CA Server Process has terminated.
MSI (s) (1C:04) [07:27:28:797]: Failed to get IMsiCustomAction*
Action ended 7:27:29: InstallFinalize. Return value 3.
同时,进程监视器日志显示安装程序进程msiexec正在本地系统用户HKey_Users S-1-5-18上尝试RegOpenKey。并且显示的结果是BAD IMPERSONATION。
我查了KB3072630 - 但它不适用于我们的机器。另外,我尝试了MS解决方法来添加注册表项,这也没有帮助。
是的,这是一个经典问题 - 终端服务器识别自定义操作问题。你需要那个组件,还是你可以把它撕掉?我猜你已经做过测试了。更新:我发现你也需要它用于其他组件。
自从我查看终端服务器安装以来已经有好几年了,但MSI SDK上有一些简短的部分:
- Using Windows Installer with a Terminal Server。围绕每用户数据和自定义操作模拟存在许多挑战等等。如果你有一个团队正常照顾这个我会让他们这样做 - 否则浪费时间吗?
- 只是想添加上次我检查自修复通常在终端服务器上被禁用,因此你不能使用自我修复来为每个用户放置数据,除非你使用特殊的终端服务器手段这样做。
- There is a flag added to mark custom actions terminal server aware。一些自定义操作可能只是被禁用 - 因为它们可能会做一些永远无法工作的疯狂的东西。必须在每种情况下确定。
要禁用自定义操作:进行转换并将条件设置为
0
,或者如果已存在条件,请向其添加:AND 0
。这应该禁用自定义操作。 在Magic Number数据库中查找msidbCustomActionTypeTSAware
标志: https://www.magnumdb.com/search?q=msidbCustomActionTypeTSAwaremsidbCustomActionTypeTSAware = 0x00004000, // impersonate for per-machine installs on TS machines
(只显示这个资源,你看到上面第二个链接中的标志)
延迟自定义操作在本地系统的上下文中运行,除非该操作具有msidbCustomActionTypeTSAware属性。即使自定义操作在非终端服务器的系统上模拟用户,也是如此。请注意,如果具有msidbCustomActionTypeTSAware属性的自定义操作更改了用户的注册表,则安装程序不会自动确保在计算机上的每个用户的注册表中也进行这些更改。
所以我想你可以修改有问题的自定义操作的Custom Action Table条目,看看会发生什么。我想你添加了4000,如下所示:Custom Action In-Script Execution Options。据推测,添加的每用户数据不会进入所有用户配置单元。
以上是关于MSI在终端服务器上安装 - 获取错误自定义操作服务器被拒绝 - 错误的上下文的主要内容,如果未能解决你的问题,请参考以下文章
Wix 自定义卸载操作 - 如何在 msi 删除文件之前运行