我编写了一个简单的固件更新实用程序,需要作为安装程序的一部分运行。安装程序将主应用程序以及二进制固件文件和固件更新安装程序都安装到安装目录中。在更新实用程序中,我在尝试将文件上传到我的设备之前检查文件是否存在。
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
检查以查看文件是否仍会打开,但事实并非如此。