鮮為人知的Windows“外掛程式”MSI

來源:互聯網
上載者:User
一、初識Windows功能增強“外掛程式”MSI

我們經常可以看到許多軟體只有一個副檔名為MSI的檔案,雙擊這個檔案運行,就會出現和Windows應用軟體安裝非常相似的安裝過程,MSI檔案到底是什嗎?為什麼許多軟體開始用MSI格式來發行呢?請聽我慢慢說來。

1.MSI檔案的由來
說到MSI檔案,不得不先說說Windows Installer,它不只是安裝程式,而是可擴充的軟體管理系統。Windows Installer的用途包括:管理軟體的安裝、管理軟體組件的添加和刪除、監視檔案的複原以及使用復原技術維護基本的災難恢複。另外,Windows Installer還支援從多個源位置安裝和運行軟體,而且可以由想要安裝自訂程式的開發人員自訂。要想使用這些功能,就必須通過MSI檔案。MSI檔案是Windows Installer的資料包,它實際上是一個資料庫,包含安裝一種產品所需要的資訊和在很多安裝情形下安裝(和卸載)程式所需的指令和資料。MSI檔案將程式的組成檔案與功能關聯起來。此外,它還包含有關安裝過程本身的資訊:如安裝序列、目標檔案夾路徑、系統依賴項、安裝選項和控制安裝過程的屬性。

2.MSI的優勢
Windows Installer技術就是合并在一起發揮作用的兩個部分:用戶端安裝程式服務(Msiexec.exe) 和Microsoft軟體安裝(MSI)軟體包檔案。

Msiexec.exe 程式是 Windows Installer 的一個組件。 當 Msiexec.exe 被安裝程式調用時,它將用 Msi.dll 讀取軟體包檔案 (.msi)、應用轉換檔 (.mst) 併合並由安裝程式提供的命令列選項。 Windows Installer 執行所有與安裝有關的任務:包括將檔案複製到硬碟、修改註冊表、建立案頭捷徑、必要時顯示提示對話方塊以便使用者輸入安裝喜好設定。

當雙擊MSI檔案的時候,與之關聯的Windows Installer 的一個檔案Msiexec.exe 被調用,它將用Msi.dll讀取軟體包檔案(.msi)、應用轉換檔(.mst)進行進一步處理,然後 Windows Installer 執行所有與安裝有關的任務:包括將檔案複製到硬碟、修改註冊表、建立案頭捷徑,必要時顯示提示對話方塊以便使用者輸入安裝需要的資訊,就這樣,一個程式安裝到了你的電腦上。
採用MSI安裝的優勢在於你可以隨時徹底刪除它們,更改安裝選項,即使安裝中途出現意想不到的錯誤,一樣可以安全地恢複到以前的狀態,正是憑著此強大功能,越來越多的軟體開始使用MSI作為發行的方式了。   如果你對MSI檔案感興趣,可以用WinRAR等壓縮軟體開啟,看一下裡面的內容,滿足一下好奇心。

3、MSI格式檔案安裝支援程式:WinMe和WinXP對MSI支援得很好,但其他版本的Windows就需要安裝一個外掛程式才能使用MSI格式的檔案。

[URL=http://download.microsoft.com/download/WindowsInstaller/Install/2.0/NT45/EN-US/InstMsiW.exe]點這裡下載InstMsiW外掛程式[/URL]

二、定製自己的MSI檔案

前面我們介紹了很多MSI檔案的內容,其實MSI並不神秘、複雜,我們自己都能製作,並且製作MSI檔案的工具已經在Windows的安裝盤上了。

首先,找到Windows2000的安裝光碟片,雙擊下邊的這個位置的檔案:valueadd\3rdparty\Mgmt\Winstleadmle.msi,
(此檔案我已傳到網上,你可以到  這裡  下載)
很快軟體就自動安裝到了電腦中。在開始菜單的所有程式裡邊就多了“VERITAS software”組,點擊運行裡邊的“VERITAS discover”就可以開始製作MSI檔案了。

製作MSI檔案的基本原理就是,在我們安裝一個軟體以前,先給電腦的磁碟拍個“快照”。然後將要安裝的軟體安裝到電腦中,並對註冊表等內容做修改,等到確認這個軟體能正確運行後,再給電腦的磁碟拍個“快照”。Discover軟體會自動找出兩次“快照”的不同,並且產生一個MSI檔案。最後,如果你願意,可以使用VERITAS software組中的另一個工具:Veritas Software Console對這個MSI檔案進行進一步的封裝、調整,這樣一個MSI檔案包就產生了。

下面,我們具體通過一個例子來介紹一下如何使用Discover產生一個MSI檔案,假定我們的軟體my的安裝過程是:將my.exe檔案安裝到C:\programmeme files\myprog下,將run.dll放到windows\system裡,在註冊表的HKEY_LOCAL_MACHINE的software項中建立一個myprom項,並且在其中添加一個值為OK的value項目。

第一步:運行Discover,彈出程式介面,可以直接點“Next”按鈕繼續。

第二步:在圖3的對話方塊中,首先在第一文字框為你的程式起個名字,比如這裡用的“My programmeme”;第二個對話方塊是輸出MSI檔案的存放位置和檔案名稱,這裡選擇儲存為E:\my_setup.msi;第三個框為壓縮包的語言,可以使用其預設值。填好後點“Next”按鈕。

第三步:為Discover存放快照檔案選擇一個臨時的空間,可以選一個磁碟空間比較大的磁碟。

第四步:在接下來4的對話方塊中要選擇Discover需要掃描並拍“快照”的磁碟,你的程式要裝到哪個盤就選擇哪個盤,並且點一下“Add”按鈕加到要掃描檔案的列表中,你可以選擇幾個或者所有的磁碟,不過這樣會在掃描的過程中浪費更多的時間,所以應該盡量少選擇磁碟。這裡只選擇C盤,因為我們的軟體是裝到C盤的。然後點“Next”。

第五步:在5所示的對話方塊中為上一步選擇的每個磁碟選擇需要掃描的檔案夾或檔案,因為我們上一步只選擇了C盤,所以為C盤選擇就可以了。另外,Discover自動加入了一些特殊的檔案和目錄,我們可以根據需要決定是否將它們移出要掃描的檔案清單,不過最好保留它們。這裡我們把“C:\programmeme files”和Windows檔案夾添進去,先在左邊的檔案框中點中檔案或檔案夾,然後點Add按鈕就可以了。對於註冊表的掃描,Discover為了加快掃描速度,只掃描部分註冊表,可以掃描到大部分程式對註冊表的修改,如果不放心的話,也可以將下邊的“Enhanced Registry Scan”點中,這樣速度可能會慢很多,臨時檔案也大大增加,不過能對註冊表所有的改動加以記錄。由於我們的軟體對註冊表只是小改動,所以沒必要選擇掃描所有註冊表。然後點“Next”繼續。

第六步:接下來Discover將對系統進行掃描產生“快照”,要耐心的等待,可能要幾分鐘的時間才行。

第七步:在掃描完成後,會彈出一個對話方塊,大概意思就是告訴你掃描已經完成,問你是否要選擇一個程式來運行,從而自動安裝你的軟體,我們正要製作安裝程式,沒有程式可運行,所以要點“取消”按鈕。

第八步:接下來,我們就要手動安裝自己的軟體了,先將my.exe檔案拷貝到C:\programmeme files\myprog下,再把run.dll拷貝到windows\system裡,然後用登錄編輯程式在註冊表的HKEY_LOCAL_MACHINE的software項中建立一個myprom項,並在其中添加一個值為OK的value鍵。注意,除了這些改動,應盡量避免其他無關的改動。然後我們試著運行一下剛剛安裝的my.exe檔案,測試一下是否正確安裝。

第九步:確認安裝沒有問題了,要再次運行Discover程式,這次運行Discover時,出現的是6所示的一個介面,有兩個選項,第一項是產生安裝後的快照,用於與前一次的快照比較產生MSI檔案,第二個選項是放棄上一次的掃描,當然要選第一項了,然後點“Next”。這時Discover又開始重新對電腦進行掃描,產生“快照”,並自動產生了安裝檔案。

第十步:如果你願意,可以啟動與Discover程式在一起的VERITAS Software console對MSI檔案的資訊進一步更改,過程比較簡單,只要先開啟一個MSI檔案,然後就可以進行改動了,這裡就不介紹了。
就這樣,我們就產生了一個自己的MSI檔案了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.