Installshield 總結系列之Basic MSI

來源:互聯網
上載者:User

為什麼要寫寫篇部落格呢? 目的就是方便自己日後複習的時候,自己的總結以後可以看一下,同時對於別人也是一個參考,協助那些剛入門的人。

1. 什麼是Basic MSI Project

Basic MSI project就是製作基於Windows Installer Engine的安裝Installshield包(Installshield提供有限的支援,如Prevent Downgrade等),即我們常見的MSI格式的安裝檔案(也可以是以EXE形式的安裝檔案),只支援一些基本的命令和Windows的API,一句話,只能使用Windows Installer Engine支援的命令和API。

 

2: Multi Release, Multi Instance

什麼情況下會需要Multi Release呢?

一個產品,它有多種安裝版本,如如許可權的不同,就好象試用版,正式版,專業版之類的。但安裝的主體邏輯是一樣的,可以把它們放在同一個MSI Project裡面。

什麼情況系需要Multi Instance

一個產品A是另外多個產品的一部分,為了獨立維護(安裝、卸載、神經)產品A,所以,需要獨立的Product Code, Upgrade Code。即需要Multi Instance.

 

2.2如何定製不同的Release, Instance

打包過程的定製:這個可以藉助於Release Flag, 每個Release可以定義支援的Release Flag, 同時在Componet那邊標上對應的Flag.

安裝過程的定製:可以在component的condition裡面設定對應的條件,只有在滿足條件的情況下,這個component才會被安裝。

指令碼執行的定製:在Release裡面有一個Predefine Processor的選項,定義一個條件編譯護符,在指令碼裡面寫 #ifdef …#endif

3.Upgrade

對應Basic MSI, upgrade 分為major upgrade, minor upgrade.

什麼情況下會發生minor upgrade,版本的上漲,package code的變化都會導致minor upgrade.

什麼情況下需要做major upgrade. component的ID發生變化,component本身被刪除或者屬性被修改。merge modle的刪除,修改。

                                              Release的msi name被修改等都需要做major ugrade,否則安裝、維護的過程會出現問題。

PS:自己可以在Upgrade那一個頁面,定製minor upgrade, major upgrade的行為。

PS:對應minor upgrade, version的change不能只是AA.BB.CC.DD的最後“DD”部分的變化,否則component不會被Overwrite。

 

4: Prevent Downgrade

Windows Installer本身是基於Product Code來管理應用程式的,對應相同的Product Code的產品,它不支援降級。

PS:在Installshield 2011 Basic MSI Project中,Multi Instance的Release是可以進行降級的!(應該是Installshield的一個缺陷!)。

 

這裡的Prevent Downgrade機制,是針對Major Upgrade而言。

但是對於Installshield安裝包,它還支援Major Upgrade,即程式變化比較大的時候,如component本身發生了刪除時,就需要做major upgrade。Major upgrade意味著Product Code需要發生變化,而Windows Installer就會把它們當作兩個獨立的安裝包。加入Upgrade Code,就可以把這兩個產品聯絡起來,並做一些自訂的動作(在Upgrade的頁面進行設定),如安裝新產品前對老產品進行卸載。在Install Shield 2009後,就有一套預設的機制來Prevent Downgrade.

 

5.Silent Installation以及UI Level

對應Basic MSI project來說,靜默安裝要注意:
1. UI Sequence在靜默安裝時,不會被執行。

2. UI level=2表上靜默安裝,在對應的指令碼的地方,需要進行處理,否則靜默安裝會被block住。靜默安裝時,只有系統自己彈出的視窗會被忽略,使用者自己的messagebox還是會彈出來。

 

6.Support Drectory

Basic MSI和Installshield Project不太一樣的地方是,support dir需要用MSIGetProperty來擷取。

還有就是擷取當前安裝包執行的路徑:它包括以exe方式運行時,setup.exe的位置,以及以msi方式運行時的位置。它們分別對應”SETUPDIR” “SRCDIR”。即需要考慮這兩種情況。

 

如果上面有寫的不對的,可以用以下方式進行交流。

郵箱:whp_lcyz@163.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.