MSI安装无法安装ODBC驱动程序:自定义操作服务器被拒绝 - 错误的上下文

时间:2016-02-19 17:10:39

标签: wix windows-installer

我的应用程序使用通过WiX创建的MSI安装程序。我有一个客户无法在使用终端服务器角色设置的Windows Server 2012 R2服务器上运行我的安装程序。安装日志报告错误消息:“自定义操作服务器被拒绝 - 错误的上下文”

MSI (s) (4C:24) [10:07:26:121]: Executing op: ActionStart(Name=InstallODBC,Description=Installing ODBC components,)
Action 10:07:26: InstallODBC. Installing ODBC components
MSI (s) (4C:24) [10:07:26:122]: Executing op: ODBCInstallDriver(DriverKey=AgWare Cache Driver,Component={BA124A73-5BF5-5263-9890-E7F0434F664B},Folder=c:\Program Files (x86)\AgWare\UAAR DataLog\,Attribute_=Driver,Value_=edbodbc.dll)
1: AgWare Cache Driver 2: {BA124A73-5BF5-5263-9890-E7F0434F664B} 3: c:\Program Files (x86)\AgWare\UAAR DataLog\ 4: Driver 5: edbodbc.dll 6: Setup 7: edbodbc.dll 
MSI (s) (4C:84) [10:07:26:123]: Generating random cookie.
MSI (s) (4C:84) [10:07:26:125]: Created Custom Action Server with PID 23664 (0x5C70).
MSI (s) (4C:80) [10:07:26:155]: Running as a service.
MSI (s) (4C:80) [10:07:26:159]: Custom Action Server rejected - Wrong Context
MSI (s) (4C:84) [10:07:26:162]: CA Server Process has terminated.
MSI (s) (4C:24) [10:07:26:164]: Failed to get IMsiCustomAction*
Action ended 10:07:26: InstallFinalize. Return value 3.

我发现Microsoft的这个安全公告改变了一些可能影响我的MSI行为: https://support.microsoft.com/en-us/kb/3072630

我似乎无法找到如何更改我的安装程序以解决此问题。有一些解决方法可以解决关闭安全补丁的问题。我不想那样做。我想修复我的安装程序,所以这不是问题。

我的安装似乎在其他位置运行正常Windows 7,8,8.1和10都可以。我还有一个2012 R2测试服务器,没有设置终端服务角色。我可以毫无问题地安装在那里。

我的WiX代码非常简单:

<Component Id="C.edbodbc.dll" Guid="*">
  <File Id="F.edbodbc.dll" Source="..\runtime resources\edbodbc.dll" KeyPath="yes" >
    <ODBCDriver Id="ODBC_ELEVATEDB" Name="AgWare Cache Driver" />
  </File>
</Component>      

我甚至不确定我可以在设置代码中更改哪些内容有所不同。

以下是处理ODBC安装的日志文件的另一部分。我不知道这是否相关。这是在上面记录的错误之前的日志中。

MSI (s) (4C:24) [10:07:21:589]: Doing action: SetODBCFolders
MSI (s) (4C:24) [10:07:21:589]: Note: 1: 2205 2:  3: ActionText 
Action 10:07:21: SetODBCFolders. Initializing ODBC directories
Action start 10:07:21: SetODBCFolders.
MSI (s) (4C:84) [10:07:21:591]: Generating random cookie.
MSI (s) (4C:84) [10:07:21:593]: Created Custom Action Server with PID 27244 (0x6A6C).
MSI (s) (4C:FC) [10:07:21:619]: Running as a service.
MSI (s) (4C:80) [10:07:21:621]: Hello, I'm your 32bit Impersonated custom action server.
MSI (s) (4C:24) [10:07:21:623]: LocalSQLInstallDriverEx returned 1 in remote context.
MSI (s) (4C:24) [10:07:21:623]: For 32-bit 'AgWare Cache Driver' the ODBC API returned 0.  rgchPathOut = 'C:\Windows\SysWOW64', dwOldUsage = 0
MSI (s) (4C:24) [10:07:21:623]: ODBCINSTALLDIR folder has not been set.
MSI (s) (4C:24) [10:07:21:623]: Note: 1: 2205 2:  3: ODBCTranslator 
MSI (s) (4C:24) [10:07:21:623]: Note: 1: 2228 2:  3: ODBCTranslator 4: SELECT `ComponentId`,`Description`,`Directory_`, `ActionRequest`, `Installed`, `Attributes` FROM `ODBCTranslator`, `Component` WHERE `ODBCTranslator`.`Component_` = `Component` AND (`ActionRequest` = 1 OR `ActionRequest` = 2) 
Action ended 10:07:21: SetODBCFolders. Return value 0.

1 个答案:

答案 0 :(得分:0)

您尚未发布自定义操作定义,因此我们不知道它是否被模拟,但我认为您应该查看自定义操作中的TerminalServerAware设置,看看它是否是您需要的。