2011-04-20 41 views
2

當我在命令行上運行以下命令時,我可以靜默安裝程序包,但是當我將下面的代碼放入目標c程序並運行它時。該軟件包未安裝。無形安裝在目標C中

Shell命令 -

echo password |須藤-S安裝-pkg /Users/prashanth/Desktop/AppTest.mpkg -target/

目標C -

系統(@「回波密碼|須藤-S安裝-pkg /用戶/普拉香特/桌面/ AppTest.mpkg -target /「);

+0

NSTask,只適用於sudo,會更好,因爲您可以自己將密碼寫入其標準輸入,但仍不是正確的解決方案。更接近於AuthorizationExecuteWithPrivileges(http://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/Reference/reference.html#//apple_ref/c/func/AuthorizationExecuteWithPrivileges)。文檔建議的方法是在setuid-root工具中執行真正的工作(運行安裝程序),並且僅使用AEWP來設置其setuid狀態。 (當然,這假定你的應用程序包不在只讀捲上。) – 2011-04-21 08:01:22

+0

我希望這隻用於測試,並且你不打算在實際應用程序中靜默安裝任何東西。 – 2011-04-21 08:01:53

+0

@Prashant你的shell命令對靜默安裝非常有用。但我想通過這個shell命令傳遞參數。我想在包安裝程序中的安裝後腳本中獲取此參數。有沒有可能做到這一點? – santhosh 2015-02-04 12:16:01

回答

3

system()函數不接受NSString。擺脫@

但是,我不建議這樣做。它幾乎打敗了擁有管理員密碼的地步。任何人都可以讀取應用程序二進制文件,或者只能看到正在運行的程序的名稱將能夠以明文形式查看密碼。

+0

另外,任何運行'ps ax'的用戶都能看到該密碼。 – 2011-04-21 01:49:53

+0

工作。謝謝 !! – Prashant 2011-04-21 02:08:43

+0

@Bavarious - 當然,將刪除該 – Prashant 2011-04-21 02:09:04