MSI文件 - Windows Installer數(shù)據(jù)包
MSI[ Microsoft Installer ]文件是Windows Installer的數(shù)據(jù)包,它實(shí)際上是一個(gè)數(shù)據(jù)庫(kù),包含安裝一種產(chǎn)品所需要的信息和在很多安裝情形下安裝 - 和卸載程序所需的指令和數(shù)據(jù)。MSI文件將程序的組成文件與功能關(guān)聯(lián)起來(lái)。此外,它還包含有關(guān)安裝過(guò)程本身的信息:如安裝序列、目標(biāo)文件夾路徑、系統(tǒng)依賴項(xiàng)、安裝選項(xiàng)和控制安裝過(guò)程的屬性。
由來(lái)
說(shuō)到MSI文件,不得不先說(shuō)說(shuō)Windows Installer,它不只是安裝程序,而且是可擴(kuò)展的軟件管理系統(tǒng)。Windows Installer的用途包括:管理軟件的安裝、管理軟件組件的添加和刪除、監(jiān)視文件的復(fù)原以及使用回滾技術(shù)維護(hù)基本的災(zāi)難恢復(fù)。另外,Windows Installer還支持從多個(gè)源位置安裝和運(yùn)行軟件,而且可以由想要安裝自定義程序的開(kāi)發(fā)人員自定義。要想使用這些功能,就必須通過(guò)MSI文件。MSI文件是Windows Installer的數(shù)據(jù)包,它實(shí)際上是一個(gè)數(shù)據(jù)庫(kù),包含安裝一種產(chǎn)品所需要的信息和在很多安裝情形下安裝(和卸載)程序所需的指令和數(shù)據(jù)。MSI文件將程序的組成文件與功能關(guān)聯(lián)起來(lái)。此外,它還包含有關(guān)安裝過(guò)程本身的信息:如安裝序列、目標(biāo)文件夾路徑、系統(tǒng)依賴項(xiàng)、安裝選項(xiàng)和控制安裝過(guò)程的屬性。
優(yōu)勢(shì)
Windows Installer技術(shù)就是合并在一起發(fā)揮作用的兩個(gè)部分:客戶端安裝程序服務(wù)(Msiexec.exe)和Microsoft軟件安裝(MSI)軟件包文件。
Msiexec.exe程序是 Windows Installer 的一個(gè)組件。當(dāng)雙擊MSI文件的時(shí)候,與之關(guān)聯(lián)的Windows Installer的一個(gè)文件Msiexec.exe被調(diào)用,它將用Msi.dll讀取軟件包文件(.msi)、應(yīng)用轉(zhuǎn)換文件(.mst)進(jìn)行進(jìn)一步處理,然后 Windows Installer 執(zhí)行所有與安裝有關(guān)的任務(wù):包括將文件復(fù)制到硬盤(pán)、修改注冊(cè)表、創(chuàng)建桌面快捷方式,必要時(shí)顯示提示對(duì)話框以便用戶輸入安裝需要的信息,就這樣,一個(gè)程序安裝到了你的電腦上。
采用MSI安裝的優(yōu)勢(shì)在于你可以隨時(shí)徹底刪除它們,更改安裝選項(xiàng),即使安裝中途出現(xiàn)意想不到的錯(cuò)誤,一樣可以安全地恢復(fù)到以前的狀態(tài),正是憑著此強(qiáng)大功能,越來(lái)越多的軟件開(kāi)始使用MSI作為發(fā)行的方式了。如果你對(duì)MSI文件感興趣,可以用WinRAR等壓縮軟件打開(kāi),看一下里面的內(nèi)容,滿足一下好奇心。
安裝支持程序
WinMe和WinXP以及后續(xù)版本對(duì)MSI支持得很好,但Windows Me以下版本的就需要安裝一個(gè)插件才能使用MSI格式的文件。
打開(kāi)
MSI支持雙擊打開(kāi)。它比EXE更好些,你可以單擊右鍵看看多了些什么,現(xiàn)在的大公司都是MSI進(jìn)行封裝程序,便于安裝。
怎么定制自己的文件
前面我們介紹了很多MSI文件的內(nèi)容,其實(shí)MSI并不神秘、復(fù)雜,我們自己都能制作,并且制作MSI文件的工具已經(jīng)在Windows的安裝盤(pán)上了。
首先,找到Windows2000的安裝光盤(pán),雙擊下邊的這個(gè)位置的文件:valueadd//3rdparty//Mgmt//Winstleadmle.msi,
很快軟件就自動(dòng)安裝到了電腦中。在開(kāi)始菜單的所有程序里邊就多了“VERITAS software”組,點(diǎn)擊運(yùn)行里邊的“VERITAS discover”就可以開(kāi)始制作MSI文件了。
制作MSI文件的基本原理就是,在我們安裝一個(gè)軟件以前,先給電腦的磁盤(pán)拍個(gè)“快照”。然后將要安裝的軟件安裝到電腦中,并對(duì)注冊(cè)表等內(nèi)容做修改,等到確認(rèn)這個(gè)軟件能正確運(yùn)行后,再給電腦的磁盤(pán)拍個(gè)“快照”。Discover軟件會(huì)自動(dòng)找出兩次“快照”的不同,并且生成一個(gè)MSI文件。最后,如果你愿意,可以使用VERITAS software組中的另一個(gè)工具:Veritas Software Console對(duì)這個(gè)MSI文件進(jìn)行進(jìn)一步的包裝、調(diào)整,這樣一個(gè)MSI文件包就生成了。
下面,我們具體通過(guò)一個(gè)例子來(lái)介紹一下如何使用Discover生成一個(gè)MSI文件,假定我們的軟件my的安裝過(guò)程是:將my.exe文件安裝到C://programmeme files//myprog下,將run.dll放到windows//system里,在注冊(cè)表的HKEY_LOCAL_MACHINE的software項(xiàng)中建立一個(gè)myprom項(xiàng),并且在其中添加一個(gè)值為OK的value項(xiàng)目。
第一步:運(yùn)行Discover彈出程序界面
可以直接點(diǎn)“Next”按鈕繼續(xù)。
第二步:在圖3的對(duì)話框中
首先在第一文本框?yàn)槟愕某绦蚱饌€(gè)名字,比如這里用的“My programmeme”;第二個(gè)對(duì)話框是輸出MSI文件的存放位置和文件名,這里選擇保存為E://my_setup.msi;第三個(gè)框?yàn)閴嚎s包的語(yǔ)言,可以使用其默認(rèn)值。填好后點(diǎn)“Next”按鈕。
第三步:為Discover存放快照文件
選擇一個(gè)臨時(shí)的空間,可以選一個(gè)磁盤(pán)空間比較大的磁盤(pán)。
第四步:在接下來(lái)的對(duì)話框中要選擇Discover
需要掃描并拍“快照”的磁盤(pán),你的程序要裝到哪個(gè)盤(pán)就選擇哪個(gè)盤(pán),并且點(diǎn)一下“Add”按鈕加到要掃描文件的列表中,你可以選擇幾個(gè)或者所有的磁盤(pán),不過(guò)這樣會(huì)在掃描的過(guò)程中浪費(fèi)更多的時(shí)間,所以應(yīng)該盡量少選擇磁盤(pán)。這里只選擇C盤(pán),因?yàn)槲覀兊能浖茄b到C盤(pán)的。然后點(diǎn)“Next”。
第五步:在對(duì)話框中為上一步選擇
每個(gè)磁盤(pán)選擇需要掃描的文件夾或文件,因?yàn)槲覀兩弦徊街贿x擇了C盤(pán),所以為C盤(pán)選擇就可以了。另外,Discover自動(dòng)加入了一些特殊的文件和目錄,我們可以根據(jù)需要決定是否將它們移出要掃描的文件列表,不過(guò)最好保留它們。這里我們把“C://programmeme files”和Windows文件夾添進(jìn)去,先在左邊的文件框中點(diǎn)中文件或文件夾,然后點(diǎn)Add按鈕就可以了。對(duì)于注冊(cè)表的掃描,Discover為了加快掃描速度,只掃描部分注冊(cè)表,可以掃描到大部分程序?qū)ψ?cè)表的修改,如果不放心的話,也可以將下邊的“Enhanced Registry Scan”點(diǎn)中,這樣速度可能會(huì)慢很多,臨時(shí)文件也大大增加,不過(guò)能對(duì)注冊(cè)表所有的改動(dòng)加以記錄。由于我們的軟件對(duì)注冊(cè)表只是小改動(dòng),所以沒(méi)必要選擇掃描所有注冊(cè)表。然后點(diǎn)“Next”繼續(xù)。
第六步:接下來(lái)Discover將對(duì)系統(tǒng)進(jìn)行掃描
生成“快照”,要耐心的等待,可能要幾分鐘的時(shí)間才行。
第七步:在掃描完成
后會(huì)彈出一個(gè)對(duì)話框,大概意思就是告訴你掃描已經(jīng)完成,問(wèn)你是否要選擇一個(gè)程序來(lái)運(yùn)行,從而自動(dòng)安裝你的軟件,我們正要制作安裝程序,沒(méi)有程序可運(yùn)行,所以要點(diǎn)“取消”按鈕。
第八步:安裝
接下來(lái),我們就要手動(dòng)安裝自己的軟件了,先將my.exe文件拷貝到C://programmeme files//myprog下,再把run.dll拷貝到windows//system里,然后用注冊(cè)表編輯器在注冊(cè)表的HKEY_LOCAL_MACHINE的software項(xiàng)中建立一個(gè)myprom項(xiàng),并在其中添加一個(gè)值為OK的value鍵。注意,除了這些改動(dòng),應(yīng)盡量避免其他無(wú)關(guān)的改動(dòng)。然后我們?cè)囍\(yùn)行一下剛剛安裝的my.exe文件,測(cè)試一下是否正確安裝。
第九步:確認(rèn)安裝
沒(méi)有問(wèn)題了,要再次運(yùn)行Discover程序,這次運(yùn)行Discover時(shí),出現(xiàn)的是如圖6所示的一個(gè)界面,有兩個(gè)選項(xiàng),第一項(xiàng)是生成安裝后的快照,用于與前一次的快照比較生成MSI文件,第二個(gè)選項(xiàng)是放棄上一次的掃描,當(dāng)然要選第一項(xiàng)了,然后點(diǎn)“Next”。這時(shí)Discover又開(kāi)始重新對(duì)電腦進(jìn)行掃描,生成“快照”,并自動(dòng)生成了安裝文件。
第十步:
如果你愿意,可以啟動(dòng)與Discover程序在一起的VERITAS Software console對(duì)MSI文件的信息進(jìn)一步更改,過(guò)程比較簡(jiǎn)單,只要先打開(kāi)一個(gè)MSI文件,然后就可以進(jìn)行改動(dòng)了,這里就不介紹了。
就這樣,我們就生成了一個(gè)自己的MSI文件了。
