Я бы хотел прочитать файл MSI в MemoryStream (или что-то подобное) и изменить его. Какой самый простой способ сделать это, не повредив MSI?
Все, что мне нужно сделать, это изменить значение одного из свойств в MSI. Я бы предпочел что-то в .Net, но я открыт для других платформ.
Обновление:
Вот мой рабочий код, использующий SDK для платформы Windows, ссылку COM на библиотеку объектов установщика Microsoft Windows и пространство имен WindowsInstaller:
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();