括號使用於目錄名稱的問題

最近很少寫一些技術性的東西,剛好這幾天工作上解決一個問題,就順手寫一下。

產品安裝程式用 InstallShield 撰寫,最近發現 32-bit 安裝程式在 64-bit Windows 無法安裝在預設給 32-bit 用的 C:\Program Files (x86) 路徑下面,想當然是安裝程式把括號視為無效的字元給擋住。

修改了判斷用的正則表示式(Regular Expression)重新編譯之後丟上測試機器去安裝。Done!

通常,測試員在測試安裝程式的時候,會在路徑這種欄位輸入一堆有的沒的字元(有效與無效)做測試。其實,Windows 或 Linux 下面使用括號是有效的。

Windows 下頭無效的字元除了 ASCII/Unicode 1~31 編碼字母外還有引號(”)、小於(<)、大於(>)、管線(|)、Backspace (\b)、null (\0) 與 tab (\t)(資料來源為 MSDN – Path.GetInvalidPathChars Method (System.IO))。

安裝程式在設計安裝案例時,當然希望使用者輸入比較正常一點的字元,例如只有大小寫、數字以及幾種符號,沒把括號納入。但…當初誰知道 Windows 64-bit 會來個 C:\Program Files (x86) 這樣的設計呢?XD