2010-12-09 78 views
1

我計劃替換MSI文件中的DLL文件。有沒有辦法做到這一點,而不影響MSI安裝從MSI替換文件

回答

0

嘗試從http://apps.instedit.com/ InstEdit,但我不知道是否有可能替換MSI包內的文件。你也可以看看Windows SDK附帶的Microsoft Orca msi編輯器。

2

首先,您可能想要查看除直接修改MSI之外的其他選擇。這很少是一個好的途徑,但你可能有你的理由。對於其他選項,請查看MSDN on patches

但是,如果您要直接修改它,請查看此blog entry。它解釋瞭如何使用Orca,InstEdit,MSIdb和IExpress來提取CAB,解壓縮CAB,替換文件,重新壓縮並將CAB文件重新附加到MSI中。

1

InstEdit(http://www.instedit.com/)確實有效,但它不是一個直觀的工具。你不必擁有加號版本,這是基本的作品。 剛剛完成使用它。這是過程。
1.取出舊的MSI並安裝它以獲取所有原始安裝目標。

  1. 將所有安裝目標複製到當前MSI的工作目錄中。

  2. 開放InstEdit並打開MSI(或只是拖/放MSI到InstEdit接口)

  3. 打開表選項卡(見圖片)

  4. 點擊媒體項目,你會看到一些右側信息

  5. 右鍵單擊右側窗口並選擇重建所選CAB。

如果替換在所有項目的MSI被發現目錄中的舊項目,那麼當你單擊重建選定的CAB它會自動導入該項目的新版本,並重建CAB。

錯誤是神祕的,但如果你仔細閱讀它們,你可以弄清楚它是否工作。我用新建的版本替換了MSI中的EXE。

InstEdit Media Rebuild

編輯

這是近1年,我回來提醒自己的insted的工具是如何工作的。但是,我也偶然發現了一個可能遇到的錯誤,所以我想添加其他信息。

當您試圖[重建選定的社區顧問]你可能會得到它看起來像下面的錯誤:

add folders

這有點的神祕的錯誤。 InstEd試圖告訴你,你需要在試圖重建CAB的位置創建CommonFilesFolder。然後將Main.exe放在該文件夾中。它也在同一個文件夾中查找Main.ico。

您只需將目標.exe和.ico(或任何提及的文件)複製到CommonFilesFolder中,然後再次運行重建,它就會起作用。

+0

因爲InstEd接口非常直觀,所以我在幾周前寫了上面的答案並忘記了它。今天我必須編輯另一個MSI(我們現在擁有許可版本),然後我回到這裏來記住如何使用該軟件。 ;) – raddevus 2016-07-26 15:03:56