QStringList args;
QEventLoop loop;
- lamexp_init_process(process, QFileInfo(m_binaryUpdater).absolutePath());
+ lamexp_init_process(process, QFileInfo(m_binaryUpdater).absolutePath(), false);
connect(&process, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()));
connect(&process, SIGNAL(finished(int,QProcess::ExitStatus)), &loop, SLOT(quit()));
m_updaterProcess = lamexp_process_id(&process);
loop.exec(QEventLoop::ExcludeUserInputEvents);
}
+
m_updaterProcess = NULL;
QApplication::restoreOverrideCursor();
void lamexp_init_console(const QStringList &argv);
void lamexp_init_error_handlers(void);
int lamexp_init_ipc(void);
-void lamexp_init_process(QProcess &process, const QString &wokringDir);
+void lamexp_init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir = true);
bool lamexp_init_qt(int argc, char* argv[]);
bool lamexp_install_translator(const QString &language);
bool lamexp_install_translator_from_file(const QString &qmFile);
/*
* Setup QPorcess object
*/
-void lamexp_init_process(QProcess &process, const QString &wokringDir)
+void lamexp_init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir)
{
//Environment variable names
- static const char *const s_envvar_names[] =
+ static const char *const s_envvar_names_temp[] =
+ {
+ "TEMP", "TMP", "TMPDIR", "HOME", "USERPROFILE", "HOMEPATH", NULL
+ };
+ static const char *const s_envvar_names_remove[] =
{
"WGETRC", "SYSTEM_WGETRC", "HTTP_PROXY", "FTP_PROXY", "NO_PROXY", "GNUPGHOME", "LC_ALL", "LC_COLLATE", "LC_CTYPE", "LC_MESSAGES", "LC_MONETARY", "LC_NUMERIC", "LC_TIME", "LANG", NULL
};
- const QString tempDir = QDir::toNativeSeparators(lamexp_temp_folder2());
-
+ //Initialize environment
QProcessEnvironment env = process.processEnvironment();
if(env.isEmpty()) env = QProcessEnvironment::systemEnvironment();
- //Setup TEMP directory
- env.insert("TEMP", tempDir);
- env.insert("TMP", tempDir);
- env.insert("TMPDIR", tempDir);
- env.insert("HOME", tempDir);
- env.insert("USERPROFILE", tempDir);
- env.insert("HOMEPATH", tempDir);
+ //Clean a number of enviroment variables that might affect our tools
+ for(size_t i = 0; s_envvar_names_remove[i]; i++)
+ {
+ env.remove(QString::fromLatin1(s_envvar_names_remove[i]));
+ env.remove(QString::fromLatin1(s_envvar_names_remove[i]).toLower());
+ }
- //Setup PATH variable
- const QString path = env.value("PATH", QString());
- env.insert("PATH", path.isEmpty() ? tempDir : QString("%1;%2").arg(tempDir, path));
+ const QString tempDir = QDir::toNativeSeparators(lamexp_temp_folder2());
- //Clean a number of enviroment variables that might affect our tools
- for(size_t i = 0; s_envvar_names[i]; i++)
+ //Replace TEMP directory in environment
+ if(bReplaceTempDir)
{
- env.remove(QString::fromLatin1(s_envvar_names[i]));
- env.remove(QString::fromLatin1(s_envvar_names[i]).toLower());
+ for(size_t i = 0; s_envvar_names_temp[i]; i++)
+ {
+ env.insert(s_envvar_names_temp[i], tempDir);
+ }
}
+
+ //Setup PATH variable
+ const QString path = env.value("PATH", QString()).trimmed();
+ env.insert("PATH", path.isEmpty() ? tempDir : QString("%1;%2").arg(tempDir, path));
+ //Setup QPorcess object
process.setWorkingDirectory(wokringDir);
process.setProcessChannelMode(QProcess::MergedChannels);
process.setReadChannel(QProcess::StandardOutput);