NativePHP Laravel 桌面應用
NativePHP 打包 Windows 版,遇到的簽章與 SmartScreen 問題
現象
用 NativePHP 把 ReadLater 打包成 Windows 版之後,本機執行完全正常, 但傳給另一台電腦安裝,Windows SmartScreen 跳出「Windows 已保護您的電腦」, 直接擋下安裝程式,要點好幾次「其他資訊」才能繼續。
原因
沒有簽章的 .exe 在 Windows 上先天不被信任,SmartScreen 會依照下載來源
與使用者統計數字決定要不要放行,全新、沒有簽章、下載次數少的執行檔幾乎
一定會被攔。這不是打包設定錯誤,是 Windows 對未知發行者的預設行為。
目前的處理方式
專案還在個人維護階段,還沒有申請 EV 程式碼簽章憑證(費用跟審核流程對 side project 來說偏重),所以先做兩件事降低阻力:
- 在下載頁面明確寫清楚「會看到 SmartScreen 警告,點『其他資訊』→ 『仍要執行』」,把預期心理準備做在前面,而不是讓使用者自己去猜。
- 提供 SHA256 checksum,讓在意安全性的使用者可以自行核對安裝檔沒有被竄改。
之後如果 ReadLater 有比較穩定的使用者數,會考慮申請憑證,把這一步的 摩擦感降到最低。目前先把力氣放在功能本身。