我按照以下步骤从MSI中提取文件并对其进行编辑并保留。但是当我安装新的MSI时,它无法找到机柜内的文件(.cab)。
从MSI中提取cab文件
msidb -d "Setup.msi" -x Client.cab
从cab文件中提取文件。
cabarc X Client.cab *.* C:\ClientExtract\
编辑文件夹C:\ ClientExtract
从修改过的文件中创建一个新的cab文件
cabarc N Client.cab C:\ClientExtract\*.*
从Setup.msi
中删除现有的cab msidb -d "Setup.msi" -k Client.cab
将新创建的cab文件添加到msi
msidb -d "Setup.msi" -a Client.cab
现在,这个MSI文件没有安装,并且说没有找到某个文件。 当我只运行步骤1,5和6时,MSI可以顺利运行。我相信问题将出在cabarc.exe,它无法维护文件夹结构。
任何帮助或替代解决方案将不胜感激。 msi2xml和xml2msi有效,但我无法使用它。
答案 0 :(得分:0)
由于您标记了此问题C#,我建议使用DTF互操作库作为帮助程序编写类库。与批处理文件相比,它是一个强大的编程平台。您将使用Microsoft.Deployment.WindowsInstaller和Microsoft.Deployment.Compression.Cab程序集。
我喜欢这样做的方法是单独留下现有的驾驶室。我创建了一个新的cab并将其流入。然后我更新了File和Media表以注册cab并取代原始文件。
如果你想给我发电子邮件,我有可以分享的入门代码。