Piszę w Qt4 program linuxowy który poprzez QProcess ma uruchamiać inne programy zainstalowane pod wine
(wine to emulator winapi dla linuxa).
Zrobiłem to w ten sposób:
QString winePREFIX_ = "/home/niko/.wineruni";
QString fileNameWinExec= "/home/niko/.winruni/drive_c/test/runi.exe";
QProcess *myProcess;
QStringList env = QProcess::systemEnvironment();
env << "WINEPREFIX=" + winePREFIX_;
myProcess = new QProcess;
myProcess->setProcessChannelMode(QProcess::MergedChannels);
myProcess->setEnvironment(env);
QString program = "wine";
QStringList arguments;
arguments << fileNameWinExec;
myProcess->start(program, arguments);
Ten sposób dobrze uruchamia program runi.exe, ale program runi.exe
źle mi działa ponieważ musi on być uruchomiony jako niezależny proces.
Żeby aplikację uruchomić jako niezależny proces można użyć:
myProcess->startDetached(program, arguments);
Jednakże startDetached nie przyjmuje zmiennych środowiskowych przekazywanych przez:
myProcess->setEnvironment(env);
Czyli nie mogę uruchomić wine z prefixem, a jest to bardzo ważne.
Kilka dni się już z tym męczę i nie jestem w stanie nic wymyślić.
W google też niczego nie znalazłem.