내 응용 프로그램에서 로컬 응용 프로그램 데이터 폴더에서 분리 된 프로세스를 실행합니다. 아래의 코드는 대부분의 경우에 적용됩니다.QProcess - 경로에 공백이 포함 된 프로세스 실행
void executeApp(const QString &id)
{
QString program = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
program = program + "\\..\\Programs\\MyApp.exe";
QStringList arguments;
arguments << "--app_id="+id; //it is only one argument
QProcess* process = new QProcess(this);
bool success = process->startDetached(program, arguments);
if (!success) //TODO: Error handling
qDebug() << "Couldn't start process at " << program << process->errorString();
}
는 몇 가지 테스트를 실행, 나는 윈도우 계정 사용자 이름이 공백을 (Windows가 실제로 수)가 포함되어있는 경우 작동하지 않는 것을 발견.
어떻게 수정 될 수 있습니까?
--- 편집 : 게시 된 답변을 바탕으로
, 나는 조금에게 코드를 변경했습니다. 그러나 나는 아직도 아래 코드에서 QMessageBox에 "알 수없는 오류"를 받고 있어요 : 사용자 이름에 하나의 공백이있는 사용자가있을 때
void executeApp(const QString &id)
{
QString program = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
program = QDir(program + "/../Programs/MyApp.exe").absolutePath();
QStringList arguments;
arguments << "--app_id="+id; //it is only one argument
QProcess* process = new QProcess(this);
bool success = process->startDetached(program, arguments);
if (!success)
QMessageBox::critical(NULL, tr("Launching App"), process->errorString());
}
이 강화, 그것은 단지 ... 일
을하지만 모두 언급에 대한 –