У меня есть исполняемый файл установщика Visual C ++ exe в файле ресурсов. Файл извлекается, перемещается в% TEMP%, запускается с QProcess и удаляется после завершения процесса. У меня проблема в том, что удаление файла завершается с ошибкой «Отказано в доступе» даже с повышенными привилегиями Кажется, это вызвано тем, что файл все еще используется чем-то (занятым), потому что он начинает работать, если я добавляю задержку в 1 секунду перед удалением.
QFile vcredistResource2015(":\\data\\vc_redist.x86.exe");
QString dst2015 = QDir::temp().absolutePath()+"/vc_redist.x86.exe";
vcredistResource2015.copy(dst2015);
QProcess p2015;
p2015.start(dst2015);
p2015.waitForFinished(-1);
//QThread::sleep(1); //this line solves it
QFile rm15(dst2015);
rm15.setPermissions(QFile::ReadOther|QFile::WriteOther);
if (rm15.exists() && rm15.remove()) {
qDebug() << "removed 2015";
}
else {
qDebug() << rm15.errorString(); //Permission denied here
}