我有一个使用Visual Studio 2008构建的部署项目无法安装。它使用默认的GUI。转换到“进度”页面时发生错误。 GUI错误消息是:
从文件F:\ Packages \ Test \ Release \ Test.msi读取时出错。验证文件是否存在以及您是否可以访问它。
如果我使用/l*
从命令行运行MSI,我会收到很多关于GUI元素大小不正确的错误,例如:
DEBUG:错误2826:对话框WelcomeForm上的控件Line1超出了对话框的边界,向右移动了3个像素 安装程序在安装此程序包时遇到意外错误。这可能表明此包装存在问题。错误代码是2826.参数是:WelcomeForm,Line1,在右边
我还得到了运行时显示的更详细的错误版本:
MSI(c)(08:EC)[17:06:27:026]产品:测试 - 错误1305.从文件F:\ Packages \ Test \ Release \ Test.msi读取错误。系统错误1008.验证文件是否存在以及您是否可以访问它。
其他MSI文件在此计算机上使用相同的用户帐户,该帐户是本地Administrators组的成员。整个Release \文件夹将SYSTEM设置为完全控制。 C:\ WINDOWS \ TEMP和C:\ Documents and Settings \ username \ Local Settings \ Temp都将SYSTEM设置为完全控制。
PC运行Windows XP SP2 32位,有足够的RAM和磁盘空间。
答案 0 :(得分:2)
我遇到了此博客帖子评论中提到的SUBST问题: http://richardsleegers.blogspot.com/2006/04/error-1305-error-reading-from-file-msi.html
使用SUBST将F:驱动器映射到C:\ F_Drive。每次都从F:\ Packages \ Test运行MSI文件失败。从C:\ F_Drive \ Packages \ Test运行它。对于我的测试目的,这是一个可接受的解决方法。这适用于一些永远不必在生产硬件上处理SUBST的嵌入式软件。
发生此错误是因为MSI程序包在msiexec服务下运行,默认情况下使用LocalSystem帐户,并且SUBST映射特定于每个用户。
作为SUBST的替代方案,您可以在注册表中为所有用户(包括LocalSystem)创建DOS设备映射,以访问相同的映射:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"F:"="\\??\\C:\\F_Drive"
答案 1 :(得分:0)
可以忽略控制错误。底线控件比对话框大,所以看起来更好。
通常,当另一个进程具有MSI的打开句柄时,会遇到从文件读取错误。确保您的MSI未使用Orca打开且Visual Studio未使用。您也可以在启动MSI之前尝试重新启动。
另外,请确保不要使用自定义操作打开磁盘上MSI数据库的句柄。