1

我有一个使用Visual Studio 2008构建的部署项目无法安装。它使用默认的GUI。转换到进度页面时发生错误。 GUI错误消息是:部署项目无法安装,MSI错误1305

从文件F:\ Packages \ Test \ Release \ Test.msi读取时出错。验证文件是否存在并且您可以访问它。

如果我从/l*在命令行中运行MSI,我得到了很多关于GUI元素的错误是不正确的尺寸,例如:

DEBUG:错误2826:在对话框WelcomeForm控制一号线延伸超出对话框边界3个像素 安装程序遇到意外错误安装此软件包。这可能表明此软件包存在问题。错误代码是2826的参数是:WelcomeForm,1号线,到

我也得到了错误的更详细的版本显示在运行时的权利:

MSI(C)(08: EC)[17:06:27:026]产品:测试 - 错误1305.从文件F:\ Packages \ Test \ Release \ Test.msi读取错误。系统错误1008.验证文件是否存在并且您可以访问它。

其他MSI文件在本机上使用相同的用户帐户,它是本地管理员组的成员。整个Release \文件夹将SYSTEM设置为完全控制。 C:\ WINDOWS \ TEMP和C:\ Documents and Settings \用户名\ Local Settings \ Temp都将SYSTEM设置为完全控制。

电脑运行Windows XP SP2 32位,有大量的RAM和磁盘空间可用。

回答

2

我正经历在这篇博客的评论中提到的SUBST问题: http://richardsleegers.blogspot.com/2006/04/error-1305-error-reading-from-file-msi.html

的F:驱动器被映射到C。从F:\ Packages \ Test运行MSI文件每次都失败。从C:\ F_Drive \ Packages \ Test运行它。对于我的测试目的,这是一个可以接受的解决方法。这适用于某些嵌入式软件,它们永远不需要在生产硬件上处理SUBST。

发生该错误是因为MSI包在msiexec服务下运行,msiexec服务默认使用LocalSystem帐户,SUBST映射针对每个用户。

作为替代SUBST,可以在注册表中的所有用户,包括本地系统创建一个DOS设备映射,访问相同的映射:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"F:"="\\??\\C:\\F_Drive" 
+0

非常感谢!在我的情况下,它是部署一个Windows 8应用程序,但相同的症状。我不知道映射驱动器的简单方法,很高兴今天我学到了一些新东西! :-) – 2014-01-31 21:54:48

0

控制错误可以忽略。底线控制比对话更大,因此看起来更好。

当另一个进程打开MSI句柄时,通常会遇到文件错误读取。确保你的MSI没有用Orca打开,也没有被Visual Studio使用。您也可以在启动MSI之前尝试重新启动。

此外,请确保您不使用自定义操作,该操作会打开磁盘上MSI数据库的句柄。使用SUBST \ F_Drive:

+0

确信的Orca被关闭。在测试之前也尝试关闭Visual Studio的所有实例。我通常有一个自定义操作,它不会与.MSI交互,但我已尝试删除自定义操作,以保证安全。以上都没有解决这个问题。重新启动也没有。 – 2011-12-20 16:18:39