インストーラーの一部として実行する必要がある単純なファームウェア更新ユーティリティを作成しました。インストーラーは、メイン アプリケーション、バイナリ ファームウェア ファイル、およびファームウェア アップデート インストーラーをすべてインストール ディレクトリにインストールします。アップデート ユーティリティで、デバイスにアップロードする前にファイルの存在を確認します。
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
が、そうではありませんでした。