2010-06-16 6 views
0

j'ai donc ce code pour extraire un programme dans le répertoire temporaire puis exécutez, le problème est qu'il ne fonctionne pas parfaitement sur chaque ordinateur (pour une raison quelconque il frappe une erreur ou une exception parfois)Comment faire pour que mon application gère les erreurs pour différents scénarios?

string tempFolder = System.IO.Path.Combine(System.IO.Path.GetTempPath(), ""); 
System.Diagnostics.Process defrag1 = System.Diagnostics.Process.Start(@"Programs\Optimize\AusLogics_Defrag.exe", string.Format(" -o{0} -y", tempFolder)); 
defrag1.WaitForExit(); 
string executableDirectoryName = Path.GetDirectoryName(Application.ExecutablePath); 
System.Diagnostics.Process defrag2 = System.Diagnostics.Process.Start(tempFolder + "\\" + "AusLogics_Defrag" + "\\" + "DiskDefrag.exe", ""); 
defrag2.WaitForExit(); 
System.IO.Directory.Delete(tempFolder + "\\" + "AusLogics_Defrag", true); 

et ce que je veux savoir, c'est qu'il y a une façon de dire si elle commence à extraire mais frappe une erreur (peu importe ce que c'est) elle changera automatiquement et ira à ce code, mais si elle ne frappe PAS une erreur elle continue comme elle était destiné à?

string tempFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
System.Diagnostics.Process defrag1 = System.Diagnostics.Process.Start(@"Programs\Optimize\AusLogics_Defrag.exe", string.Format(" -o{0} -y", tempFolder)); 
defrag1.WaitForExit(); 
string executableDirectoryName = Path.GetDirectoryName(Application.ExecutablePath); 
System.Diagnostics.Process defrag2 = System.Diagnostics.Process.Start(tempFolder + "\\" + "AusLogics_Defrag" + "\\" + "DiskDefrag.exe", ""); 
defrag2.WaitForExit(); 
System.IO.Directory.Delete(tempFolder + "\\" + "AusLogics_Defrag", true); 

avec le chemin d'accès au dossier de données d'application? et si CELA rencontre une erreur, il changera ce chemin, mais s'il ne frappe PAS une erreur, il continue comme il était censé le faire?

string tempFolder = System.Environment.GetEnvironmentVariable("HomeDrive"); 

Répondre

0

Je suppose que votre réponse dépend vraiment comment vos erreurs sont barboter de l'application « AusLogics_Defrag.exe » ...

Fournir les sorties app « AusLogics_Defrag.exe » un, vous pouvez travailler avec le ExitCode propriété du processus retourné lorsque vous appelez Process.Start(). Une valeur non nulle indique une erreur dans une implémentation normale.

+0

bien le problème est que quand il tente d'extraire dans le dossier TEMP (qui est le dossier de la variable d'environnement temp) parfois il obtient un fichier introuvable erreur .. alors dans ce cas, id veut alors essayer d'extraire au dossier de données d'applications, et si une erreur se produit là, alors ID veut essayer d'extraire à la variable d'environnement Homedrive – NightsEVil

Questions connexes