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);
请牛人帮忙...........
6 个解决方案
#1
string exepath = @"test.exe";
把test.exe文件拷贝到编译后exe所在目录
把test.exe文件拷贝到编译后exe所在目录
#2
多半是路径问题,运行得时候把文件路径输出一下,看看正确不
#3
这个很明显就是路径问题了。
把你要调用的外部exe跟你打包的exe放到同一个目录下。然后路径直接使用文件名就可以了,这是最简单的。
关键要搞清楚相对路径的问题。
把你要调用的外部exe跟你打包的exe放到同一个目录下。然后路径直接使用文件名就可以了,这是最简单的。
关键要搞清楚相对路径的问题。
#4
你的那代码是在安装项目(安装类)里吗?
打包后你把System.IO.Path.GetDirectoryName输出看看
你用的相对路径来定位,可安装包却是通过msiexec.exe来执行的(以它的目录为基准),最后根据它的目录为相对路径,那就不是你想要的了
要得到正确的安装路径,应该在安装类(建议你使用InstallCommited事件)里使用this.Context.Parameters["TargetDir"]来获取
打包后你把System.IO.Path.GetDirectoryName输出看看
你用的相对路径来定位,可安装包却是通过msiexec.exe来执行的(以它的目录为基准),最后根据它的目录为相对路径,那就不是你想要的了
要得到正确的安装路径,应该在安装类(建议你使用InstallCommited事件)里使用this.Context.Parameters["TargetDir"]来获取
#5
我是在应用程序中这样写的.
#6
我现在遇到了同样得问题。楼主的解决了没有?
#1
string exepath = @"test.exe";
把test.exe文件拷贝到编译后exe所在目录
把test.exe文件拷贝到编译后exe所在目录
#2
多半是路径问题,运行得时候把文件路径输出一下,看看正确不
#3
这个很明显就是路径问题了。
把你要调用的外部exe跟你打包的exe放到同一个目录下。然后路径直接使用文件名就可以了,这是最简单的。
关键要搞清楚相对路径的问题。
把你要调用的外部exe跟你打包的exe放到同一个目录下。然后路径直接使用文件名就可以了,这是最简单的。
关键要搞清楚相对路径的问题。
#4
你的那代码是在安装项目(安装类)里吗?
打包后你把System.IO.Path.GetDirectoryName输出看看
你用的相对路径来定位,可安装包却是通过msiexec.exe来执行的(以它的目录为基准),最后根据它的目录为相对路径,那就不是你想要的了
要得到正确的安装路径,应该在安装类(建议你使用InstallCommited事件)里使用this.Context.Parameters["TargetDir"]来获取
打包后你把System.IO.Path.GetDirectoryName输出看看
你用的相对路径来定位,可安装包却是通过msiexec.exe来执行的(以它的目录为基准),最后根据它的目录为相对路径,那就不是你想要的了
要得到正确的安装路径,应该在安装类(建议你使用InstallCommited事件)里使用this.Context.Parameters["TargetDir"]来获取
#5
我是在应用程序中这样写的.
#6
我现在遇到了同样得问题。楼主的解决了没有?