gpt4 book ai didi

c# - 从 NSIS 安装程序运行应用程序时,File.Exists 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:07 24 4
gpt4 key购买 nike

我编写了一个简单的固件更新实用程序,需要作为安装程序的一部分运行。安装程序将主应用程序以及二进制固件文件和固件更新安装程序全部安装到安装目录中。在更新实用程序中,我先检查文件是否存在,然后再尝试将其上传到我的设备。

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 检查以查看文件是否仍会打开,但事实并非如此。

最佳答案

NSIS 没有将当前工作目录设置为该文件夹,这导致您的可执行文件失败。

一种选择是在命令行中传递完整路径:

ExecWait '"$INSTDIR\YourProgram.exe" "$INSTDIR\My_Firmware.bin"'

这将允许您从命令行参数读取您的程序,并使用该文件(具有完整路径)而不是将其硬编码到当前目录。

关于c# - 从 NSIS 安装程序运行应用程序时,File.Exists 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19797399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com