2014-06-15 68 views
1

我試圖通過QProcess運行一個命令,但它不工作。我的命令類似於utility -someflag /path/to/fileutility在PATH中,但看起來QProcess沒有使用這個環境變量。在PATH中找到運行命令?

該命令只是失敗,我需要指定該實用程序的完整路徑(我想避免)。

有沒有辦法解決這個問題?基本上有些方法可以使QProcess使用PATH變量?

回答

0

所以問題在於它取決於應用程序的啓動方式。這是在OSX,但它可能在其他平臺上是相似的:

  • 如果它是一個命令行應用程序,並從終端開始,然後將有機會獲得ENV變量。

  • 如果它是從Qt Creator啓動的,它將無法訪問任何env變量。

  • 如果它是一個GUI應用程序(.app),它將無法訪問env變量。

我的情況下,因爲它是一個GUI應用程序的解決方案是手動更新.app包。首先,文件的Info.plist需要從這個改變:

<key>CFBundleExecutable</key> 
<string>MyApplication</string> 

這樣:

<key>CFBundleExecutable</key> 
<string>MyApplication.sh</string> 

然後,仍然在應用程序包,在內容/ MacOS的,創建一個新的文件與應用程序具有相同的名稱,但帶有.sh擴展名,例如。 「MyApplication.sh」。然後創建啓動:

#!/bin/sh 
SCRIPT_DIR=$(dirname "$0") 
source ~/.bash_profile 
logger "$SCRIPT_DIR/MyApplication" 
exec "$SCRIPT_DIR/MyApplication" [email protected] 

source ~/.bash_profile線特別是確保所有的環境(包括PATH變量)將被正確設置。

相關問題