安装程序在安装此软件包时遇到意外错误 - 。错误代码 2896

The installer has encountered an unexpected error installing this package - .Error code 2896

我目前正在尝试在生产服务器上安装 ravendb。我正在使用的许可证文件与另一个 test/prod 服务器使用的相同。

当我将许可证文件传递给安装程序时,安装程​​序似乎总是崩溃。

我在日志文件中发现有趣的是这个。

Action start 08:14:02: OpenLicenseFileChooser.
MSI (c) (AC:A8) [08:14:02:763]: Invoking remote custom action. DLL: C:\Users\prod\AppData\Local\Temp\MSI7901.tmp, Entrypoint: OpenLicenseFileChooser
MSI (c) (AC!30) [08:14:04:934]: PROPERTY CHANGE: Adding RAVEN_LICENSE_FILE_PATH property. Its value is 'C:\license.xml'.
Action ended 08:14:04: OpenLicenseFileChooser. Return value 1.
MSI (c) (AC:F0) [08:14:04:950]: Doing action: LicenseFileExists
Action 08:14:04: LicenseFileExists. 
Action start 08:14:04: LicenseFileExists.
MSI (c) (AC:20) [08:14:04:997]: Invoking remote custom action. DLL: C:\Users\prod\AppData\Local\Temp\MSI81BD.tmp, Entrypoint: LicenseFileExists
MSI (c) (AC!FC) [08:14:05:231]: PROPERTY CHANGE: Deleting RAVEN_LICENSE_VALID property. Its current value is 'False'.
MSI (c) (AC!FC) [08:14:05:231]: PROPERTY CHANGE: Adding RAVEN_INSTALLER_INFO property. Its value is 'Checking existing license file'.
Action ended 08:14:07: LicenseFileExists. Return value 3.
DEBUG: Error 2896:  Executing action LicenseFileExists failed.
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2896. The arguments are: LicenseFileExists, , 
Action ended 08:14:07: WelcomeDlg. Return value 3.
MSI (c) (AC:1C) [08:14:07:281]: Doing action: CustomFatalError
Action 08:14:07: CustomFatalError. 
Action start 08:14:07: CustomFatalError.

license文件的路径是正确的,为什么会失败?

可以使用许可证文件的test/prod台服务器的数量是否有限制,如果有,我如何查看可以使用此许可证文件的服务器数量?

如果不是这样,我是否遗漏了任何依赖项? - 它需要访问互联网吗? - 是否需要安装其他东西?

除此之外我还注意到了这一行

The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2896. The arguments are: LicenseFileExists, ,

这说明了什么?

许可:我敢打赌这很简单 - 像您提出的许可问题。我同意 Vadim 的观点,您应该将 license.xml 放在其他地方 - 具有写入权限。也许只是创建一个名为 RavenDBLicense 的新文件夹 - 在某个地方 - 并确保它对于 systemadministrators 是可写的 - 至少。例如 c:\RavenDBLicense - 仅用于测试。

那个 license.xml 文件中是否有任何机器特定用户特定的内容?


更新:我看到你在他们的论坛上得到了答案,说明了这个解决方案:https://ravendb.net/docs/article-page/3.5/csharp/server/configuration/license-registration.

还有一个关于 how to run the installer 的部分 - 我假设您很熟悉。


调试:也许最好先尝试最大化可用的日志信息 - 如果可能的话。我会尝试这两种方法,看看是否能找到更好的线索来了解正在发生的事情。

事件查看器:我想您可能想检查 Windows 事件中是否记录了任何错误消息查看器?按住 Windows Key,点击 R,输入 eventvwr.msc 然后回车。转到 Windows Logs => Applications。寻找 MsiInstaller events。我不认为你会找到任何东西,但值得一看。还要查找与 ravendb 相关的其他事件。还要检查其他日志(安全、系统、配置)。

高级日志记录:您还可以打开高级日志记录并为 MSI 安装捕获更多调试信息,如下所示:

msiexec.exe /i MySetup.msi /L*vx C:\Test.log

这应该比您当前的日志捕获更多信息。您还可以将 ! 添加到日志开关,使其成为 /L*vx!,这将连续而不是分批写入日志,以确保不会因崩溃而丢失日志缓冲区。这使得安装 很多 变慢,但可以捕获关键的调试信息,以防有问题的自定义操作崩溃。


部分链接:

基本问题似乎是自定义操作 LicenseFileExists 失败。这并不意味着路径错误,但确实意味着代码失败。错误 2896 表示 "the action has failed"。

因此,如果不了解代码的作用,就不可能真正诊断出失败的原因。假设代码实际上是完全正确的,可能存在安全问题,因为 UI 序列中 运行 的自定义操作不会 运行 提升,并且可能不允许访问文件.