【发布时间】:2016-09-23 16:34:48
【问题描述】:
我在这里有一个奇怪的效果。 我正在尝试使用 DTF 程序集打开现有的 MSI 文件,它返回错误代码 110 (ERROR_OPEN_FAILED)。如果我试图通过 MsiGetLastErrorRecord 获取最后一个错误 - 它返回 0,即没有错误。
为了实验,我尝试直接使用 WinAPI(从 C++ 应用程序)打开同一个文件,它工作正常。
据我所知,很多人都在使用 DTF,我想它没有错误,所以应该是我的系统/配置有问题。
我正在使用带有 .NET 4.5 的 Windows 10 和 VS2012
任何提示,可能是什么?
PS:实际上,从一开始我就尝试自己互操作 WinAPI,我得到了这个结果。使用 DTF 是为了说明我最终错误的交互选项。
更新:我用 ProcessMonitor 检查了执行情况,发现 CreateFile 因共享违规而失败: 所需访问权限:通用读/写 处置: 开放 选项:同步 IO 非警报、非目录文件 属性:N 共享模式:阅读 分配大小:不适用
更新 2:这是最愚蠢的错误之一。问题是因为打开了数据库的属性是从设计模式触发的。 现在问题解决了。谢谢大家的帮助!
【问题讨论】:
-
看起来您的更新应该是一个答案:该文件已在其他地方打开。如果这让您感到惊讶,您应该添加有关该场景的更多详细信息,包括您认为它不应该已经打开的原因。
-
我同意迈克尔的观点,文件必须锁定。您也可以发布您使用的实际代码吗?您是否尝试以只读方式打开文件?
标签: c# .net wix windows-installer