.EXE不以Process.Start(path_to.exe)

时间:2017-08-17 19:46:54

标签: c# inno-setup process.start

我使用Inno Setup创建了DatePicker.exe

Directory: C:\Program Files (x86)\MyJournal

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        8/17/2017   4:44 AM                Log
-a----        8/17/2017   3:30 PM           2747 appointments.bin
-a----        8/17/2017   1:46 PM          45056 DatePicker.exe
-a----         8/8/2017   8:35 AM            189 DatePicker.exe.config
-a----        8/17/2017   1:46 PM          79360 DatePicker.pdb
-a----        8/15/2017  10:17 AM           1122 DatePicker.SED
-a----        8/17/2017   1:47 PM          12946 unins000.dat
-a----        8/17/2017   1:47 PM         725157 unins000.exe

这不起作用 - DatePicker.exe无法打开,并且没有错误:

Process.Start(@"C:\Program Files (x86)\MyJournal\DatePicker.exe");

但这有效

Process.Start(@"C:\Users\Public\Desktop\MyJournal.lnk");

从桌面点链接到与上面相同的路径。

为什么第一个例子不起作用?

更新。

正如我所建议的那样,我试图设置工作目录。 但到目前为止没有运气。这不适合我。

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory = @"C:\Program Files(x86)\MyJournal";
startInfo.FileName = @"DatePicker.exe";
startInfo.CreateNoWindow = true;

Process myProcess = Process.Start(startInfo);

更新#2 ;

It finally works with
var psi = new ProcessStartInfo(@"C:\Program Files (x86)\MyJournal\DatePicker.exe");
                psi.WorkingDirectory = @"C:\Program Files (x86)\MyJournal";
                Process.Start(psi);

2 个答案:

答案 0 :(得分:1)

是否可能没有运行,因为未设置默认目录?请尝试使用StartInfo参数,并将工作目录设置为与程序目录相同。

答案 1 :(得分:0)

您是否尝试过使用Command Promt启动它?如果应用程序在手动打开时工作正常,可能是因为默认情况下UseShellExecute开始 true

尝试startInfo.UseShellExecute = false;

根据MSDN,当startInfo.CreateNoWindow = true; 为真UseShellExecuteUserName属性不是 null <时,系统会忽略Password /强>