Кстати, для чего это может понадобиться? Например, если вы пишете свой Uninstall, то вам потом нужно будет почистить и за собой.
Приступим.
void selfDel()
{
//Пишем bat-ник во временную папку
QString tempDir = QDir::tempPath();
QString temp = QDir::toNativeSeparators(tempDir + "/delhf.bat");
tempDir = QDir::toNativeSeparators(tempDir);
QFile file(temp);
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
{
QString filePath = qApp->applicationFilePath();
filePath = QDir::toNativeSeparators(filePath);
QTextStream out(&file);
out << ":Repeat" << endl;
out << QString("del \"%1\" ").arg(filePath) << endl;
out << QString("del \"%1\"").arg(tempDir + "\\delhf.js") << endl;
out << QString("if exist \"%1\" goto Repeat").arg(filePath) << endl;
out << QString("if exist \"%1\" goto Repeat").arg(tempDir + "\\delhf.js") << endl;
out << QString("del \"%1\"").arg(temp) << endl;
file.close();
//Записали скрипт, который удалит себя
//файл delhf.js
//и временный батник
//пишем WScript скрипт, который будет вызывать батник
QFile js(tempDir + "\\delhf.js");
if (js.open(QIODevice::WriteOnly | QIODevice::Text))
{
temp.replace("\\", "\\\\");
QTextStream out_js(&js);
out_js << "var activex = new ActiveXObject(\"WScript.Shell\");" << endl;
out_js << QString("activex.Run(\"%1\", 0, true);").arg(temp) << endl;
js.close();
//вызываем скрипт
QDesktopServices::openUrl(
QUrl(QString("file:///%1").arg(tempDir + "\\delhf.js"),
QUrl::TolerantMode));
}
}
}
Вот собственно и весь код.
Комментариев нет:
Отправить комментарий