16,818
社区成员




QStringList params;
QString msi_dir = "C:/my.msi";
params <<"/i" << QDir::toNativeSeparators(msi_dir); // <<"/qb"
params << QString::fromUtf8("INSTALLDIR=e:\\Program Files\\我的文件");
QProcess *installPro = new QProcess();
installPro->startDetached("msiexec.exe", params);
QStringList params;
QString msi_dir = "C:/my.msi";
params << "msiexec.exe" << "/i" << QDir::toNativeSeparators(msi_dir); // <<"/qb"
QString str = QString("INSTALLDIR=\"%1\"").arg("e:/Program Files/我的文件");
params << QDir::toNativeSeparators(str);
QString arg = params.join(" ");
QFile file("test.bat");
file.open(QIODevice::WriteOnly | QIODevice::Text);
file.reset();
file.write(arg.toLatin1());
file.close();
QProcess *installPro = new QProcess();
installPro->startDetached("test.bat");
QTextStream streamFileOut(&file);
streamFileOut.setCodec(QTextCodec::codecForName("UTF-8"));
streamFileOut.setGenerateByteOrderMark(true);
QStringList params;
QString msi_dir = "C:/my.msi";
params << "msiexec.exe" << "/i" << QDir::toNativeSeparators(msi_dir); // <<"/qb"
QString str = QString::fromUtf8("INSTALLDIR=\"e:\\Program Files\\我的文件\"");
params << QDir::toNativeSeparators(str);
QString arg = params.join(" ");
QFile file("test.bat");
file.open(QIODevice::WriteOnly | QIODevice::Text);
file.reset();
QTextStream streamFileOut(&file);
streamFileOut.setCodec(QTextCodec::codecForName("gbk"));
streamFileOut.setGenerateByteOrderMark(false);
streamFileOut << arg;
streamFileOut.flush();
file.close();
QProcess *installPro = new QProcess();
installPro->startDetached("test.bat");
关键就是15、16行,开始我的测试环境是英文版XP,把bat拷到中文XP下,虽然通过记事本看到是乱码,但是运行起来目标路径是正确的中文。
中文害人啊!!