急急急 C# 启动外部EXE,指定工作路径,调试可以用.打包软件后,EXE无法启动

wirner 2013-07-08 02:32:09
如题:
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);


请牛人帮忙...........

...全文
275 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Newbie0617 2015-04-27
  • 打赏
  • 举报
回复
我现在遇到了同样得问题。楼主的解决了没有?
wirner 2013-07-08
  • 打赏
  • 举报
回复
引用 4 楼 dongxinxi 的回复:
你的那代码是在安装项目(安装类)里吗? 打包后你把System.IO.Path.GetDirectoryName输出看看 你用的相对路径来定位,可安装包却是通过msiexec.exe来执行的(以它的目录为基准),最后根据它的目录为相对路径,那就不是你想要的了 要得到正确的安装路径,应该在安装类(建议你使用InstallCommited事件)里使用this.Context.Parameters["TargetDir"]来获取
我是在应用程序中这样写的.
  • 打赏
  • 举报
回复
你的那代码是在安装项目(安装类)里吗? 打包后你把System.IO.Path.GetDirectoryName输出看看 你用的相对路径来定位,可安装包却是通过msiexec.exe来执行的(以它的目录为基准),最后根据它的目录为相对路径,那就不是你想要的了 要得到正确的安装路径,应该在安装类(建议你使用InstallCommited事件)里使用this.Context.Parameters["TargetDir"]来获取
  • 打赏
  • 举报
回复
这个很明显就是路径问题了。 把你要调用的外部exe跟你打包的exe放到同一个目录下。然后路径直接使用文件名就可以了,这是最简单的。 关键要搞清楚相对路径的问题。
d221e331 2013-07-08
  • 打赏
  • 举报
回复
多半是路径问题,运行得时候把文件路径输出一下,看看正确不
shawn_yang 2013-07-08
  • 打赏
  • 举报
回复
string exepath = @"test.exe"; 把test.exe文件拷贝到编译后exe所在目录

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧