close

Windows Installer(Windows安裝程序)

從維基百科,自由的百科全書
Windows安裝程序
WinInstall5 Win7.png
默認的窗口(運行msiexec.exe後)
原始作者(S) 微軟
穩定版本 5.0
作業系 ​​統 視窗
類型 安裝
許可 專有

Windows安裝程序 (以前稱為Microsoft安裝 [1] )是一個現代的安裝,維護和刪除軟件使用微軟Windows系統的軟件組件。 安裝信息,往往是文件本身, 打包安裝包 ,鬆散的關係數據庫作為結構 OLE COM結構化貯存,俗稱為“MSI文件”,從它們的默認,文件擴展名。 Windows安裝程序包含安裝程序API從它的前身,顯著的變化。 新功能包括一個GUI 框架和自動生成的卸載順序。 Windows Installer是定位為一個獨立的可執行安裝程序框架,作為舊版本的InstallShield Wise(這兩種產品的更高版本的基於Windows Installer )和 NSIS的替代。

微軟鼓勵第三方使用Windows Installer的安裝框架的基礎上,使他們正確同步與其他的安裝,並保持一致的內部數據庫已安裝的產品。 依賴的重要特徵, 如回滾和版本一致的可靠運行的內部數據庫。 此外,Windows Installer的便利,未經授權的用戶通過代理執行軟件安裝最少特權原則。

目錄

 [hide

[ 編輯 ]包的邏輯結構

一個包描述的一個或多個完整產品的安裝(Windows安裝程序不處理產品之間的依賴關係)和普遍確定由GUID(PackageCode財產)。 一個產品的組成部分 ,進入功能分組。

[ 編輯 ] 產品

一個單一的,安裝,工作程序(或程序集),是一個產品。 一個產品確定一個唯一的GUID(ProductCode屬性),在世界各地提供一個權威的身份。 的GUID,允許結合的版本號(ProductVersion屬性)發布該軟件的文件和註冊表項管理。 一個產品是不相同的:作為一個包,一個包確定一個唯一的GUID(摘要信息流中存儲的),MSI文件的所有內容,並提供身份和發布管理。。 發布產品的管理僅適用於在文件和註冊表項,使軟件應用程序的變化。 推出的一個包管理,包邏輯和其他元數據,涉及到如何包運行時執行。 例如,在軟件應用程序的EXE可能需要的ProductCode和/或ProductVersion發布的軟件應用程序的管理要改變。 只添加一個啟動條件(與軟件應用程序,其餘的完全一樣,以前的版本相同),但仍然需要PackageCode改變釋放。msi文件本身的管理。

[ 編輯 ] 功能

一個特點是層次組組件的一個功能,可以包含任意數量的組件和其他功能(另一個特點中的一個特點是所謂的“子功能“)。 許多軟件包只涉及一個特點。 更複雜的安裝程序通常會顯示在運行時的“自定義安裝”對話框,從中最終用戶可以選擇安裝或刪除的功能。

包的作者定義的產品特性。 一個文字處理程序,例如,可能會提供主要的可執行程序,該程序的幫助文件,和可選的拼寫檢查和文具模塊的功能。

[ 編輯 ] 組件

組件是原子的一部分,一個產品的每一個組件被視為由Windows Installer為單位,例如,安裝開發人員可以使用條件來指定安裝只是一個組成部分。 組件可以包含文件目錄COM組件, 註冊表鍵,快捷鍵,和其他數據。 最終用戶不直接與組件進行交互。

組件識別的GUID全球,從而可以共享相同的組件在同一個包或多個包的幾個特點中,最好是通過使用合併模塊(雖然,這正常工作,不同的組件不應該分享任何的子組件)。

[ 編輯 ] 鍵路徑

一個關鍵的路徑是一個特定的文件,註冊表項,或ODBC數據源,包的作者指定給定組件的關鍵。 因為文件是最常見的類型的關鍵路徑,長期的密鑰文件是常用的。 一個組件可以包含最多一個關鍵路徑;如果一個組件有沒有明確的關鍵路徑,組件的目標目錄被視為關鍵路徑。 當一個基於 MSI的應用程序啟動時,Windows Installer會檢查這些重要的文件或註冊表項(即關鍵路徑)的存在。 如果當前的系統狀態和MSI軟件包中指定的值之間有一個不匹配(例如,一個關鍵文件丟失),然後在相關的功能是重新安裝。 這個過程也被稱為自我修復自我修復 沒有兩個部分應使用相同的密鑰路徑。

[ 編輯 ] 安裝階段

[ 編輯 ] 用戶界面

通常,用戶界面相查詢目標系統,並顯示安裝嚮導,使用戶可以改變各種選項會影響安裝。

然而,用戶界面的序列不應該做任何修改的系統。 三個原因如下。

  1. 用戶可以在安靜模式下安裝的MSI包,完全繞過這個階段 / QN(或/ QB / QR)選項運行 msiexec.exe命令行實用工具和命令行中指定,所有的信息精靈通常會聚集。 因此,在用戶界面的序列中發生的任何行動不會在靜默安裝期間進行。
  2. 同樣,點擊“ 刪除 ”按鈕添加或刪除程序面板運行的產品的一個基本的用戶界面卸載,再次與在用戶界面中序列發生的任何行動將不會被執行的結果。
  3. 行動,使系統的變化,不應該定在用戶界面序列,與用戶權限的用戶界面序列運行,而不是使用提升的特權,如以下部分所述。

在正常安裝的用戶界面序列的動作是在InstallUISequence表中定義。 同樣,有一個可放置在對話框和行動,以顯示和從內部管理安裝嚮導執行 AdminUISequence。

[ 編輯 ] 執行

當用戶點擊安裝按鈕, 完成或在一個典型的MSI安裝嚮導,安裝收益,執行階段,在實際安裝的軟件組件。 執行階段系統的變化,但不顯示任何用戶界面元素。

執行階段發生在兩個步驟:

在這個階段中,Windows Installer 立即模式。接收指令,無論是從用戶或應用程序,要安裝或卸載產品的功能。 請求導致執行行動 ,查詢安裝數據庫,建立一個內部腳本,詳細描述了執行階段序列。

遞延模式 ,在這個階段,建在即時模式執行該腳本在特權的Windows Installer 方面的服務(特別是在LocalSystem帳戶) 。 腳本必須由一個特權帳戶,因為異質性的情況下在一個安裝操作 - 例如發起執行,提升的權限是必要的服務,從非特權用戶的需求安裝請求。 (以提升的權限運行,但是,包必須由本地管理員部署或系統管理員使用組策略做廣告。)

InstallExecuteSequence表存儲在執行正常的安裝順序行動。 一個 MSI數據庫還可以包含AdminExecuteSequence和AdvtExecuteSequence表定義行動,以執行行政和廣告設施。

[ 編輯 ] 回滾

所有的安裝工作是事務性的。 [2]對於Windows Installer執行每個操作,它會產生一個相當於撤消操作,將撤消對系統所做的更改。 腳本動作失敗的情況下,任何推遲執行期間,或操作被用戶取消,所有執行的動作,直到這一點回滾,系統恢復到其原始狀態。 標準的Windows Installer操作自動寫入到一個回滾腳本的信息;創建自定義操作,改變目標系統的軟件包作者還應建立相應的回滾操作(以及卸載行動和卸載回滾操作)。 作為一個設計功能,如果正確應用這一機制也將回滾失敗的卸載了一個良好的工作狀態中的應用。

[ 編輯 ] 其他功能

[ 編輯 ]

Windows Installer可以做廣告的產品,而不是實際安裝。 [3]該產品將出現安裝到用戶,但它不會實際安裝,直到它是第一次運行時所觸發的切入點(由一個開始菜單快捷方式,打開產品配置來處理,或通過調用通告COM類的文件)。 包可以由管理員使用組策略或其他部署機制進行廣告宣傳,或/ JM(每台機器的廣告)或/菊的運行 MSIEXEC可執行文件(每用戶廣告)開關。 還應當指出,一些MSI包在InstallShield撰寫可能會阻止使用這些和其他本地的MSI功能。

用戶必須具有管理員權限才能完成廣告安裝在大多數的工作場所,最終用戶不是管理員,這種分配方法將失敗。 微軟創造了一個通過組策略的解決方法,以“提升用戶權限”期間的MSI安裝。 這通常是由系統管理員可見損害,因為任何MSI的安全性,將自動獲得管理員權限。

[ 編輯 ] 安裝需求

[4]廣告類似,它由安裝在功能 ,只要用戶嘗試使用它們。

[ 編輯 ] 管理安裝

管理安裝創建一個壓縮的源圖像的產品,通常被用於安裝或運行應用程序從網絡位置。[5 ]管理安裝是不是一個典型的安裝,在它不創建任何快捷方式,註冊COM服務器,創建一個“添加或刪除程序”條目,等等。 通常管理安裝,使用戶能夠安裝在這種運行方式的特點,從壓縮的安裝源的產品。

管理安裝也非常有用,當創建 Windows Installer修補程序,這需要一個產品的早期和當前版本的未壓縮的圖像,以計算二進制文件的區別。 管理安裝 / a開關運行 MSIEXEC可執行。

[ 編輯 ] 自訂動作

安裝程序包的開發人員可以編寫代碼來為自己的目的,在一個 DLL交付。 這可以在安裝過程中的序列,其中包括當用戶點擊一個按鈕在用戶界面,或在InstallExecuteSequence執行。 自定義操作,通常是驗證產品的許可證密鑰,或初始化更複雜的服務。 開發人員通常應提供卸載過程中使用的逆的自定義操作。

MSIEXEC提供了一種方式突破後加載指定的自定義操作DLL,但在此之前調用行動。[2 ]

[ 編輯 ] 合併模塊和嵌套可執行

Windows Installer程序包可能包含另一個要在同一時間安裝的軟件包。 這些都是理想的。msm文件組件提供,但也可能是一個單獨的可執行程序,這將是從安裝包解壓在InstallExecuteSequence可以立即運行。 文件,然後有選擇地InstallExecuteSequence結束前被刪除,所以是用舊的安裝程序使用的理想選擇。

[ 編輯 ] 雜項

Windows Installer允許運行的應用程序直接從網絡共享 ,而不需要一個本地副本( 從源代碼運行 ),它可以恢復被損壞或刪除的文件,修復破碎裝置註冊表條目和應用程序的快捷方式,它支持每個用戶安裝應用;成路徑,它可以解決組件標識符,允許應用程序以避免硬編碼文件路徑和它本身支持的補丁(補丁創建屬性的msp文件。)和其他自定義的包,通過操作(轉換或MST文件。)一個包的關係數據庫。 2.0版開始,它支持數字簽名和版本3.0起, 增量壓縮修補程序。

它也是在安裝的軟件框架,它是高度透明的視窗中是獨一無二的。 記錄完整的API和所有的命令行選項;包自由的可視和可編輯的免費的工具和編程(反對的所有權和弱加密包,InstallShield [需要的引證 ]);和文件檔案格式是有據可查內閣文件格式[需要的引證 ]

[ 編輯 ] 文件提取

單獨的文件可以從MSI文件中提取不開展一個完整的安裝,或者通過使用適當的安裝程序命令 行[6] [7 ],或某些第三方軟件,如7 - ZIP注:並非所有文件可以提取使用這些方法,如一個文件的不同版本安裝的基礎上選項,將無法正確提取

[ 編輯 ] Windows Vista中

的Windows Installer 4.0,這與出貨Windows Vista中 ,整合了新的功能,採取利用Vista的用戶帳戶控制架構。 MSI包可以被標記為不要求提升的權限安裝,從而使一個包來安裝,而不會提示管理員憑據的用戶(提供安裝,不寫任何領域,一個普通用戶沒有訪問,包括程序文件)。 Windows Installer還結合重新啟動管理;安裝或更新應用程序或系統的組成部分,與“全”的用戶界面模式時,用戶將顯示可關閉受影響的應用程序列表,然後重新啟動文件後已更新。 在靜默模式下運行的安裝動作自動執行這些應用程序重新啟動。 系統的服務和托盤應用程序也可以以這種方式重新啟動。

[ 編輯 ] 發展Installer軟件包

創建一個新的應用程序的安裝包是不平凡的。 這是要指定必須安裝哪些文件,其中,哪些註冊表項。 任何不規範操作,可以使用自定義操作,這是典型的DLL中開發。 有許多商業和免費產品的數量,以協助創建MSI軟件包, 包括Visual Studio,InstallShield Installaware ,智者安裝,高級安裝 WiX 。 在不同程度上的用戶界面和不太常見的情況,如無人值守安裝的行為,可以配置。 一旦準備,安裝程序包“編譯”,通過閱讀說明,並從開發者的本地計算機中的文件,並創建。msi文件。

在開始安裝的用戶界面(對話框),可以改變或由安裝工程師開發一個新的安裝配置。 有一個按鈕,文本框和標籤,可以在一個對話盒序列安排的有限的語言。 應該能夠沒有任何用戶界面運行安裝程序包,什麼是所謂的“無人值守安裝”。

[ 編輯 ] ICE的驗證

微軟提供了一套內部一致性評價者,或內燃機,可以用來檢測潛在的問題與MSI數據庫。 [8] ICE規則組合成崽的文件,這些文件簡裝MSI文件中包含自定義操作,測試驗證警告和錯誤的目標 MSI數據庫的內容。 ICE的驗證,可與平台SDK工具Orca和msival2,或與驗證工具,船舶與各種創作環境。

例如,一些ICE的規則是:

  • ICE09:驗證往系統文件夾的任何組件作為永久性標記。
  • ICE24:驗證產品代碼,產品版本,產品語言,有適當的格式。
  • ICE33:驗證註冊表表是為更好地適合另一個表(類,擴展,動詞,等等)的數據。

解決 ICE驗證警告和錯誤,是一個釋放的過程中邁出的重要一步。

[ 編輯 ] 版本

版本 包括與[9] 也可用於
1.0 Office 2000的
1.1 Windows 2000的 RTM,SP1,SP2 視窗95 / 98
的Windows NT 4.0 SP6
1.2 Windows Me中
2.0 Windows XP的 RTM,SP1
Windows 2000的SP3,SP4
Windows Server 2003的 RTM
在Windows 95/98/Me
Windows NT 4.0 SP6,的
Windows 2000的RTM,SP1,SP2
3.0 Windows XP SP2的 Windows 2000的SP3,SP4
Windows XP的RTM,SP1
Windows Server 2003的RTM
3.1 Windows XP SP3的
Windows Server 2003的SP1,SP2
Windows XP專業 x64版的RTM,SP 2
Windows 2000的SP3,SP4
Windows XP的RTM,SP1,SP2
Windows Server 2003的RTM
4.0 Windows Vista的 RTM,SP1
Windows Server 2008的 RTM

4.5 [10] Windows Vista SP2的
Windows Server 2008的SP2
Windows XP的SP2,SP3
Windows Server 2003的SP1,SP2
Windows XP專業 x64版的RTM,SP 2
Windows Vista的RTM,SP1
Windows Server 2008的RTM [11]
5.0 Windows 7的 RTM
Windows Server 2008 R2的的RTM

要檢查目前安裝的是哪個版本,鍵入msiexec /?到Windows Run框或命令提示符。

[ 編輯 ] 工具

名稱 說明 許可
微軟Visual Studio Microsoft Visual Studio是可以創建安裝程序包的Windows Installer部署項目建設[12 ] 專有軟件
InstallShield的
專有軟件
InstEdit “InstEd是一個免費的MSI編輯器,為專業人士。” 更多的功能也提供付費版本。 軟件
智者安裝
專有軟件
WiX的 的WiX(Windows安裝器XML)是一個免費的軟件工具,可幫助構建一個Windows Installer 封裝的 XML文檔。 它可以是使用命令行或集成到Microsoft Visual Studio。 SharpDevelop使用WIX創建MSI包有一個很好的實施 通用公共許可證
IsWiX 工業強度的Windows Installer XML(IsWiX)是一個文檔編輯器的基礎上Fireworks應用程序框架。 IsWiX使非安裝的開發與安裝使用的WiX項目開發。 微軟公共許可協議(MS - PL)
7 - ZIP 7 - Zip是一個多能的 開源文件歸檔實用工具,並可以提取MSI文件的內容。[13 ] GNU通用公共許可證

[ 編輯 ]

[ 編輯 ]

  1. ^ 設置時不只是XCOPY
  2. ^ 回滾安裝
  3. ^ 廣告
  4. ^ 安裝點播
  5. ^ 管理安裝
  6. ^ 從一個命令行。MSI文件解壓縮文件
  7. ^ 如何在命令行中提取MSI文件/提示的Windows XP/Vista/7
  8. ^ 內部一致性評價者-內燃機
  9. ^ 發布的版本的Windows Installer
  10. ^ 在Windows Installer 4.5最新消息
  11. ^ [1]
  12. ^ “Windows Installer部署 微軟開發者網絡(MSDN)庫 微軟公司。 2008年8月 檢索2009年10月1 “Windows Installer部署可讓您創建安裝程序包分發給用戶,用戶通過一個嚮導來安裝應用程序運行安裝文件和步驟。”
  13. ^ “Windows Installer的工具和技巧” InstallSite斯特凡克魯格 檢索2009年11月19

[ 編輯 ] 外部鏈接

View page ratings
Rate this page
Trustworthy
Objective
Complete
Well-written
arrow
arrow
    全站熱搜

    Estar007 發表在 痞客邦 留言(0) 人氣()