1

我有一个使用 Visual Studio 2008 构建的部署项目,但安装失败。它使用默认的 GUI。当它转换到“进度”页面时会发生错误。GUI 错误消息是:

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

如果我从命令行运行 MSI /l*,我会收到很多关于 GUI 元素大小不正确的错误,例如:

调试:错误 2826:对话框 WelcomeForm 上的 Control Line1 向右超出对话框边界 3 个像素 安装程序在安装此软件包时遇到意外错误。这可能表明此软件包有问题。错误代码是 2826。参数是:WelcomeForm, Line1, to the right

我还得到了运行时显示的错误的更详细版本:

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\username\Local Settings\Temp 都将 SYSTEM 设置为完全控制。

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

4

2 回答 2

2

我遇到了这篇博文评论中提到 的SUBST问题: http ://richardsleegers.blogspot.com/2006/04/error-1305-error-reading-from-file-msi.html

F: 驱动器使用 SUBST 映射到 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"
于 2011-12-20T22:34:35.353 回答
0

控制误差可以忽略。底线控件比它的对话框大,所以看起来更好。

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

此外,请确保您没有使用打开磁盘上 MSI 数据库句柄的自定义操作。

于 2011-12-20T08:00:21.380 回答