ich arbeitet zur Zeit an einem Patcher.
...Um erlich zu sein ist der Patcher aus einem TuT von YT.
Alles funktioniert, bis auf das erstellen von Unterordern. AnstattQuote:
![]()
erstellt er einen Ordner Namens:Quote:
Content/Models
Ich muss irgendwo einen Fehler, beim erstellen von Unterordnern habe. Ich such jetzt schon 2 Tage lang nach dem Fehler, aber ich finde ihn nichtQuote:
ContentModels
Bitte helft mir...
Hier meine Patchlist:
Code:
<Files> <File FileName="ego-shooter.exe" FileHash="03F3DE886640B1342A0BE2B9890CE54B9F51809F" FileSize="23552" /> <File FileName="Content\Audio\Waves\soundmove.xnb" FileHash="CC66902E933E260D2E6E34552E2395D3AFCF2339" FileSize="479337" /> <File FileName="Content\Audio\Waves\soundreload.xnb" FileHash="EE06B08A65611A8FDB35BC1B2E01CFF271D1A382" FileSize="135485" /> <File FileName="Content\Audio\Waves\soundshoot.xnb" FileHash="1E21B5C718A060927B810EB3D2D00FEBEB5ABA5B" FileSize="55517" /> <File FileName="Content\Fonts\Arial.xnb" FileHash="C8C7941F994C7C370C3A42DC15B064F73EB9BA57" FileSize="47067" /> <File FileName="Content\Models\Claude.xnb" FileHash="D352ADFF47B58F63FE013EC43EE31F63AAE588AA" FileSize="84442" /> <File FileName="Content\Models\Player.xnb" FileHash="56D0DD42BA3596AD73A020B6AFE031DB89320882" FileSize="45622" /> <File FileName="Content\Textures\exit.xnb" FileHash="CE026B3B55BA0494C1104B035455ADDF0FCC98DB" FileSize="83387" /> <File FileName="Content\Textures\exit_1.xnb" FileHash="CEA86F2645426DC19F3382543D6C4748067C0A6A" FileSize="83387" /> <File FileName="Content\Textures\mp.xnb" FileHash="53AC3973DA72217A6884CD6EE91F9655B69831CD" FileSize="83387" /> <File FileName="Content\Textures\mp_1.xnb" FileHash="B8A2054A3C291F9AC07420B828371FC5B05DF4AC" FileSize="83387" /> <File FileName="Content\Textures\opt.xnb" FileHash="F3CC42AE531468F8DCBB6FE89CEC70F7F6C12291" FileSize="83387" /> <File FileName="Content\Textures\opt_1.xnb" FileHash="E86F8F15A17F91CDB22AD08BAD629EE764AF14E7" FileSize="83387" /> <File FileName="Content\Textures\sp.xnb" FileHash="5DFF0635F3DB5A0DFAAB995C02EDC5F25B079A7A" FileSize="83387" /> <File FileName="Content\Textures\sp_1.xnb" FileHash="3DB49285FEE60FFFC31D95E69E771BB154FBE1A9" FileSize="83387" /> </Files>
Code:
namespace Patcher
{
public partial class Form1 : Form
{
string processPath = Process.GetCurrentProcess().MainModule.FileName;
string processDir = Environment.CurrentDirectory;
static string url = "ftp://******@*****.******.net/egoshooter/";
int actFile = 0;
int fileAnzahl = 0;
string patchlist = url + "/patchlist.xml";
long totalSize = 0;
long size = 0;
long sizeProceeded = 0;
bool isPatchAble = false;
private List<PatchList> LstPatchlist = new List<PatchList>();
public void Patch()
{
if (clientVersion != actualVersion)
{
XmlDocument doc = new XmlDocument();
doc.Load(patchlist);
foreach (XmlNode node in doc.ChildNodes)
{
for (int i = 0; i < node.ChildNodes.Count; i++)
{
PatchList pList = new PatchList();
foreach (XmlAttribute xa in node.ChildNodes[i].Attributes)
{
switch (xa.Name)
{
case "FileName":
pList.fileName = xa.Value;
break;
case "FileHash":
pList.fileHash = xa.Value;
break;
case "FileSize":
pList.fileSize = Convert.ToInt64(xa.Value);
totalSize += pList.fileSize;
break;
}
}
LstPatchlist.Add(pList);
}
}
progressBar2.Maximum = (int)totalSize;
fileAnzahl = LstPatchlist.Count;
Uri downloadAdress = new Uri(url + "/" + actualVersion + "/" + LstPatchlist[actFile].fileName);
string saveAdress = processDir + "\\" + LstPatchlist[actFile].fileName;
string pathCheck = String.Empty;
for (int i = 0; i < LstPatchlist[actFile].fileName.Split('\\').Length - 1; i++)
{
pathCheck += LstPatchlist[actFile].fileName.Split('\\')[i];
if (Directory.Exists(pathCheck) == false)
{
Directory.CreateDirectory(pathCheck);
}
}
if (File.Exists(saveAdress))
{
bool checkFileBool = checkFile(saveAdress, LstPatchlist[actFile].fileHash, LstPatchlist[actFile].fileSize);
if (checkFileBool == false)
{
File.Delete(saveAdress);
DownloadFile(downloadAdress, saveAdress);
}
else
{
sizeProceeded += Convert.ToInt64(LstPatchlist[actFile].fileSize);
progressBar2.Value = (int)sizeProceeded;
actFile += 1;
NextFile();
}
}
else
{
DownloadFile(downloadAdress, saveAdress);
}
}
else
{
progressBar2.Value = progressBar2.Maximum;
progressBar1.Value = progressBar1.Maximum;
MessageBox.Show("Client ist aktuell");
}
}
public void DownloadFile(Uri downloadAdress, string savePath)
{
label1.Text = "Aktueller Dateifortschritt: " + savePath.Replace(Environment.CurrentDirectory + "\\", "");
WebClient wb = new WebClient();
wb.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
wb.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
wb.DownloadFileAsync(downloadAdress, savePath);
}
public void NextFile()
{
if (actFile < fileAnzahl)
{
Uri downloadAdress = new Uri(url + "/" + actualVersion + "/" + LstPatchlist[actFile].fileName);
string saveAdress = processDir + "\\" + LstPatchlist[actFile].fileName;
string pathCheck = String.Empty;
for (int i = 0; i < LstPatchlist[actFile].fileName.Split('\\').Length - 1; i++)
{
pathCheck += LstPatchlist[actFile].fileName.Split('\\')[i];
if (Directory.Exists(pathCheck) == false)
{
Directory.CreateDirectory(pathCheck);
}
}
if (File.Exists(saveAdress))
{
bool checkFileBool = checkFile(saveAdress, LstPatchlist[actFile].fileHash, LstPatchlist[actFile].fileSize);
if (checkFileBool == false)
{
File.Delete(saveAdress);
DownloadFile(downloadAdress, saveAdress);
}
else
{
sizeProceeded += Convert.ToInt64(LstPatchlist[actFile].fileSize);
progressBar2.Value = (int)sizeProceeded;
actFile += 1;
NextFile();
}
}
else
{
DownloadFile(downloadAdress, saveAdress);
}
}
else
{
File.WriteAllText("clientversion.txt", actualVersion);
MessageBox.Show("Der Patchvorgang wurde erfolgreich abgeschlossen.", "Erfolg!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}








