ruby - Program Files 下的文件具有人格 split

标签 ruby windows installation nsis

我正在 Windows 7 上的 Program Files 下使用 NSIS 构建的安装程序安装一个 Ruby 应用程序(以及打包的 ruby​​ 解释器)。为了调试它,我编辑了其中一个文件以添加一些调试语句。之后,我卸载了该软件包并运行了新版本的安装程序,其中包括已编辑文件的新副本,没有调试语句。

现在,我无法将新副本加载到 ruby​​ 中。如果我运行type <filename>在cmd.exe中,或者在Notepad.exe或Firefox中打开该文件,我看到了新版本。如果我运行ruby -e "puts File.read('<filename>')" ,或者在emacs中打开文件,我看到的是旧版本。

如果在 Windows 资源管理器中将文件复制到新文件名,则所有内容都可以看到该文件名的新内容。如果我删除原始文件并重命名副本以替换原始文件,人格 split 就会恢复。

这种情况在重新启动后仍然存在,因此这不是一个文件意外保持打开状态的简单问题。

这里到底发生了什么?安装过程的某些方面是否可能以我可以恢复的方式检查文件,或者至少在调试安装程序时关闭?

更新

如果我运行ruby -e "puts File.read('<filename>')"在以管理员身份运行的控制台中,我看到了正确的新内容。我应该如何管理这个文件?

最佳答案

我认为这与 UAC 文件系统虚拟化有关。检查您的文件是否存在于C:\Users\<username>\AppData\Local\VirtualStore中。如果存在,请将其从 VirtualStore 中删除。

您在运行管理员控制台时看到正确的文件这一事实证明,这是由于虚拟化造成的:针对提升的进程关闭了 UAC 虚拟化。

关于ruby - Program Files 下的文件具有人格 split ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8330516/

相关文章:

visual-studio-2010 - Visual Studio 2010 安装项目文本变量列表

tfs - 如何获取tf.exe(TFS命令行客户端)?

ruby-on-rails - rails : ActiveRecord query based on association value

windows - D9024 制作无法识别的源文件类型

windows - Windows Mobile应用程序的GUI测试工具

Windows 2003 Server 无法连接到 SSL 网站

eclipse - 设置 Eclipse 进行团队开发的常见解决方案是什么?

带有 instance_eval 的 Ruby block 作用域

ruby - 如何使用 RSpec 测试文件创建?

ruby-on-rails - 使用子字符串生成随机数