NSIS文件使用中检查方法

NSIS文件使用中检查方法,nsis,Nsis,在开始安装之前,我需要检查特定文件是否正在使用。这不是可执行文件,因此检查进程是否存在的选项超出范围 我的工作是确定数据库文件当前是否正在使用。我想重命名这个文件并得到返回码。但不幸的是,API没有可用的返回代码。现在我想用系统插件调用MoveFile。有人能提出其他建议吗 编辑: 我可以通过上述方法实现同样的目标。如果有其他方法,请告诉我。FileOpen可能是最好的方法。重命名更复杂,可能有更多的时间问题 如果要检查是否可以写入文件,请在模式下使用FileOpen。不确定你的应用程序是否总是

在开始安装之前,我需要检查特定文件是否正在使用。这不是可执行文件,因此检查进程是否存在的选项超出范围

我的工作是确定数据库文件当前是否正在使用。我想重命名这个文件并得到返回码。但不幸的是,API没有可用的返回代码。现在我想用系统插件调用MoveFile。有人能提出其他建议吗

编辑:


我可以通过上述方法实现同样的目标。如果有其他方法,请告诉我。

FileOpen可能是最好的方法。重命名更复杂,可能有更多的时间问题


如果要检查是否可以写入文件,请在
模式下使用FileOpen。不确定你的应用程序是否总是以独占写入访问方式打开数据库,或者它是否具有只读模式…

嗯,我检查了我的应用程序启动后,它开始访问数据库文件。在这个时间点上,我无法读取文件,否则它可以读取文件而不会失败。我没有使用'a'模式,因为我不太确定该文件是否会被此方法更改。我知道,除非我在append模式后写些东西,否则什么都不应该发生,但我还是不能冒险,因为这个应用程序相当庞大。
FileOpen $0 "$INSTDIR\FILENAME" r
${If} ${Errors}
 MessageBox MB_OK|MB_ICONEXCLAMATION "File in use"
${EndIf}
FileClose $0