private void btnGo_Click(object sender, EventArgs e) { // open file // MSI.Package mpkg = new MSI.Package(msifile); // list tables and records // WindowsInstaller.View view = database.OpenView("SELECT * FROM _table_name); MSI.Database mdb = new MSI.Database(msifile, MSI.Database.OpenMode.ReadOnly); mdb.Export("registry", @"C:\Program Files\Educational Assessments Corporation\EACZipInstallerMaker\CurrentMsi\", "RegExport.txt"); MSI.View mdbv = mdb.OpenView("SELECT * FROM Registry"); mdbv.Execute(); MSI.Record rmdb = mdbv.Fetch(); int total = rmdb.FieldCount; while (rmdb != null) { for (int i = 1; i <= total; i++) { if (rmdb.GetString(i) != null) { string temp = rmdb.GetString(i); // temp = temp.Replace(txtFind.Text, txtReplace.Text); // record.set_StringData(i, temp); // view.Modify(MsiViewModify.msiViewModifyReplace, record); tbMemo.AppendText(temp); } } rmdb = mdbv.Fetch(); } // edit record // save changes and file }
private void BuildFeatures() { ArrayList roots = new ArrayList(); Hashtable tree = new Hashtable(); using (MSI.View view = Application.ExecView(m_project.Database, "SELECT `Feature`,`Feature_Parent` FROM `Feature` " + "ORDER BY `Feature_Parent`")) { for (MSI.Record rec = view.Fetch(); rec != null; rec = view.Fetch()) { if (rec.IsNull(2)) { roots.Add(rec.GetString(1)); } else { string parent = rec.GetString(2); if (!tree.ContainsKey(parent)) { tree[parent] = new ArrayList(); } (tree[parent] as ArrayList).Add(rec.GetString(1)); } rec.Dispose(); } } roots.Sort(); rootFeatureTreeView.Nodes.Clear(); for (int i = 0; i < roots.Count; i++) { string feature = roots[i] as string; TreeNode root = new TreeNode(feature); root.Tag = "R" + i.ToString(); rootFeatureTreeView.Nodes.Add(root); AddFeatures(tree, rootFeatureTreeView, root.Tag as string, feature); } rootFeatureTreeView.SelectedNode = rootFeatureTreeView.Nodes[0]; }