![无需安装 MSI,即可将 MSP 应用于 MSI](https://linux22.com/image/1523581/%E6%97%A0%E9%9C%80%E5%AE%89%E8%A3%85%20MSI%EF%BC%8C%E5%8D%B3%E5%8F%AF%E5%B0%86%20MSP%20%E5%BA%94%E7%94%A8%E4%BA%8E%20MSI.png)
我正在生成依赖项及其各自版本的存储库。我可以使用以下方法提取 MSI
msiexec /a "c:\temp\2\MyMSI.msi" /qb TARGETDIR="c:\extracted" REINSTALLMODE="amus" REINSTALL="ALL"
这部分工作正常,但是当我去应用 MSP 时,我无法让它工作。
我努力了
msiexec /a “c:\temp\MyMSI.msi” /qb TARGETDIR="C:\extracted" REINSTALLMODE="amus" PATCH="c:\temp\MyPatch.msp"
msiexec /a “C:\extracted\MyMSI.msi” /qb TARGETDIR="C:\extracted" REINSTALLMODE="amus" PATCH="c:\temp\MyPatch.msp"
msiexec /a “C:\extracted\MyMSI.msi” /p “c:\temp\MyPatch.msp”
msiexec /a “C:\temp\MyMSI.msi” /p “c:\temp\MyPatch.msp”
其他几个成功
我不断收到消息
该消息是有意义的,因为我还没有真正安装 MSI,但我需要从补丁中获取更新的文件。
我应该注意到,这是在大约 60 msi 的循环中运行的,所以我希望尽量减少手动步骤。
更新:以下是日志中的条目
MSI (c) (60:68) [16:19:02:645]: SequencePatches 启动。产品代码:{1B7D2B53-5A7D-4227-9441-BDB9F1047672},产品版本:15.1.15.28,升级代码:{2DB5D3D4-42AF-49D4-B6B5-B4F9540DA781},产品语言 1033 MSI (c) (60:68) [16:19:02:645]: PATCH SEQUENCER:验证小升级补丁 c:\ININ\IceLibSDK_32bit_2015_R1_Patch6.msp 是否适用于产品代码:{1B7D2B53-5A7D-4227-9441-BDB9F1047672}、产品版本:15.1.15.28、产品语言 1033 和升级代码:{2DB5D3D4-42AF-49D4-B6B5-B4F9540DA781} MSI (c) (60:68) [16:19:02:646]: PATCH SEQUENCER: 小升级补丁 c:\ININ\IceLibSDK_32bit_2015_R1_Patch6.msp 不适用。 MSI (c) (60:68) [16:19:02:646]: SequencePatches 返回成功。 MSI (c) (60:68) [16:19:02:646]: 最终补丁应用顺序: MSI (c) (60:68) [16:19:02:646]: 其他补丁: MSI (c) (60:68) [16:19:02:646]: 未知\缺失:{71E3B59E-4380-4145-B1A5-20ECDC68FEF7} - c:\ININ\IceLibSDK_32bit_2015_R1_Patch6.msp Windows Installer 服务无法安装升级,因为要升级的程序可能丢失,或者升级可能会更新该程序的不同版本。请验证要升级的程序是否存在于您的计算机上,并且您有正确的升级。
答案1
对于遇到此要求的其他人,我必须分两个阶段完成此操作
- msiexec /a “c:\temp\mymsi.msi” /qb TARGETDIR="c:\temp2" REINSTALLMODE="amus"
- msiexec /a "目录:\temp2\mymsi.msi“/qb TARGETDIR="c:\temp2" REINSTALLMODE="amus" PATCH="c:\temp\mypatch.msp"
注意,第 2 步使用第 1 步中的新 msi。我无法通过一个步骤让它工作。