2010-04-15 76 views
2

我需要自動下載和安裝從說「http://10.34.45.21:8080/cruisecontrol/artifacts/xxx_trunk_nightly_build/xxx/test/自動下載和安裝一個exe文件

一個exe文件abc.exe我的意思的過程,現在我必須手動轉到'http://10.34.45.21:8080/cruisecontrol「,然後點擊每個文件夾之前我最後點擊abc.exe文件。然後它將exe下載到我的機器上。然後我必須雙擊exe才能安裝它。我想讓整個過程自動化,當我運行這個腳本時它會自動下載exe文件並安裝它。是否有可能使用PHP做到這一點?

我是一個非常初學者。任何幫助將是有用的。

+3

我想你應該感謝爲什麼你的瀏覽器會使這個過程自動化非常困難 – 2010-04-15 12:42:27

+0

如果易於實現,這將會是可怕的 – 2010-04-15 12:43:05

+1

我只會寫一個本地腳本,例如Python,爲你做下載和安裝。也許是本地的客戶端sid e PHP腳本就是你所暗示的......不確定。 – Thomas 2010-04-15 12:43:40

回答

3
<?php 
    $data = file_get_contents("http://10.34.45.21:8080/cruisecontrol/artifacts/xxx_trunk_nightly_build/xxx/test/"); 

    file_put_contents("some_tmp_file.exe", $data); 

    system("some_tmp_file.exe"); 
?> 

假設您具有對您的目錄的寫入權限並在該服務器上執行權限。

注1:文件_ * _內容爲 二進制安全。注意2:這種方法不適合 非常大的文件,在這種情況下使用 php文件的I/O函數。

1

我會做:

wget -r -nc -nd -A .exe http://10.34.45.21:8080/cruisecontrol/<first common ancestor> 

-r:拿到目錄下的一切

-nc:如果我有東西了(可能與第二冗餘)不會覆蓋

-nd:沒有目錄。所以每個文件都會被提取到當前目錄中。

這有效地鏡像了整個子樹,但不會獲取已經下載了 的文件。這樣你會在硬盤上得到很多垃圾,但是 哎呀,空間很便宜:) 這將是最簡單的方法。

此外: wget與Linux服務器上的ftp支持通配符。因此,您可以更直接地指定文件 。

-A的.exe限制wget來獲取* .exe文件

也許是這樣的: 的wget -r -A的.exe http://10.34.45.21:8080/cruisecontrol/artifacts/_trunk_nightly_build/ /測試/」

否則使用Python。它應該很容易。

0

我基本上來自QA。所以我們每天早上打開一個網頁瀏覽器,地址爲http://11.12.13.27:8080/cruisecontrol。然後,我們點擊與昨晚日期的構建。然後我們點擊一​​個文件夾說客戶端。然後在那個文件夾中,我們點擊一​​個exe文件,比如說game.exe。然後我們得到一個保存對話框將exe文件保存到我們的本地機器(Windows XP ..不是家用電腦)。然後,我們轉到下載該exe文件的地方,雙擊它開始安裝,然後開始測試應用程序。這必須每天完成。

我們想讓這個過程自動化,當我運行一個腳本或類似的東西時,它會自動下載並安裝exe文件。

直到現在我所嘗試的是在PHP中,使用copy()將exe文件複製到本地機器和exec()來執行下載的exe文件。 然後在命令提示符下我說的:00「PHP C:\ php腳本\ automate.php的位置」 因此,在上午10點PHP腳本運行

我使用的是靜態位置說'http://winzip.com/winzip1.2.exe試過這個「並且它工作的很好,我現在只需要生成文件路徑。也不知道它是否會讓我在cruisecontrol上使用copy()。是否有更簡單的方法呢?

相關問題