使用msiexec提取msi包里的文件


核心:如需把d盤下abc.msi文件解包到目錄d:\abc,操作如下:
打開命令提示符,輸入
msiexec /a "d:\abc.msi" /qb TARGETDIR="D:\abc"

參考:

在命令行下輸入msiexec,不加任何參數,顯示msiexec 文檔如下

------------- msiexec 文檔----------------------------------------------------

Windows (R) Installer. V 4.5.6001.22159

msiexec /Option <Required Parameter> [Optional Parameter]

安裝選項
</package | /i> <Product.msi>
安裝或配置產品
/a <Product.msi>
管理安裝 - 在網絡上安裝產品
/j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
公布產品 - m 公布到所有用戶,u 公布到當前用戶
</uninstall | /x> <Product.msi | ProductCode>
卸載產品
顯示選項
/quiet
安靜模式,無用戶交互
/passive
無人參與模式 - 只顯示進度欄
/q[n|b|r|f]
設置用戶界面級別
n - 無用戶界面
b - 基本界面
r - 精簡界面
f - 完整界面(默認值)
/help
幫助信息
重新啟動選項
/norestart
安裝完成后不重新啟動
/promptrestart
必要時提示用戶重新啟動
/forcerestart
安裝后始終重新啟動計算機
日志選項
/l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
i - 狀態消息
w - 非致命警告
e - 所有錯誤消息
a - 操作的啟動
r - 操作特定記錄
u - 用戶請求
c - 初始用戶界面參數
m - 內存不足或致命退出信息
o - 磁盤空間不足消息
p - 終端屬性
v - 詳細輸出
x - 額外調試信息
+ - 擴展到現有日志文件
! - 每一行刷新到日志
* - 記錄所有信息,除了 v 和 x 選項
/log <LogFile>
與 /l* <LogFile> 相同
更新選項
/update <Update1.msp>[;Update2.msp]
應用更新
/uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
刪除產品的更新
修復選項
/f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
修復產品
p - 僅當文件丟失時
o - 如果文件丟失或安裝了更舊的版本(默認值)
e - 如果文件丟失或安裝了相同或更舊的版本
d - 如果文件丟失或安裝了不同版本
c - 如果文件丟失或較驗和與計算的值不匹配
a - 強制重新安裝所有文件
u - 所有必要的用戶特定注冊表項(默認值)
m - 所有必要的計算機特定注冊表項(默認值)
s - 所有現有的快捷鍵方式(默認值)
v - 從源運行並重新緩存本地安裝包
設置公共屬性
[PROPERTY=PropertyValue]

請查閱 Windows (R) Installer SDK 獲得有關
命令行語法的其他文檔。

版權所有 (C) Microsoft Corporation. 保留所有權利。
此軟件的部分內容系基於 Independent JPEG Group 的工作。

===

出處:http://www.cnblogs.com/top5/archive/2012/10/29/2744639.html

==

一、初識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格式的文件。

點這里下載InstMsiW插件

二、定制自己的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文件了。

=

=出處:http://zhidao.baidu.com/link?url=dqvkPStYEcbii6WtQ-GxohRkgrSt5DoMLypDvq8-Q0IkjAGY9CRnzqwWaDxGwiwp4SQnMP4S5bLIHAUd1ea3-q


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM