我想将 MSI 文件读入 MemoryStream (或类似的东西),然后修改它。在不破坏 MSI 的情况下,最简单的方法是什么?
我需要做的就是修改 MSI 中属性之一的值。我更喜欢 .Net 中的东西,但我对其他平台持开放态度。
更新:
这是我的工作代码,使用 Windows 平台 SDK、对 Microsoft Windows Installer 对象库和命名空间 WindowsInstaller 的 COM 引用:
Installer installer = Activator.CreateInstance(Type.GetTypeFromProgID("WindowsInstaller.Installer")) as Installer;
Database msi = installer.OpenDatabase("WixTest.msi", MsiOpenDatabaseMode.msiOpenDatabaseModeTransact);
View view = msi.OpenView("update `Property` SET `Property`.`Value`='99' where `Property`='USERID'");
view.Execute(null);
msi.Commit();