2017-07-14 1 views
0

ich mache eine Anwendung Loader, die Sie haben so viele Anwendungen wie Sie möchten gespeichert, sagen Sie zum Beispiel, dass Sie Google Chrome drin haben möchten, drücken Sie "Anwendung hinzufügen" und Sie erhalten ein OpenFileDialog, um Chrome oder eine beliebige andere App/ein Programm auszuwählen. Das Programm speichert dann den Pfad und den Namen in den .bin-Dateien und sollte es laden, wenn Sie auf die Schaltfläche klicken. es Websites erfolgreich geladen, aber nicht von Anwendungen, und der Grund für die ich denke, ist, dass das Programm die Dateipfade alsProgramm/App loader C#

C speichert: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe

statt

C:/Program Files (x86) /Google/Chrome/Application/chrome.exe

zumindest das ist wha Ich denke. trotzdem hier ist der Code für "Speichern" und "load":

sparen

if (metroTextBox1.Text == "" || metroTextBox2.Text == "") 
{ 
    MessageBox.Show("You have to fill in both Name and Path first", "Invalid Info", MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 
else 
{ 
    string[] name = { metroTextBox1.Text }; 
    string[] path = { metroTextBox2.Text }; 
    System.IO.File.WriteAllLines(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/appLoader/apps/appname1.bin", name); 
    System.IO.File.WriteAllLines(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/appLoader/apps/apppath1.bin", path); 
} 

Last:

try 
{      
    string path = System.IO.File.ReadAllText(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/appLoader/apps/apppath1.bin"); 
    Process.Start(path); 
} 
catch 
{ 

} 
+0

Wenn Sie denken, das ist die Ursache tun path.Replace ("/", "\\"); – pm100

+1

Überprüfen Sie die Klasse "Pfad". https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx –

+0

Back-Slash und Front-Schrägstrich, beide funktionieren gut für 'Process.Start' – Vikhram

Antwort

1

Process.Start() beide behandeln können, müssen Sie keine Schrägstriche umwandeln oder Backslashes. Solche Prozesse sollten gut funktionieren.

Um den Fehler zu finden, überprüfen Sie bitte, ob die Datei existiert (File.Exists(path)), wenn sie direkt in Windows ausgeführt werden kann und natürlich (und am wichtigsten) nicht nur die Ausnahme abfängt, sondern auch einbezieht die ausgelöste Ausnahme wie folgt aus:

catch (Exception ex) // <-- !! 
{ 
    // investigate (and log) the exception here. 
    // note that catching all exceptions is not a good idea so narrow 
    // it down once you found the exceptions you have to care for. 
} 

Wahrscheinlich wird die Datei einfach nicht existieren oder nicht, ohne having a working path set ausgeführt werden kann (dies kann für einige Anwendungen obligatorisch).