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 的自動化工具。

  • 單一入口:視覺化介面操作,一鍵啟動。
  • 環境參數綁定:集中管理編譯器路徑。
  • 智慧過濾:內建核心排除演算法。
  • 批量處理:一次性處理目標目錄下所有合規腳本。

核心設定參數

工具執行前,需確認以下三個關鍵節點的路徑相符:

  1. AutoIt3 執行檔位置
    C:\Program Files (x86)\AutoIt3\AutoIt3.exe
  2. AutoIt3Wrapper 位置
    ...\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3 (或 .exe)
  3. 通用編譯參數設定
    例如:/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
                

工具操作:環境確認

準備進行自動化編譯前,請遵循標準作業程序:

  1. 開啟 AutoIt自動編譯工具
  2. 檢視儀表板上的路徑狀態。
  3. 確認 AutoIt3執行檔位置 指向正確環境。
  4. 確認 AutoIt3Wrapper位置 沒有遺失。

工具操作:發動編譯

完成環境確認後,只需一個動作即可完成複雜打包。

  • 點選工具上的 「開始編譯」 按鈕。
  • 系統會彈出對話框,請選擇 專案原始碼所在資料夾
  • 按下確定,工具接管所有後續動作,畫面將顯示即時進度。

成果:部署套件純度

透過工具的精準排除,我們達成了:

  • 零污染:發布資料夾中絕對不會出現 test_copy.exeold_version.exe
  • 高效率:原本需耗時 20 分鐘的手動編譯確認,縮短至 30 秒。
  • 標準化:所有產出的 EXE 皆帶有統一的圖示與版本號結構。

最佳實踐與維護

為了讓自動化工具持續發揮價值,請注意:

  • 目錄紀律:開發時嚴格遵守專案目錄結構,不要隨意變更 SciTE 的備份路徑預設行為。
  • Wrapper 更新:升級 AutoIt 核心時,務必同步更新 Wrapper 設定檔。
  • 例外管理:若未來有其他不需要編譯的資源檔 (如設計原稿),可將排除邏輯抽離為 Config 檔設定。
End of Module

Q&A

總結與討論

自動化編譯不僅是省時的工具,
更是品質控制 (QA) 在開發流程最前端的實踐。