程序/应用程序加载器C#

时间:2017-07-14 18:43:20

标签: c# .net winforms

我正在制作一个应用程序加载器,它允许你拥有你想要保存的任意数量的应用程序,例如你想要使用谷歌浏览器,你按下“添加应用程序”,然后你得到一个OpenFileDialog来选择Chrome或您想要的任何其他应用程序/程序。程序然后将路径和名称保存在.bin文件中,并在单击按钮时加载它。它成功加载网站但不加载应用程序,我认为原因是该程序将文件路径保存为

  

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

而不是

  

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

至少这就是我的想法。无论如何这里是“保存”和“加载”的代码:

保存:

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);
}

负载:

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

}

1 个答案:

答案 0 :(得分:1)

Process.Start()可以处理两者,您不必转换任何斜杠或反斜杠。像这样的启动过程应该可以正常工作。

要查找错误,请检查文件是否存在(File.Exists(path)),是否可以直接在Windows中运行,当然(最重要的是)不要像您一样捕获异常但是包括抛出的异常,如下:

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.
}

可能该文件根本不存在或无法在没有having a working path set的情况下运行(对于某些应用程序,这可能是必需的)。