InnoSetup:“文件的卷已被外部修改”

时间:2011-03-21 10:13:41

标签: inno-setup

InnoSetup在编译安装项目时似乎破坏了我的可执行文件。 执行源文件工作正常,但安装后执行文件会产生Win32错误1006“文件的卷已被外部更改”。

我尝试过禁用压缩并设置各种标志,但无济于事。

有没有人经历过这个?

更新

好的,情况有些曲折:

目前,我甚至可以手动将工作文件复制到其安装位置,并获取“文件卷...”。要明确:我卸载应用程序,创建相同的文件夹并将文件粘贴到那里并运行。

更新2

那些想要它的人的更多细节: InnoSetup脚本由FinalBuilder使用msbuild的输出编译,也由FinalBuilder执行,在我的机器上运行XP SP3。可执行文件是在配置Release | AnyCPU中编译的C#.Net程序集。该文件在安装脚本从中获取的文件夹中执行时有效。它在XP虚拟机上产生相同的行为。源文件和已安装文件的MD5哈希值相同。

3 个答案:

答案 0 :(得分:16)

好的,我刚收到同样的错误。我有一个我的可执行文件使用的配置。我查看了我的文件夹一百万次 - 但最后注意到配置文件的长度为零。我更正了配置并且错误停止了。

首先检查一下最简单的事情...好明天!

答案 1 :(得分:3)

  

ERROR_FILE_INVALID   1006(0x3EE):文件的卷已经外部更改,因此打开的文件不再有效。

我怀疑在将文件移动到网络共享后出现此问题。在我看来,正在发生的事情是你有一个打开的文件句柄 - 可能是你正在创建的临时文件 - 然后一些其他进程(可能在不同的主机上运行)出现并重命名或删除该文件或其'父目录树。

所以我的建议是:

  1. 尝试安装到本地目录
  2. 在进行反病毒扫描后运行 安全模式或在不同的机器上 看看有没有 背景令人讨厌的变化 卷/目录属性 你的程序正在运行。
  3. 确保程序本身对您正在使用的卷或目录树没有做任何奇怪的事。

答案 2 :(得分:1)

之前从未见过。我有几个问题和建议: - 您是否在编译设置期间签署了EXE?如果是这样,请尝试将该部分留下。 - 您安装的操作系统是什么,或者您尝试过的所有机器上都安装了它? - 使用/LOG="c:\install.log“选项运行安装并发布日志。它可能会显示安装过程中发生的事情。 - 对源EXE和已安装的EXE运行字节比较或MD5检查。它们是一样的吗?他们有相同的版本资源吗?