private string genXML(MsiProperties msiProperties) { XmlSerializer serializer = new XmlSerializer(typeof(MsiProperties)); using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, msiProperties); return(writer.ToString()); } }
private void parseDatabase() { getInstaller().UILevel = MsiUILevel.msiUILevelNone; msiSession = getInstaller().OpenPackage(database, 0); msiSession.DoAction("CostInitialize"); msiSession.DoAction("CostFinalize"); msiProperties = new MsiProperties(); parseDirectory(); parseProperties(); parseShortcuts(); Console.Write(genXML(msiProperties)); }
private void parseProperties() { WindowsInstaller.View view = null; try { view = database.OpenView("SELECT * FROM `Property`"); view.Execute(); } catch (Exception ex) { Console.WriteLine("Unable to query msi, " + ex.Message); } msiProperties = new MsiProperties(); Record properties = view.Fetch(); while (properties != null) { switch (properties.get_StringData(1).ToLower()) { case "manufacturer": msiProperties.Manufacturer = properties.get_StringData(2); break; case "productname": msiProperties.ProductName = properties.get_StringData(2); break; case "arpcomments": msiProperties.ArpComments = properties.get_StringData(2); break; case "arphelplink": msiProperties.ArpHelpLink = properties.get_StringData(2); break; case "arpcontact": msiProperties.ArpContact = properties.get_StringData(2); break; case "allusers": msiProperties.AllUsers = properties.get_StringData(2); break; case "arpinstalllocation": msiProperties.ArpInstallLocation = properties.get_StringData(2); break; case "arptelephone": msiProperties.ArpTelephone = properties.get_StringData(2); break; case "primaryfolder": msiProperties.PrimaryFolder = properties.get_StringData(2); break; case "msiinstallperuser": msiProperties.MsiInstallPerUser = properties.get_StringData(2); break; case "reboot": msiProperties.Reboot = properties.get_StringData(2); break; case "rootdrive": msiProperties.RootDrive = properties.get_StringData(2); break; case "targetdir": msiProperties.TargetDir = properties.get_StringData(2); break; case "installdir": msiProperties.InstallDir = properties.get_StringData(2); break; case "upgradecode": msiProperties.UpgradeCode = properties.get_StringData(2); break; case "productcode": msiProperties.ProductCode = properties.get_StringData(2); break; case "productversion": msiProperties.ProductVersion = properties.get_StringData(2); break; case "productlanguage": msiProperties.ProductLanguage = properties.get_StringData(2); break; } properties = view.Fetch(); } }