【发布时间】:2016-04-28 14:15:26
【问题描述】:
我编写了一个简单的固件更新实用程序,它需要作为安装程序的一部分运行。安装程序将主应用程序以及二进制固件文件和固件更新安装程序全部安装到安装目录中。在更新实用程序中,我会先检查文件是否存在,然后再尝试将其上传到我的设备。
if (!System.IO.File.Exists("My_Firmware.bin"))
//handle error
这将返回 false 并且我的实用程序失败,但仅在直接从 NSIS 安装程序调用时。如果我通过双击可执行文件直接从安装目录运行该实用程序,它工作正常。我正在使用ExecWait 来运行该实用程序。
ExecWait '"$INSTDIR\UpdateUI.exe"'
IfErrors 0 noError
messageBox MB_OK "No firmware was installed!"
我已尝试以管理员身份运行安装程序。我还尝试将安装目录更改为不太可能出现权限问题的地方。我尝试只使用 Exec 得到相同的结果。我还尝试删除File.Exists 检查文件是否会打开,但它没有。
【问题讨论】:
-
您使用的是相对路径。这样的路径总是相对于
working directory。你确定working directory在这两种情况下都是一样的吗?请注意,working directory并不总是与您的程序所在的位置相同。