自分自身を更新できるようにする必要があるプログラムがあります。更新、ダウンロード、インストールを実行する2番目のプログラムがあります。アップデータは明らかにメインプログラムを更新できる必要があり、そのためにメインプログラムを実行することはできません。そのため、メインプログラムにを呼び出してアップデータを起動させたいのですShellExecuteEx
が、MSDNのドキュメントで少し混乱しています。
それはそれを言います:
ShellExecuteExが戻った直後に...プロセスが終了する場合は、SEE_MASK_NOASYNCフラグを指定する必要があります。このような状況では、呼び出し元のスレッドはDDE会話を完了するために使用できないため、呼び出し元のアプリケーションに制御を戻す前に、ShellExecuteExが会話を完了することが重要です。会話を完了できないと、ドキュメントの起動に失敗する可能性があります。
そして、の下SEE_MASK_NOASYNC
にShellExecuteEx
、操作が完了するまで呼び出しが戻らないことを示します。アップデータを起動してすぐにメインプログラムを終了し、アップデータを問題なく実行できるようにしたいのです。それは正しい方法ですか?また、起動されたアップデーターが、メインプロセスがシャットダウンしたときに強制終了される「子プロセス」としてマークされないようにするために、特別なことをする必要がありますか?