詳細見AppInstall網(wǎng)站中《單MSI引導多MSI安裝和卸載》一章,http://www.appinstall.cn/viewthread.php?tid=840&extra=page%3D1。
有關安裝包嵌套調(diào)用,之前也琢磨過很多中辦法,IntallScript,InstallScript MSI,MSI各種類型互相嵌套,但惟獨發(fā)現(xiàn)MSI包無法嵌套,原因很簡單,Windows Installer只接受單實例安裝。
解決方案:
1. 首先創(chuàng)建主Basic MSI工程,設計組織你的安裝程序。
2. 【Installation Designer】 -> 【Media】 -> 【Releases】視圖, 選中Chained .msi Packages,點擊鼠標右鍵選擇New Chained Package Ins
3. 在Installation(run-time path)添加MSI包,出現(xiàn)提示時選擇Yes(此情況適合壓縮的安裝包)
4. Product code保留默認
5. UI Level建議選擇No UI(/qn),靜默安裝
6. Install condition就是默認的Not Installed
7. Install properties就保留默認空,其他如愛新覺羅.奕所講的“此處填安裝msi的參數(shù),例如ADDLOCAL=ALL COMPANYNAME=MS”
8. Removal condition輸入:Not Installed,如果保留默認的REMOVE="ALL",卸載時在系統(tǒng)的“添加/刪除”里子MSI包沒被清空,其實已經(jīng)卸載了
9. Remove properties默認為空
10. Release flags默認為空
11. Streamed files中就是默認你的子MSI包
12. Delete streamed files after installation保留默認的勾選
13. 之后重新Build安裝包并安裝,你會在系統(tǒng)的“添加/刪除”中看到主MSI程序和子MSI程序都被安裝包目標機上
補充:
1. 必須是通過Windows Installer 4.5以上版本(可以通過Redistributables添加Windows Installer 4.5,目前Windows XP系統(tǒng)的Windows Installer多為3.1)
2. 步驟7中如果設置了 ARPSYSTEMCOMPONENT=1 可以將子MSI程序隱藏(不在系統(tǒng)的“添加/刪除”里顯示)
3. 如果非壓縮的安裝包,可以在步驟3中選擇No,之后將子MSI添加到Support Files/Advanced Files/Disk 1下,調(diào)用的根路徑是[SourceDir],之后按照相應文件結(jié)構調(diào)用