Здравствуйте, пишу игровой лаунчер на C#. Возникла проблема при проверке целостности файлов клиента, отсутствие определённого файла лаунчер замечает и загружает необходимый файл, однако если удалить часть пути к файлу, лаунчер не может загрузить туда его (System.IO.DirectoryNotFoundException: Не удалось найти часть пути). C# занимаюсь 2 дня, отсюда и сложности. Вот код
private void CheckMeta()
{
string api_adress = "http://localhost/api";
string clientFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\aaaa\";
WebRequest request = WebRequest.Create(api_adress + "/meta-inf");
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.Proxy = new WebProxy();
Stream res = request.GetResponse().GetResponseStream();
StreamReader read = new StreamReader(res);
string meta = read.ReadToEnd();
var metas = JsonConvert.DeserializeObject<Meta_obj[]>(meta);
foreach (var Meta_obj in metas)
{
if (!File.Exists(clientFolder + Meta_obj.Artefact))
{
progressBar1.Visible = true;
dwn_text.Visible = true;
WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downloadProgress);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(downloadDone);
client.DownloadFile(
new System.Uri("http://localhost:3001" + Meta_obj.Src),
clientFolder + Meta_obj.Artefact
);
}
else
{
if (Meta_obj.Check_hash)
{
if (this.CheckHash(clientFolder + Meta_obj.Artefact) != Meta_obj.Hash)
{
progressBar1.Visible = true;
dwn_text.Visible = true;
WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downloadProgress);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(downloadDone);
client.DownloadFileAsync(
new System.Uri("http://localhost:3001" + Meta_obj.Src),
clientFolder + Meta_obj.Artefact
);
}
}
}
}
read.Close();
this.ClientStart();
}