错误LGHT0301:无法打开数据库

时间:2013-02-12 19:27:41

标签: wix wix3.5

我正在使用WiX 3.5。最近,在构建服务器上经常出现以下WiX错误:

  

light.exe(,):错误LGHT0301:无法打开数据库。在验证期间,最常发生在尝试使用不受支持的代码页或不是有效Windows Installer数据库的文件打开数据库时。请使用Module / @ Codepage,Package / @ SummaryCodepage,Product / @ Codepage或WixLocalization / @ Codepage中的其他代码页;或确保提供有效Windows Installer数据库的路径。

错误指的是哪个“数据库”?(没有一个WiX源文件长时间发生变化,所以我怀疑这是代码页问题。)

Other people报告此错误可能是由构建服务器上安装的趋势科技Office Scan引起的。我要求系统管理员从扫描中排除构建目录,但仍会出现此错误。 如何确定病毒扫描程序是否是罪魁祸首?(错误并不总是发生,所以如果我禁用病毒扫描程序并且下一次构建成功,我仍然不知道是否有错误永远消失了。)

7 个答案:

答案 0 :(得分:17)

“禁用ICE验证”对我有用 - 只需通过.Setup中的Visual Studio 2012进行设置。

答案 1 :(得分:13)

在研究了WiX源代码并运行Process Monitor之后,我发现从病毒扫描中排除构建目录是不够的。

说明:当light.exe运行时,它会在临时目录中创建目标MSI文件。 (此文件是LGHT0301错误消息引用的数据库。)在light.exe关闭MSI文件后,ntrtscan.exe将打开MSI文件以进行读取访问和只读共享。稍后,在数据库验证步骤中,light.exe尝试重新打开MSI文件以进行读/写访问,并发生共享冲突。

解决方案:从实时病毒扫描中排除临时目录。例如,在Windows Server 2008上,此目录为C:\Users\«username»\AppData\Local\Temp

答案 2 :(得分:3)

这是构建过程和防病毒的常见问题。扫描仪将检测新的MSI包并尝试扫描它。同时,构建过程也会尝试通过运行Internal Consistency Evaluators(ICE)套件来验证它,并且由于数据库上有互斥锁而导致失败。

您应该只从构建输出文件夹中删除病毒扫描。或者,将验证与Light命令分离,以便防病毒扫描在运行ICE验证之前放弃MSI句柄。

答案 3 :(得分:3)

我遇到的问题实际上与我的系统的代码页和语言设置有关。

在Windows的区域设置中添加英语输入语言解决了我的德语Windows安装问题。

答案 4 :(得分:2)

真正的原因是Trend Micro real time scanning

(以下仅供历史参考)

我跟着@Michael Liu回答并解决了问题


我遇到了同样的问题。

我不是指任何这些标签中的Codepage(或SummaryCodepage),或者实际上是指WXS中的任何位置。放置Codepage =“1252”没有改变任何东西。

最后,我尝试添加

encoding="utf-8"

以前只有version ='1.0'属性的XML标记。这解决了问题,如 "Failed to open the database" error. - SOLVED

中所述

答案 5 :(得分:1)

这也是我的防病毒程序。

检查问题是否与防病毒程序有关的一种简单方法是在WiX项目设置中禁用ICE验证(使用版本3.7)。这对我有用,现在是一个永久性的设置,因为在我们公司你不能改变防病毒软件的设置。

答案 6 :(得分:-1)

这是我在使用WiX时发现的最常见错误。最简单的解决方案是转到项目的属性→工具设置→(检查)抑制ICE验证