Day 7 Training Module
AutoIt 自動化編譯器設計
腳本封裝與 BackUp 排除邏輯
今日課程目標
自動化腳本開發完成後,如何有效率且安全地將其打包發布?
- 理解 AutoIt 腳本編譯的核心流程。
- 掌握 AutoIt3Wrapper 的調用機制與優勢。
- 實作資料夾遞迴掃描演算法。
- 設計並落實 BackUp 排除邏輯,確保產出品質。
AutoIt 腳本開發特性
AutoIt 是一種專為 Windows GUI 自動化設計的腳本語言。
- 直譯執行:開發時透過
.au3 源碼直接執行。
- 編譯發布:發布時需轉為
.exe 執行檔。
- 開發環境:多數開發者依賴 SciTE 編輯器進行撰寫。
挑戰在於:當專案規模擴大,包含數十個腳本時,手動編譯將成為噩夢。
傳統編譯流程的痛點
依賴內建工具 (Aut2Exe) 逐一編譯,容易衍生人為疏失與品質問題。
- 效率低落:每次發布需手動點選數十次。
- 參數遺漏:忘記加入 Icon、版本號或系統資源配置。
- 垃圾檔案混入:這是最致命的問題,編輯器產生的備份檔若被誤編譯,將污染部署包。
認識 BackUp 陷阱
在使用 SciTE 編輯器開發 AutoIt 腳本時:
- 編輯器預設會自動產生歷史備份檔案。
- 這些檔案通常集中存放於名為 BackUp 的子目錄中。
- 檔案副檔名可能也是
.au3 或偽裝成一般源碼。
危機:若批次編譯工具「盲目」掃描所有 .au3,將會把過期、除錯中的備份檔一併編譯,導致部署套件極度混亂!
解決方案:專屬自動編譯工具
為了解決痛點,我們設計了一套基於腳本與 UI 的自動化工具。
- 單一入口:視覺化介面操作,一鍵啟動。
- 環境參數綁定:集中管理編譯器路徑。
- 智慧過濾:內建核心排除演算法。
- 批量處理:一次性處理目標目錄下所有合規腳本。
核心設定參數
工具執行前,需確認以下三個關鍵節點的路徑相符:
- AutoIt3 執行檔位置:
C:\Program Files (x86)\AutoIt3\AutoIt3.exe
- AutoIt3Wrapper 位置:
...\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3 (或 .exe)
- 通用編譯參數設定:
例如:/in [來源] /out [目的] /icon [圖示路徑]
揭秘:AutoIt3Wrapper
我們不直接調用底層的 Aut2Exe.exe,而是透過 AutoIt3Wrapper。
Wrapper 的優勢在於:
- 支援源碼內的
#pragma 指令解析。
- 可將程式版本、著作權聲明直接封裝入 EXE 中。
- 支援 UPX 壓縮調用,減少檔案體積。
- 為後續的安全防護模組提供掛載空間。
演算法流程設計
- 遞迴掃描:確保能深入專案的每一個子模組資料夾。
- 條件過濾:這就是決定部署套件純度的「守門員」。
落實 BackUp 排除邏輯
在遍歷資料夾與檔案時,我們加入嚴格的路徑字串比對:
判斷條件:
當檔案路徑 (Full Path) 包含 \BackUp\ 目錄結構時,觸發 Skip (跳過) 機制。
- 不僅排除單一檔案,更排除整個備份子樹。
- 大小寫不敏感 (Case-insensitive) 比對,防止系統環境差異。
排除邏輯虛擬碼
Function ScanAndCompile( TargetFolder )
files = GetFilesRecursive( TargetFolder, "*.au3" )
For Each file In files
// 核心排除邏輯
If StringInStr( file.Path, "\BackUp\" ) > 0 Then
Log( "略過備份檔: " & file.Name )
Continue Loop
EndIf
// 正規編譯程序
CallWrapper( file.Path )
Next
End Function
工具操作:環境確認
準備進行自動化編譯前,請遵循標準作業程序:
- 開啟 AutoIt自動編譯工具。
- 檢視儀表板上的路徑狀態。
- 確認
AutoIt3執行檔位置 指向正確環境。
- 確認
AutoIt3Wrapper位置 沒有遺失。
工具操作:發動編譯
- 點選工具上的 「開始編譯」 按鈕。
- 系統會彈出對話框,請選擇 專案原始碼所在資料夾。
- 按下確定,工具接管所有後續動作,畫面將顯示即時進度。
成果:部署套件純度
透過工具的精準排除,我們達成了:
- 零污染:發布資料夾中絕對不會出現
test_copy.exe 或 old_version.exe。
- 高效率:原本需耗時 20 分鐘的手動編譯確認,縮短至 30 秒。
- 標準化:所有產出的 EXE 皆帶有統一的圖示與版本號結構。
最佳實踐與維護
為了讓自動化工具持續發揮價值,請注意:
- 目錄紀律:開發時嚴格遵守專案目錄結構,不要隨意變更 SciTE 的備份路徑預設行為。
- Wrapper 更新:升級 AutoIt 核心時,務必同步更新 Wrapper 設定檔。
- 例外管理:若未來有其他不需要編譯的資源檔 (如設計原稿),可將排除邏輯抽離為 Config 檔設定。
End of Module
Q&A
總結與討論
自動化編譯不僅是省時的工具,
更是品質控制 (QA) 在開發流程最前端的實踐。