題 如何從MSI包中提取文件?


我們有一些舊的補丁,我們想從中獲取文件,但不希望花時間將它們安裝到機器上。

任何人都可以建議從MSI安裝包中提取文件的方法嗎?


173
2018-02-14 12:41


起源


您能否提供有關要提取的確切MSI安裝包,操作系統詳細信息等的更多信息。 - Firee


答案:


首先,訪問提升的命令提示符,執行以下操作:

  1. 單擊“開始”按鈕。

  2. 單擊所有程序。

  3. 進入配件。

  4. 右鍵單擊“命令提示符”。

  5. 選擇以管理員身份運行

  6. 出現UAC提示時,單擊繼續。

獲得提升的命令提示後,輸入以下內容:

msiexec /a drive:\filepath\to\MSI\file /qb TARGETDIR=drive:\filepath\to\target\folder

使用所需的位置來填充上述文件路徑。例:

msiexec /a c:\testfile.msi /qb TARGETDIR=c:\temp\test

196
2018-02-14 12:53



另一個快速谷歌出現了這個: legroom.net/software/uniextract  我更喜歡使用內置插件,但它看起來像一個可接受的實用程序。
據我所知(來自msiexec /?),這個命令實際上會將程序安裝到該位置;我不認為這是原始請求者的想法。
@ user6738我測試了這個並沒有安裝軟件。該軟件既沒有在appwiz中找到,也沒有通過msi卸載並報告它沒有安裝。它真正從我的測試中提取文件。 - Adam Caviness
我在一台鎖定的Win8.1計算機(工作筆記本電腦)上運行它,應該注意到這一點 不需要管理員權限 提取 .msi 文件。 - MattDMo
很棒的答案!我把它放進去了 extractMSI.cmd 文件: msiexec /a %1 /qb TARGETDIR="%~d1%~p1%~n1" || pause 並將其添加到msi文件的“打開方式...”選項中 - Tobias Kienzler


使用 7zip的
它將為您解包MSI,CAB,一些EXE和更多軟件包。管理員權限也不需要運行它。

-編輯-

它的開源,所以沒有嘮叨的消息乞求你買東西


74
2017-07-07 15:24



嘗試之後,msiexec做得更好(保留目錄,正確命名文件等) - Michael Schubert
對於使用32位7-Zip的win7 x64,這似乎不適合我。是否有特定的方式(而不是拖放)你必須告訴它打開文件? - ebyrob
右鍵單擊文件時,在上下文菜單中應該有一個7zip選項 - 它將為您提供提取文件的選項 - Shekhar
我看到很多東西都帶有驚嘆號,而不是實際的文件。我猜想有些事情發生了變化,或者我有一個奇怪的msi文件。我試過7-Zip 9.20。 - mlt
@MichaelSchubert - 這取決於。如果您運行的是非Windows機器,7Zip是一個不錯的選擇,因為命令行版本也可用於其他系統。取決於用例我會說。 - Per Lundberg


還有 lessmsi 這是完全免費和開源的。

沒有廣告或嘮叨消息,它會正確保存目錄結構和文件名,有一個 複雜的命令行界面,以及一個圖形用戶界面,允許瀏覽文件以及查看內部MSI表和其他MSI屬性。


42
2017-12-06 10:18



謝謝!這個幫助我從一個MSI中提取,該MSI不會使用msiexec命令提取“安裝包名稱>不支持admin安裝” - axk


內置的MSI支持文件提取(管理員安裝)

MSI 或Windows Installer 內置了對此的支持  - 從MSI文件中提取文件。這被稱為 行政安裝。它基本上是作為一種創作方式 網絡安裝點 從中可以在許多目標計算機上運行安裝。這可確保源文件始終可用於任何修復操作。

請注意,運行管理安裝與使用zip工具提取文件是完全不同的! 後者不會調整媒體表的媒體佈局,以便將包設置為使用外部源文件 - 這是正確的方法。總是喜歡在任何hacky zip提取上運行實際的管理員安裝。至於壓縮,實際上有 三種不同的壓縮算法 用於MSI文件格式內的cab文件:MSZip,LZX和存儲(未壓縮)。通過執行管理員安裝可以正確處理所有這些問題。


管理員安裝有很多用途

建議閱讀有關admin-installs的更多信息,因為它是一個有用的概念,我在stackoverflow上寫了一篇文章: 使用msiexec / a啟動管理安裝的目的是什麼?

從本質上講,管理員安裝對於:

  • 提取並檢查安裝程序文件
  • 例如,通過系統管理軟件進行部署 SCCM (避免在C:\ Windows \ Installer中存儲大量緩存的MSI文件,因為文件是從內部cab中提取的)
  • 公司申請重新包裝
  • 修理,修改和自我修復操作
  • 修補和升級
  • 微星廣告(“從源頭開始“功能)
  • 其他一些較小的細節

請閱讀上面鏈接的stackoverflow帖子以獲取更多詳細信息。這是一個非常重要的概念 系統管理員應用包裝商設置開發者發布經理,和 即使是普通用戶 看看他們正在安裝什麼等......


管理員安裝,實用的操作方法

您可以通過幾種不同的方式執行admin-install 取決於安裝程序的交付方式。基本上它是作為一個交付 MSI文件 或包裹在 setup.exe文件

從一個運行這些命令 提升命令提示符,並按照GUI中的說明進行交互式命令行:

  • MSI文件

    msiexec /a File.msi
    

    那是用GUI運行的,你也可以默默地這樣做:

    msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn
    
  • setup.exe文件

    setup.exe /a
    

一個 SETUP.EXE 文件也可以是 傳統樣式設置(非MSI) 或可怕的 Installscript MSI 文件類型 - 一種眾所周知的錯誤Installshield項目類型,具有混合的非標準兼容的MSI格式。它本質上是一個帶有自定義,更高級GUI的MSI,但它也充滿了bug。

對於 舊版setup.exe文件 該 /一個 什麼都不做,但你可以試試 / extract_all:[path]開關 如中所述 這個pdf。它也是靜音安裝和其他東西的一個很好的參考。另一個資源是 此Installshield setup.exe命令行參數列表

MSI補丁文件 (* .MSP)可以 應用於管理員圖像 正確提取其文件。 7Zip也可以提取文件,但它們的格式不正確。

最後,如果沒有其他方法可行,您可以通過清除系統上的臨時文件夾來獲取解壓縮的安裝文件,以交互方式啟動setup.exe,然後等待第一個對話框顯示。在大多數情況下,安裝程序會將一堆文件提取到臨時文件夾。有時文件很簡單,其他時候是CAB格式,但Winzip,7Zip甚至Universal Extractor(尚未測試過這個產品) - 也許可以打開這些文件。


20
2017-07-25 21:28



另見這個答案: superuser.com/questions/307678/... - Stein Åsmul
stackoverflow上的相同帖子: stackoverflow.com/a/24987512/129130 (我應該刪除一個,但兩者都被投票,最近他們合併了)。 - Stein Åsmul


我會推薦 UniExtract 使neoice的解決方案更容易。它做了同樣的事情,只是更自動化,並允許幾種方法來提取MSI文件,而不僅僅是一個管理安裝(正如他的解決方案正在使用)。

UniExtract還可以處理與WISE或InstallShield一起打包的exe,以及各種其他壓縮格式。哦,它是免費的。

Universal Extractor是一個程序   正是它所說的:提取文件   從任何類型的檔案,無論是   一個簡單的zip文件,一個安裝   程序,甚至Windows Installer   (.msi)包。


8
2018-02-18 05:08





如果你安裝 總指揮官,有一個 插件打開並提取MSI文件


3
2018-02-14 13:02



對。但不幸的是只有32位TC - Timores


您可以使用 逆戟鯨 這個應用程序是Platform SDK的一部分,但您也可以從這裡下載它 http://astebner.sts.winisp.net/Tools/Orca.zip


1
2018-02-14 12:54



Orca更適合提取文件,文件夾和註冊表等元數據。它對於提取實際文件通常不是很有用(如果文件沒有存儲在二進製表中,則完全沒用)。 - Synetech


PeaZip 到列表。像冠軍一樣工作


1
2017-07-21 20:30



請閱讀 我該如何推薦軟件 有關如何推薦軟件的一些提示。至少,您應該提供的不僅僅是鏈接,例如有關軟件本身的一些其他信息,例如如何使用它來解決問題中的問題。 - DavidPostill♦


你也可以試試 Heath Stewart的MSI Extractor


0
2018-02-18 06:04





只需下載 通用提取器。它提取所有類型的文件,包括.exe,.msi,.rar,.zip,.kgb等。


0
2018-01-11 07:26





嘗試 MSITOOLS.EXE 託管於 InstallSite 用於GUI提取器。


0
2017-08-25 13:58