2017-07-14 142 views
0

即时制作一个应用程序加载器,它可以让你有尽可能多的应用程序,你想保存在其中,例如说你想要谷歌浏览器,你按“添加应用程序”,你会得到一个OpenFileDialog来选择Chrome或任何其他应用程序/你想要的程序。该程序然后将路径和名称保存在.bin文件中,并在单击该按钮时加载它。它成功地加载网站,但不应用,为此,我认为原因是,该方案将文件保存路径,程序/应用程序加载器C#

C:\ Program Files文件(x86)的\谷歌\镀铬\应用\的chrome.exe

代替

C:/程序文件(x86)/Google/Chrome/Application/chrome.exe

至少这就是WHA我想。反正这里是为“保存”和“负荷”的代码:

节省:

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 
{ 

} 
+0

如果你认为那是因为做path.Replace(“/”,“\\”); – pm100

+1

查看'Path'类。 https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx –

+0

反斜杠和前斜杠,两者都适用于'Process.Start' – Vikhram

回答

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运行(这可能是强制性的一些应用)。