suchunta 發表於 2020-3-17 20:28

autoit安裝adobe reader dc問題?

最近在學autoit,安裝adobe reader dc離線版,可以將檔案執行,然後無法執行安裝,請問哪裡出錯了?
ShellExecute("e:\AcroRdrDC1900820071_zh_TW.exe")
WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","準備安裝 Adobe Acrobat Reader DC")
Send("!i")
WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","安裝程式已完成")
Send("!f")



gary8349 發表於 2020-3-18 15:04

我有測試你的代碼
是可以正確執行安裝的...

使用這方法可能要注意以下幾點
1.該安裝程式需要為活動(激活)狀態,以及位於最上層
2.安裝途中不可以去點擊其他地方,以免Send失靈...
    (Send命令限於活動的視窗)
3.可以在腳本頭尾分別加上 BlockInput(1)、BlockInput(0),
    用以鎖定滑鼠和鍵盤,降低失敗機率
BlockInput(1)
ShellExecute("e:\AcroRdrDC1900820071_zh_TW.exe")
WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","準備安裝 Adobe Acrobat Reader DC")
Send("!i")
WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","安裝程式已完成")
Send("!f")
BlockInput(0)

gary8349 發表於 2020-3-18 16:17

本帖最後由 gary8349 於 2020-3-18 17:36 編輯

以下為我的方法,僅供參考
推薦方法二

方法一:#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7


#AutoIt3Wrapper_UseX64=n
#NoTrayIcon
#RequireAdmin


;;載入用以使用 防止重複執行(_Singleton) 語句
#include <Misc.au3>

FileChangeDir(@ScriptDir) ;;切換起始目錄工作目錄到腳本所在路徑
_Singleton(@ScriptName) ;;防止重複執行


;;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


;;安裝程式的路徑
Global $sFile = @ScriptDir & '\AcroRdrDC1900820071_zh_TW.exe'
;;第一個視窗的標題與類型
Global $Windows1 = ''
;;第二個視窗的標題與類型
Global $Windows2 = ''

BlockInput(1)

;;執行安裝程式
ShellExecute($sFile)

;;等待第一個視窗(解壓縮-AcroRdrDC1900820071_zh_TW.exe)
WinWait($Windows1, '正在解壓縮安裝檔案...')

;;等待第二個視窗(解壓縮完的執行程式-setup.exe)
WinWaitActive($Windows2, '準備安裝 Adobe Acrobat Reader DC')


Send("!i")


WinWaitActive($Windows2, '安裝程式已完成')


Send("!f")


BlockInput(0)


MsgBox(64, '完成', '安裝已完成!', 5)


Exit

方法二:
#cs ____________________________________

      Au3版本:3.3.14.5
      SciTE版本:3.6.6
      腳本作者:SHIWASU KAKERU / MicroDuo

      腳本功能:自動安裝 Adobe Reader DC 示例
      外部函數:PostMessage_UDF.au3(後臺執行)

#ce _______________腳本開始_________________


;;腳本檢查
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7
;;exe不編譯為x64
#AutoIt3Wrapper_UseX64=n
;;不顯示右下角系統匣圖標
#NoTrayIcon
;;請求管理員權限
#RequireAdmin


;;防止重複執行(_Singleton) 函數
#include <Misc.au3>
;;_MouseClick 函數
#include <PostMessage_UDF.au3>


;;切換起始目錄工作目錄到腳本所在路徑
FileChangeDir(@ScriptDir)
;;防止重複執行
_Singleton(@ScriptName)


;;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


;;安裝程式的路徑
Global $sFile = @ScriptDir & '\AcroRdrDC1900820071_zh_TW.exe'
;;第一個視窗的標題與類型
Global $Windows1 = ''
;;第二個視窗的標題與類型
Global $Windows2 = ''
;;安裝按鈕
Global $btnInstallHandle = ""
;;完成按鈕
Global $btnFinalHandle = ""
;;宣告變數
Global $btnInstall, $btnFinal


;;執行安裝程式
ShellExecute($sFile)

;;等待第一個視窗(解壓縮-AcroRdrDC1900820071_zh_TW.exe)
WinWait($Windows1, '正在解壓縮安裝檔案...')

;;等待第二個視窗(解壓縮完的執行程式-setup.exe)
WinWait($Windows2, '準備安裝 Adobe Acrobat Reader DC')

;;按下 "安裝" 按鈕
$btnInstall = ControlGetHandle($Windows2,"",$btnInstallHandle) ;;取得 "安裝" 按鈕控件控制碼
_MouseClick(String($btnInstall), 'left', 50, 10) ;;滑鼠左鍵點擊 "安裝" 按鈕。 300, 324 => "安裝" 按鈕的相對(於安裝程式)座標

;;等待安裝完成
WinWait($Windows2, '安裝程式已完成')

;;按下 "完成" 按鈕
$btnFinal = ControlGetHandle($Windows2,"",$btnFinalHandle) ;;取得 "完成" 按鈕控件控制碼
_MouseClick(String($btnFinal), 'left', 50, 10) ;;滑鼠左鍵點擊 "完成" 按鈕。 50, 10 => "完成" 按鈕的相對(於安裝程式)座標

;;等待視窗關閉
WinWaitClose($Windows2, '安裝程式已完成')

;;完成提示
MsgBox(64, '完成', '安裝已完成!', 5)

;;結束
Exit

gary8349 發表於 2020-3-18 17:48

稍微題外話
如果要研究,不想每次都執行完等他解壓縮
可以用以下方法:

1.執行 AcroRdrDC1900820071_zh_TW.exe,等待解壓縮完成,不要進行下個動作
2.開啟Temp資料夾,可以用 ShellExecute(@TempDir)
3.找到數字資料夾,如:27948,大小約164MB
4.資料夾裡面有 config.bin、installer.bin,用7-Zip解壓縮installer.bin至 \installer 資料夾,得到以下檔案

5.直接對setup.exe進行操作即可

suchunta 發表於 2020-3-20 23:04

感謝以上大大回復,我會測試看看{:9_275:}
頁: [1]
查看完整版本: autoit安裝adobe reader dc問題?