5e122b47ec
leo 07-28:「Windows 解開有 2 個 exe,被瀏覽器擋住,如果只有 1 個, 我還可以把 exe 改成 e_e 讓朋友改回來,但現在這樣完全不行」。 做法:build-windows.sh 先編 collector.exe 到 tray 目錄供 //go:embed, tray 啟動時 ensureEmbeddedCollector() sha256 比對後解壓到 ~/.arcrun-rag/bin/, 失敗 fallback 同層(舊版相容);Mac 走 build-tag no-op 完全不動。 驗收(總管親跑):PE32+ GUI exe/zip 僅 1 檔 16.9MB<20MB jsDelivr 上限/ collector 特徵字串在 exe 肚裡(grep=1)/Mac go build+test 全綠/tray 測試綠。 (實作=子 CC;build+驗收+commit=總管)
35 lines
975 B
Go
35 lines
975 B
Go
//go:build windows
|
||
|
||
package main
|
||
|
||
import (
|
||
"crypto/sha256"
|
||
_ "embed"
|
||
"os"
|
||
"path/filepath"
|
||
)
|
||
|
||
//go:embed arcrun-collector.exe
|
||
var collectorExeBytes []byte
|
||
|
||
// ensureEmbeddedCollector 把內嵌的 collector.exe 解壓到 ~/.arcrun-rag/bin/。
|
||
// 用 sha256 比對避免每次啟動都重寫磁碟;回傳可執行的絕對路徑。
|
||
// t77-lite(leo 2026-07-28:「Windows 解開有 2 個 exe 被瀏覽器擋住;如果只有 1 個,
|
||
// 我還可以把 exe 改成 e_e 讓朋友改回來」)
|
||
func ensureEmbeddedCollector() (string, error) {
|
||
dest := filepath.Join(appDir(), "bin", "arcrun-collector.exe")
|
||
embedded := sha256.Sum256(collectorExeBytes)
|
||
if existing, err := os.ReadFile(dest); err == nil {
|
||
if sha256.Sum256(existing) == embedded {
|
||
return dest, nil
|
||
}
|
||
}
|
||
if err := os.MkdirAll(filepath.Dir(dest), 0o755); err != nil {
|
||
return "", err
|
||
}
|
||
if err := os.WriteFile(dest, collectorExeBytes, 0o755); err != nil {
|
||
return "", err
|
||
}
|
||
return dest, nil
|
||
}
|