【发布时间】:2011-11-30 17:49:06
【问题描述】:
我在 Windows 7 上的 Program Files 下使用 NSIS 构建的安装程序安装了一个 Ruby 应用程序(以及一个打包的 ruby 解释器)。为了调试它,我编辑了其中一个文件以添加一些调试语句。之后,我卸载了该软件包并运行了新版本的安装程序,其中包含已编辑文件的新副本,没有调试语句。
现在,我无法将新副本加载到 ruby 中。如果我在 cmd.exe 中运行 type <filename>,或者在 Notepad.exe 或 Firefox 中打开文件,我会看到新版本。如果我运行 ruby -e "puts File.read('<filename>')",或者在 emacs 中打开文件,我会看到旧版本。
如果在 Windows 资源管理器中,我将文件复制到一个新文件名,那么一切都可以看到该文件名的新内容。如果我删除原始文件并重命名副本以替换原始文件,则人格分裂返回。
这种情况在重新启动后仍然存在,因此这不是文件被意外保持打开的简单问题。
这里到底发生了什么?安装过程的某些方面是否可能会以我可以恢复的方式检查文件,或者至少在我调试安装程序时关闭?
更新
如果我在以管理员身份运行的控制台中运行 ruby -e "puts File.read('<filename>')",我会看到正确的新内容。我应该如何管理这个文件?
【问题讨论】:
-
你使用的是完整路径吗?
-
是的,我是。就路径而言,任何情况下的唯一区别是替换反斜杠和正斜杠,但这没有区别。
标签: ruby windows installation nsis