[VS2010] 使用 Windows Installer 封裝 VB6 專案


話說,工作上有一個 VB6 專案,客戶需要能從介面上切換語系,預設為英文,但要能切換繁中。
以前在學校為了寫英文研討會,就有把 VB6 程式國際化的經驗,透過語系翻譯檔外掛,存成:
$(AppPath)\Lang\{LangID}.ini
這次想說就用相同的方式,只是專案內跟語言相關的檔案比較多,所以存成:
$(AppPath)\Lang\{LangID}\filename.ext

工作完成後,拿起 VB6 封裝部署精靈一跑,糗了,VB6 的封裝部署精靈不允許相同檔名的檔案重複出現…
想了一下,免費的方案就是用 VS2010 內建的安裝專案。

首先先讓 VB6 封裝部署精靈產生安裝程式,自己要額外加的檔案可以不用選,要讓 VB6 封裝程式告訴你那些元件要散布,記得保留 Support 目錄:

選擇上方的標準安裝程式

選擇上方的標準安裝程式

接著開啟 Setup.lst 來辨識所需的系統檔案。

Setup.lst 的內容

Setup.lst 的內容

其中

$(AppPath) : 應用程式目錄

$(WinSysPath)、$(WinSysPathSysFile) : 為系統目錄,x86 下就是 C:\Windows\system32 。

$(DLLSelfRegister) : 是需要註冊的 ocx / dll 檔案

然後在 Visual Studio 2010 專業版以上,新增專案:

其他專案類型 > 安裝和部署 > Visual Studio Installer > 安裝專案

這邊開起來是空白專案,從檔案系統加入 Support 目錄下的所有檔案:

VS2010 Setup 專案內的檔案系統

VS2010 Setup 專案內的檔案系統

將在應用程式下需要的檔案拖入應用程式資料夾,包含子目錄,VS2010 會自動依結構建立,再到使用者程式功能表建立開始工具列的群組與捷徑指向應用程式。

系統資料夾預設沒有,點選目標電腦上的檔案系統,滑鼠右鍵新增,再將系統檔案拖入此目錄,一般來說 .ocx 會自動標記需要註冊,所有原先 VB6 做出來的 setup.lst 內需要註冊的檔案都要人工過濾一遍,在 VS2010 內需要註冊的檔案屬性 Register 均為 vsdrfCOMSelfReg ,如上圖。

最後測試封裝好的程式,一般來說推薦準備一個空白的虛擬機來測試。

執行安裝程式

執行安裝程式

因為客戶預計安裝在英文 Windows 下,所以準備英文環境及封裝成英文版的。測試結果有些舊版使用 big5  的部分會出問題,我自己新增的都改為 UTF-8 格式,但是考慮到舊版相容的部分不能變更 (我有做自動偵測,所以其實新版的是可以轉為 UTF-8 加密檔),所以把控制台地區語言選項非 Unicode 程式改為 Taiwan 就正常了。

考慮到 UAC ,我的預設安裝路徑就設定到 D 碟:

選擇目錄的磁碟空間顯示也是英文的

選擇目錄的磁碟空間顯示也是英文的

當然,用 VS2010 並非是 VS2008/2005 不能用,而是前幾篇可以看到,我把最完整的封裝都整理到 VS2010 ,所以就選擇用 VS2010 來封裝了。

Categories: 封裝部署, 工作點滴 | 發表留言

文章分頁導航

發表留言

在 WordPress.com 建立免費網站或網誌.