【问题标题】:NSIS file in use check methodsNSIS 文件使用中检查方法
【发布时间】:2014-08-14 06:19:52
【问题描述】:

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

我的工作是确定当前是否正在使用数据库文件。我想重命名文件并获取返回码。但不幸的是,该 API 没有可用的返回码。现在我正在考虑使用 System 插件调用 MoveFile。任何人都可以提出其他建议吗?

编辑:

FileOpen $0 "$INSTDIR\FILENAME" r
${If} ${Errors}
 MessageBox MB_OK|MB_ICONEXCLAMATION "File in use"
${EndIf}
FileClose $0

我可以通过上述方法达到同样的效果。如果有其他方法,请告诉我。

【问题讨论】:

    标签: nsis


    【解决方案1】:

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

    如果您想检查是否可以写入文件,请使用带有a 模式的 FileOpen。不确定您的应用是否始终打开数据库以进行独占写入访问,或者它是否具有只读模式...

    【讨论】:

    • 好吧,我检查了我的应用程序启动后它开始访问数据库文件。那个时间点我无法从文件中读取,否则它可以毫无失败地读取文件。我没有使用“a”模式,因为我不太确定文件是否会被这种方法改变。我知道除非我在附加模式之后写点什么,否则什么都不会发生,但仍然不能冒险,因为应用程序非常庞大。
    猜你喜欢
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多