关于 c :QProcess 在执行带参数的 exe 时的问题

QProcess issue in executing a exe with arguments

我在设置 QProcess 以使用参数运行可执行文件时遇到问题。相同的Qt代码如下,

1
2
3
4
QString program ="C:\\Setup.exe";
QStringList arguments;
arguments <<"-uninstall";
QProcess::startDetached(program, arguments);

这个片段的输出是卸载一些程序。但它没有发生。我是不是做错了什么?

但是如果我进入 cmd 提示符并执行相同的操作,例如.,

c:/> "C:/Setup.exe" -卸载
这完美无缺。

相关讨论

  • "它没有发生" - 你是什么意思?它是否无法启动程序,或者只是无法通过卸载标志?连接到 QProcess 错误信号会收到什么错误?
  • 您是否尝试过使用 "C:\\\\\\\\\\\\\\\\Setup.exe"?还是没有参数的"C:\\\\\\\\\\\\\\\\Setup.exe -unistall"?
  • 实际上路径是不同的。我用正斜杠替换了 "\\\\"。它的工作。
  • 我假设您忘记转义反斜杠,即 c:\\\\\\\\\\\\\\\\setup.exe 而不是 c:\\\\\\\\setup.exe?

至少有两种方法可以解决您的问题。

  • 根据文档使用"/"作为目录分隔符:

    If you always use"/", Qt will translate your paths to conform to the underlying operating system.

  • 根据文档中的示例,在将文件路径作为字符串处理时转义反斜杠:

    1
    2
    env.insert("TMPDIR","C:\\\\MyApp\\\\temp"); // Add an environment variable
    env.insert("PATH", env.value("Path") +";C:\\\\Bin");

因此,你应该这样写:

1
2
3
4
QString program ="C:/Setup.exe";
QStringList arguments;
arguments <<"-uninstall";
QProcess::startDetached(program, arguments);

或者这个:

1
2
3
4
QString program ="C:\\\\Setup.exe";
QStringList arguments;
arguments <<"-uninstall";
QProcess::startDetached(program, arguments);

一般来说,当遇到此类问题时,您总是可以使用以下语法打印出错误字符串以获取更多信息:

1
qDebug() << myProcess.errorString();

不过,这当然需要一个实例。


以上是关于 c :QProcess 在执行带参数的 exe 时的问题的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>