事の起こり
ゲームやツールに存在する自動アップデート機能。
1度は自分で実装してみたいと思い、やってみようとしたときの話です。
構成
- 0.exe
- 本体。これをアップデートするのが目標。
- 1.exe
- 0.exeをアップデートするためのexe。
手順
- 0.exe: 起動したときに更新があるかどうかを確認する
- 0.exe: 最新版のzipを1つ上のディレクトリにダウンロードする
- 0.exe: 1.exeを1つ上のディレクトリにコピーする
- 0.exe: 1つ上のディレクトリの1.exeを起動する(今回の問題)
- 1.exe: zipを解凍して上書きする
- 1.exe: 解凍した0.exeを起動する
- 0.exe: 起動したときに更新があるかどうかを確認する(なければOK)
問題
4.の手順にて1.exeが起動しなかった。
原因
ProcessStartInfo.FileName
で指定するプロセス名は/
ではなく\\
で区切らなければいけないというWindowsの問題でした。
実行ファイルのディレクトリとファイル名とでPath.Combine
した後のを[string].Replace("/", @"\\")
してあげればいいですね。