如题:
 C# 启动外部EXE,指定工作路径,调试可以用.打包软件后,EXE无法启动.报告说是找不到文件.
               string exepath = @"..\Approve\test.exe";
               System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); //声明一个进程启动信息对象
               psi.FileName = exepath; //可执行文件
               psi.WorkingDirectory = System.IO.Path.GetDirectoryName(exepath); //指定可执行文件所在目录为进程的工作目录
                System.Diagnostics.Process.Start(psi);
请牛人帮忙...........

解决方案 »

  1.   

     string exepath = @"test.exe";把test.exe文件拷贝到编译后exe所在目录
      

  2.   

    这个很明显就是路径问题了。
    把你要调用的外部exe跟你打包的exe放到同一个目录下。然后路径直接使用文件名就可以了,这是最简单的。关键要搞清楚相对路径的问题。
      

  3.   

    你的那代码是在安装项目(安装类)里吗?
    打包后你把System.IO.Path.GetDirectoryName输出看看
    你用的相对路径来定位,可安装包却是通过msiexec.exe来执行的(以它的目录为基准),最后根据它的目录为相对路径,那就不是你想要的了
    要得到正确的安装路径,应该在安装类(建议你使用InstallCommited事件)里使用this.Context.Parameters["TargetDir"]来获取