2010-04-26 268 views
2

我們有一個安裝項目,它可以生成一個未壓縮的MSI文件,並且完全不需要Setup.exe,以後由NSIS進行壓縮。
在特殊的構建設置中,我想在MSIS包裝之前複製該MSI,更改副本並保留它。我還想在msbuild創建後壓縮它。
有沒有一種簡單的方法(某種類型的命令行工具,也許?)我可以用它來壓縮已經創建的msi文件?壓縮未壓縮的MSI文件

回答

2

是的!請參閱Windows SDK :)

有大量示例腳本顯示如何使用Windows Installer API處理MSI文件。

MSI文件本身從未實際壓縮過,但它可以包含可能被壓縮的嵌入式CAB文件。

我建議把一些腳本從MSI中提取任何嵌入式CAB文件,一次解壓縮到一個臨時文件夾,使用更好的壓縮方法重新壓縮,然後用MSI中的非壓縮CAB替換新壓縮的一個。

任何工具,你可以找到會做我上面提到的到底是什麼,但是把它一起自己應該提供的微星是如何工作有了更深的瞭解:)

+0

謝謝。聽起來像是一個好主意,我會研究提取駕駛室 - >壓縮駕駛室 - >推動駕駛室。 – 2010-04-29 04:39:25

0

未壓縮轉換微星壓縮。

  1. 執行msi的管理員安裝。
  2. 使用補丁來傳遞你想要的補丁文件。
  3. 將WiFilVer.vbs和WiMakeCab.vbs文件從"C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\msi\scripts"複製到admin安裝文件夾。
  4. 要更新文件與新的運行:CScript //nologo WiFilVer.vbs vendormsi.msi /U
  5. 要創建CAB文件並將其嵌入到微星:cscript /nologo WiMakCab.vbs eTalk.msi Data1 /R /L /C /U /E /S
  6. 如果你沒有得到5步CAB文件檢查你的媒體表中的Orca並看看:「http://www.spinnersoftware.com/kb/en/msi/createmsi.html」尋找壓縮部分。
  7. 您現在應該擁有包含所有內容的msi。

壓縮一個MSI與內部或外部CAB文件

  1. 執行MSI的管理員安裝。
  2. 使用補丁來傳遞你想要的補丁文件。
  3. 將WiMakeCab.vbs文件從Windows SDK複製到admin安裝文件夾。
  4. 運行:cscript WiMakCab.vbs Vendor.msi Data1/L/C/U/E
  5. 您應該擁有帶嵌入式cab文件的MSI。