2014年9月4日 星期四

製作 MSI 檔案 (make msi file from exe)

一般我們編譯完程式  在windows 底下常見的就是 exe安裝檔
透過exe安裝檔我們就可以執行安裝 為何要轉換成 MSI呢?

目前kaga 所遇到 需要轉換成 MSI檔的原因就是 配合AD server 派送安裝
由於AD server 只能使用MSI檔進行派送安裝
所以勢必得轉換過去

> MSI檔案是主要與Windows Installer File (Microsoft Corporation)相關的雜項檔案。

Step1 : 事前準備

> 環境
這邊Kaga 十分建議 使用VM 的環境來建構MSI檔
由於 在製作MSI檔 有點類似 比對安裝前安裝後 整個系統檔案的差異
所以越乾淨的環境 製作的速度比較快 也比較好處理

*kaga 使用的是 VM windows 7 32bit


> 工具
WinINSTALL-LE (好像也有 PRO 版本 但這版本 已經足夠應付我的工作)
備份檔


Step2 :  掃描環境變數
***建議使用 Administrator 執行 這攸關你MSI檔權限問題~




執行winINSTALL 程式
點選 Windows Installer Packages 後 左上方會出現一個放大鏡圖示 點選它
Run Discover 開始掃描未執行exe安裝檔前 的環境


在 Arguments 可以帶參數 kaga使用目前都直接空白
詳細的參數設定 可以參考文末的PDF 說明檔

首先要建立專案的名稱 可以幫你產生資料夾

這邊是要你指定 它所產生暫存檔案要存放在哪個空間 
一般就直接選擇C 就可以了


選擇 要掃描的空間,可以選多個
看你的exe安裝檔 安裝後檔案會需要存取於那些空間

接下來 會出現 各種系統檔案與資料夾的列表
主要讓你 可以篩選需要掃描的檔案是否移除或者增加
這邊kaga 就沒特別截圖了 通常都直接下一步

掃描ing.......
PS:掃描的速度跟你的選取使用空間有關 檔案越多掃得越久 
      所以環境越單純越好 切記!
最後會跳出這個視窗 問你是否直接執行 exe安裝檔
這只是方便你直接操作 如果按取消再去執行安裝 也可以的


Step3 : 安裝exe檔案  ... 就執行你的EXE檔麻
*** 如果你的程式會需要跑服務類型 建議可以在安裝後重新開機一次 再繼續下面的步驟
       這樣可以存取到比較正確的 執行權限

Step4 : 再次掃描環境變數
             再次打開 winInstall  一樣點擊 放大鏡圖示 Run Discover

第二次運行 discover ,會出現不一樣的選單 第一個就是
你已經掃描過一次要進行第二次的差異比對
如果你選了第二個 則會當成第一次 掃描



   

Step5 : 修改 第一次產生的MSI檔
              通常我們 第一次產生的MSI檔 不建議直接使用
              因為其中會包含不少 跟我們安裝不相關的內容 是需要經過調整的
              ex: 剛好在掃描後 才打開skype 就會連 skype 的暫存檔都被認為有變更而被帶進來MSI檔


                                     
這次點擊資料夾圖示 選擇你建立專案資料夾內的 MSI檔
建議勾選Copy Package Source Files
不小心玩壞了 還可以再來一次


此時就會產生一個新的 MSI 專案

點擊專案 會出現 一堆可以設定的東西
這邊kaga 只簡單介紹幾個有用到的設定
因為可以調整的地方真的很多>< 就要看各自需求了
右上角的ARP 也就是這個安裝檔 出現在 控制台/新增移除 裡面的圖示
當然你也可以不勾選 也就不會顯示了

這個地方的設定有點類似 我們有些安裝完後會問user 
安裝是for user 還是這台電腦都可以使用
下方的 Offer to reset .... 指的是是否要求使用者安裝後重開機!
其他檢查重點
1. Files >  這邊包含整個MSI檔 包含的路徑與檔案 以及 移除檔案也有
                需要仔細查看 避免不小心 安裝後改變了 原本電腦的東西
2. Registry >  這邊也要檢查是否 它裡面新增的註冊檔 跟你的程式有關
3. Service >  如果需要新增服務的 這邊可能也要設定

Step6 : 產生MSI檔

其實 新的MSI專案 在上面這些動作 並還沒有產生MSI檔
此時已經設定完後 需要產生MSI檔

在專案名稱案又建 Compress 跳出視窗後按確定 完成!
後續只要在 
C:\Program Files\Scalable\WinINSTALL\Packages\testProgram\
就會看到 正確的 MSI 檔囉!
---------------------------------------------------------------------
以上步驟 即可將你的 exe安裝檔 轉換成 msi 來使用
建議後續還是多個平台安裝看看
如果遇到程式無法產生檔案 或者讀取不到其中某幾個程式
建議 將一些呼叫的路徑檢查是否為"絕對路徑"
另外就是執行的權限在重新檢視一下


winInstall 電子說明書 有包含 關於 dicover 的參數設定
https://cs.uwaterloo.ca/twiki/pub/CF/WindowsPackaging/GettingStartedWinstall.pdf




沒有留言:

張貼留言

留言前請三思,禁止任何色情暴力等不當言語