我計劃替換MSI文件中的DLL文件。有沒有辦法做到這一點,而不影響MSI安裝從MSI替換文件
從MSI替換文件
回答
嘗試從http://apps.instedit.com/ InstEdit,但我不知道是否有可能替換MSI包內的文件。你也可以看看Windows SDK附帶的Microsoft Orca msi編輯器。
首先,您可能想要查看除直接修改MSI之外的其他選擇。這很少是一個好的途徑,但你可能有你的理由。對於其他選項,請查看MSDN on patches。
但是,如果您要直接修改它,請查看此blog entry。它解釋瞭如何使用Orca,InstEdit,MSIdb和IExpress來提取CAB,解壓縮CAB,替換文件,重新壓縮並將CAB文件重新附加到MSI中。
InstEdit(http://www.instedit.com/)確實有效,但它不是一個直觀的工具。你不必擁有加號版本,這是基本的作品。 剛剛完成使用它。這是過程。
1.取出舊的MSI並安裝它以獲取所有原始安裝目標。
將所有安裝目標複製到當前MSI的工作目錄中。
開放InstEdit並打開MSI(或只是拖/放MSI到InstEdit接口)
打開表選項卡(見圖片)
點擊媒體項目,你會看到一些右側信息
右鍵單擊右側窗口並選擇重建所選CAB。
如果替換在所有項目的MSI被發現目錄中的舊項目,那麼當你單擊重建選定的CAB它會自動導入該項目的新版本,並重建CAB。
錯誤是神祕的,但如果你仔細閱讀它們,你可以弄清楚它是否工作。我用新建的版本替換了MSI中的EXE。
編輯
這是近1年,我回來提醒自己的insted的工具是如何工作的。但是,我也偶然發現了一個可能遇到的錯誤,所以我想添加其他信息。
當您試圖[重建選定的社區顧問]你可能會得到它看起來像下面的錯誤:
這有點的神祕的錯誤。 InstEd試圖告訴你,你需要在試圖重建CAB的位置創建CommonFilesFolder。然後將Main.exe放在該文件夾中。它也在同一個文件夾中查找Main.ico。
您只需將目標.exe和.ico(或任何提及的文件)複製到CommonFilesFolder中,然後再次運行重建,它就會起作用。
- 1. 如何在MSI升級時強制進行文件替換
- 2. 從msi文件中訪問msi文件名
- 3. 替換文件
- 4. 替換文件
- 5. 替換文件
- 6. 從JSON文件替換文本值
- 7. TDS文件替換
- 8. AppleScript替換文件
- 9. 如何從另一個MSI調用MSI文件?
- 10. 2009年的InstallShield MSI基礎:文件未更換後新設置升級(1個文件替換)
- 11. 從WordPress插件查找/替換文本
- 12. 從文件讀取變量並替換
- 13. 從大文件中查找並替換
- 14. 推出MSI文件
- 15. msi文件大小
- 16. 從CreateProcess調用c中的msi文件
- 17. 從MSI文件中查找GUID
- 18. 從.exe文件創建安裝(.msi)
- 19. 如何從CAB文件創建MSI?
- 20. 從命令行添加文件到MSI?
- 21. 從閃存鏈接到MSI文件
- 22. 從文本文件中的目錄替換文件名
- 23. 從其他csv文件替換一個csv文件中的列
- 24. 查找和從值文件替換主文件
- 25. 替換爲alutLoadWAV文件
- 26. web.config文件部分替換
- 27. Maven - 用jar替換文件
- 28. lcsv文件的行替換
- 29. 替換文件中的行
- 30. 替換文件中的行
因爲InstEd接口非常直觀,所以我在幾周前寫了上面的答案並忘記了它。今天我必須編輯另一個MSI(我們現在擁有許可版本),然後我回到這裏來記住如何使用該軟件。 ;) – raddevus 2016-07-26 15:03:56