static void Main(string[] args) { using (var database = new QDatabase(@"C:\tfs\iswix.msi", DatabaseOpenMode.ReadOnly)) { var properties = from p in database.Properties select p; foreach (var property in properties) { Console.WriteLine("{0} = {1}", property.Property, property.Value); } } using (var database = new Database(@"C:\tfs\iswix.msi", DatabaseOpenMode.ReadOnly)) { using (var view = database.OpenView(database.Tables["Property"].SqlSelectString)) { view.Execute(); foreach (var rec in view) { using (rec) { Console.WriteLine("{0} = {1}", rec.GetString("Property"), rec.GetString("Value")); } } } } Console.Read(); }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context != null && context.Instance != null && provider != null) { edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { ListBoxControl dbs = new ListBoxControl(); dbs.Click += Dbs_Click; try { QDatabaseName dbName = (QDatabaseName)context.Instance.GetType().GetProperty("DatabaseName").GetValue(context.Instance, null); string sql = "select LOV_CODE, LOV_DESC from vw_at_lst_of_val where lov_type='CRITERIA_CATEGORIES' order by lov_desc"; QDatabase db = QInstance.Environments.GetDatabase(dbName); DataSet dbSet = db.ExecuteQuery(sql); dbs.DisplayMember = "LOV_DESC"; dbs.DataSource = dbSet.Tables[0]; edSvc.DropDownControl(dbs); value = ((DataRowView)dbs.SelectedItem).Row["LOV_DESC"]; } catch (Exception ex) { } } } return(value); }
public void LinqInsertDelete() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); var newProp = db.Properties.NewRecord(); newProp.Property = "TestNewProp1"; newProp.Value = "TestNewValue"; newProp.Insert(); string prop = (from p in db.Properties where p.Property == "TestNewProp1" select p.Value).AsEnumerable().First(); Assert.AreEqual <string>("TestNewValue", prop); newProp.Delete(); int propCount = (from p in db.Properties where p.Property == "TestNewProp1" select p.Value).AsEnumerable().Count(); Assert.AreEqual <int>(0, propCount); db.Commit(); } }
public MSIInstaller(FileInfo file) { this._file = file; try { using (QDatabase msi = new QDatabase(file.FullName)) { _company = msi.SummaryInfo.Author; _created = msi.SummaryInfo.CreateTime; _guid = msi.SummaryInfo.RevisionNumber; _comments = msi.SummaryInfo.Comments; _subject = msi.SummaryInfo.Subject; var props = msi.Properties.Select(xx => xx); properties = new List <Property_>(props); var p = properties.Where(xx => xx.Property.Equals("ProductVersion")).FirstOrDefault(); if (p != null) { _version = p.Value; } p = properties.Where(xx => xx.Property == "Manufacturer").FirstOrDefault(); if (p != null) { _creator = p.Value; } this._isInstaller = true; } } catch (InstallerException ex) { this._isInstaller = false; Console.WriteLine(ex.Message); } }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context != null && context.Instance != null && provider != null) { edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { ListBoxControl dbs = new ListBoxControl(); dbs.Click += Dbs_Click; try { QDatabaseName dbName = (QDatabaseName)context.Instance.GetType().GetProperty("DatabaseName").GetValue(context.Instance, null); string sql = "SELECT NAME FROM SYS.TABLES ORDER BY NAME"; QDatabase db = QInstance.Environments.GetDatabase(dbName); DataSet dbSet = db.ExecuteQuery(sql); dbs.DisplayMember = "NAME"; dbs.DataSource = dbSet.Tables[0]; edSvc.DropDownControl(dbs); value = ((DataRowView)dbs.SelectedItem).Row["NAME"]; } catch (Exception ex) { } } } return(value); }
public void LinqWhereNull() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); var features = from f in db.Features where f.Description != null select f; int count = 0; foreach (var f in features) { Console.WriteLine(f); Assert.AreEqual <string>("TestFeature2", f.Feature); count++; } Assert.AreEqual <int>(1, count); var features2 = from f in db.Features where f.Description == null select f; count = 0; foreach (var f in features2) { Console.WriteLine(f); Assert.AreEqual <string>("TestFeature1", f.Feature); count++; } Assert.AreEqual <int>(1, count); } }
public static string Get(string msi, string name) { using (var db = new QDatabase(msi.ToLower(), DatabaseOpenMode.ReadOnly)) { return(db.ExecuteScalar("SELECT `Value` FROM `Property` WHERE `Property` = '{0}'", name) as string); } }
private void InitLinqTestDatabase(QDatabase db) { WindowsInstallerUtils.InitializeProductDatabase(db); WindowsInstallerUtils.CreateTestProduct(db); db.Execute( "INSERT INTO `Feature` (`Feature`, `Title`, `Description`, `Level`, `Attributes`) VALUES ('{0}', '{1}', '{2}', {3}, {4})", "TestFeature2", "Test Feature 2", "Test Feature 2 Description", 1, (int)FeatureAttributes.None); WindowsInstallerUtils.AddRegistryComponent( db, "TestFeature2", "MyTestRegComp", Guid.NewGuid().ToString("B"), "SOFTWARE\\Microsoft\\DTF\\Test", "MyTestRegComp", "test"); WindowsInstallerUtils.AddRegistryComponent( db, "TestFeature2", "MyTestRegComp2", Guid.NewGuid().ToString("B"), "SOFTWARE\\Microsoft\\DTF\\Test", "MyTestRegComp2", "test2"); WindowsInstallerUtils.AddRegistryComponent( db, "TestFeature2", "excludeComp", Guid.NewGuid().ToString("B"), "SOFTWARE\\Microsoft\\DTF\\Test", "MyTestRegComp3", "test3"); db.Commit(); db.Log = Console.Out; }
public void LinqOrderBy() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); var actions = from a in db.InstallExecuteSequences orderby a.Sequence select a.Action; foreach (var a in actions) { Console.WriteLine(a); } var files = from f in db.Files orderby f.FileSize, f["Sequence"] where f.Attributes == FileAttributes.None select f; foreach (var f in files) { Console.WriteLine(f); } } }
public static string MspGetMetadata(string msp, string name) { using (var db = new QDatabase(msp.ToLower(), DatabaseOpenMode.ReadOnly)) { return(db.ExecuteScalar("SELECT `Value` FROM `MsiPatchMetadata` WHERE `Property` = '{0}'", name) as string); } }
public void LinqFourWayJoin() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); int count; IList <string> pretest = db.ExecuteStringQuery( "SELECT `Feature`.`Feature` " + "FROM `Feature`, `FeatureComponents`, `Component`, `Registry` " + "WHERE `Feature`.`Feature` = `FeatureComponents`.`Feature_` " + "AND `FeatureComponents`.`Component_` = `Component`.`Component` " + "AND `Component`.`Component` = `Registry`.`Component_` " + "AND (`Registry`.`Registry` = 'MyTestRegCompReg1')"); Assert.AreEqual <int>(1, pretest.Count); var features = from f in db.Features join fc in db.FeatureComponents on f.Feature equals fc.Feature_ join c in db.Components on fc.Component_ equals c.Component join r in db.Registries on c.Component equals r.Component_ where r.Registry == "MyTestRegCompReg1" select f.Feature; count = 0; foreach (var featureName in features) { Console.WriteLine(featureName); count++; } Assert.AreEqual <int>(1, count); } }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context != null && context.Instance != null && provider != null) { edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { instCode = Convert.ToString(value); GridControl grd = new GridControl(); GridView gview = new GridView(grd); GridColumn colCode = new GridColumn(); GridColumn colDesc = new GridColumn(); colCode.FieldName = "INST_CODE"; colDesc.FieldName = "INST_DESC"; colCode.Caption = "Code"; colDesc.Caption = "Description"; colCode.Width = 30; colCode.Visible = true; colDesc.Visible = true; gview.Columns.AddRange(new GridColumn[] { colDesc, colCode }); //gview.OptionsBehavior.ReadOnly = true; grd.MainView = gview; grd.Click += Dbs_Click; gview.OptionsCustomization.AllowGroup = false; gview.OptionsView.ShowGroupPanel = false; //gview.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; gview.OptionsBehavior.Editable = false; //ListBoxControl dbs = new ListBoxControl(); //dbs.Click += Dbs_Click; try { QDatabaseName dbName = (QDatabaseName)context.Instance.GetType().GetProperty("DatabaseName").GetValue(context.Instance, null); string sql = "SELECT INST_CODE, INST_DESC FROM AT_INSTALLATIONS ORDER BY INST_DESC"; QDatabase db = QInstance.Environments.GetDatabase(dbName); DataSet dbSet = db.ExecuteQuery(sql); //dbs.DisplayMember = "INST_DESC"; grd.DataSource = dbSet.Tables[0]; edSvc.DropDownControl(grd); value = instCode; } catch (Exception ex) { } } } return(value); }
private bool CheckRec() { bool retval = true; try { // do not check LCY fields if (!fieldName.EndsWith("_LCY")) { QDatabase database = QInstance.Environments.GetDatabase(DatabaseName); // first check if the field ui record exists DataTable tbRec = database.ExecuteCommand(GetInstUiFieldCommand()); if (tbRec.Rows.Count == 0) { QCRAction check = new QCRAction() { State = QCRActionState.NeedsAction, ActionType = QCRActionType.CheckDatasourceField, Description = string.Format("Add field \"{0}\" to Dynamic UI \"{1}\".", FieldName, DynamicUIName), DatabaseName = this.DatabaseName }; Actions.Add(check); retval = false; } } // everything ok if (Actions.Count == 0) { QCRAction check = new QCRAction() { State = QCRActionState.WellImplemented, ActionType = QCRActionType.NoActionNeeded, Description = string.Format("Add field \"{0}\" to Dynamic UI \"{1}\".", FieldName, DynamicUIName), DatabaseName = this.DatabaseName }; Actions.Add(check); retval = true; } } catch (Exception ex) { QCRAction check = new QCRAction() { State = QCRActionState.NeedsAction, ActionType = QCRActionType.CheckDUIField, Description = string.Format(ex.Message), DatabaseName = this.DatabaseName }; Actions.Add(check); retval = false; } return(retval); }
public void LinqWhereOperators() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); for (int i = 0; i < 100; i++) { var newFile = db.Files.NewRecord(); newFile.File = "TestFile" + i; newFile.Component_ = "TestComponent"; newFile.FileName = "TestFile" + i + ".txt"; newFile.FileSize = i % 10; newFile.Sequence = i; newFile.Insert(); } var files1 = from f in db.Files where f.Sequence < 40 select f; Assert.AreEqual <int>(40, files1.AsEnumerable().Count()); var files2 = from f in db.Files where f.Sequence <= 40 select f; Assert.AreEqual <int>(41, files2.AsEnumerable().Count()); var files3 = from f in db.Files where f.Sequence > 40 select f; Assert.AreEqual <int>(59, files3.AsEnumerable().Count()); var files4 = from f in db.Files where f.Sequence >= 40 select f; Assert.AreEqual <int>(60, files4.AsEnumerable().Count()); var files5 = from f in db.Files where 40 < f.Sequence select f; Assert.AreEqual <int>(59, files5.AsEnumerable().Count()); var files6 = from f in db.Files where 40 <= f.Sequence select f; Assert.AreEqual <int>(60, files6.AsEnumerable().Count()); var files7 = from f in db.Files where 40 > f.Sequence select f; Assert.AreEqual <int>(40, files7.AsEnumerable().Count()); var files8 = from f in db.Files where 40 >= f.Sequence select f; Assert.AreEqual <int>(41, files8.AsEnumerable().Count()); var files9 = from f in db.Files where f.Sequence == 40 select f; Assert.AreEqual <int>(40, files9.AsEnumerable().First().Sequence); var files10 = from f in db.Files where f.Sequence != 40 select f; Assert.AreEqual <int>(99, files10.AsEnumerable().Count()); var files11 = from f in db.Files where 40 == f.Sequence select f; Assert.AreEqual <int>(40, files11.AsEnumerable().First().Sequence); var files12 = from f in db.Files where 40 != f.Sequence select f; Assert.AreEqual <int>(99, files12.AsEnumerable().Count()); } }
static void Main(string[] args) { using (Database database = new Database(DATABASE_PATH, DatabaseOpenMode.ReadOnly)) { Console.WriteLine(database.ExecuteScalar(SQL_SELECT_PRODUCTVERSION).ToString()); } using (QDatabase database = new QDatabase(DATABASE_PATH, DatabaseOpenMode.ReadOnly)) { var results = from property in database.Properties where property.Property == "ProductVersion" select property.Value; Console.WriteLine(results.AsEnumerable <string>().First()); } }
public void LinqQueryQRecord() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); var installFilesSeq = (from a in db["InstallExecuteSequence"] where a["Action"] == "InstallFiles" select a["Sequence"]).AsEnumerable().First(); Assert.AreEqual <string>("4000", installFilesSeq); } }
public void LinqUpdateNullableString() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); string newDescription = "New updated feature description."; var features = from f in db.Features where f.Description != null select f; int count = 0; foreach (var f in features) { Console.WriteLine(f); Assert.AreEqual <string>("TestFeature2", f.Feature); f.Description = newDescription; count++; } Assert.AreEqual <int>(1, count); var features2 = from f in db.Features where f.Description == newDescription select f; count = 0; foreach (var f in features2) { Console.WriteLine(f); Assert.AreEqual <string>("TestFeature2", f.Feature); f.Description = null; count++; } Assert.AreEqual <int>(1, count); var features3 = from f in db.Features where f.Description == null select f.Feature; count = 0; foreach (var f in features3) { Console.WriteLine(f); count++; } Assert.AreEqual <int>(2, count); db.Commit(); } }
public void LinqTwoWayJoin() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); int count; var regs = from r in db.Registries join c in db["Component"] on r.Component_ equals c["Component"] where c["Component"] == "MyTestRegComp" && r.Root == RegistryRoot.UserOrMachine select new { Reg = r.Registry, Dir = c["Directory_"] }; count = 0; foreach (var r in regs) { Console.WriteLine(r); count++; } Assert.AreEqual <int>(1, count); var regs2 = from r in db.Registries join c in db.Components on r.Component_ equals c.Component where c.Component == "MyTestRegComp" && r.Root == RegistryRoot.UserOrMachine select new { Reg = r, Dir = c.Directory_ }; count = 0; foreach (var r in regs2) { Assert.IsNotNull(r.Reg.Registry); Console.WriteLine(r); count++; } Assert.AreEqual <int>(1, count); var regs3 = from r in db.Registries join c in db.Components on r.Component_ equals c.Component where c.Component == "MyTestRegComp" && r.Root == RegistryRoot.UserOrMachine select r; count = 0; foreach (var r in regs3) { Assert.IsNotNull(r.Registry); Console.WriteLine(r); count++; } Assert.AreEqual <int>(1, count); } }
public void EnumTable() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); int count = 0; foreach (var comp in db.Components) { Console.WriteLine(comp); count++; } Assert.AreNotEqual <int>(0, count); } }
static void Main(string[] args) { using (var database = new QDatabase(@"C:\tfs\iswix.msi", DatabaseOpenMode.ReadOnly)) { var properties = from p in database.Properties select p; foreach (var property in properties) { Console.WriteLine("{0} = {1}", property.Property, property.Value); } } Console.Read(); }
public static string GetRevisionNumber(string msimsp) { try { using (var db = new QDatabase(msimsp.ToLower(), DatabaseOpenMode.ReadOnly)) { return(db.SummaryInfo.RevisionNumber); } } catch (Exception ex) { Logger.LogError("GetRevisionNumber:" + ex.Message); } return(""); }
private bool Load() { bool retval = false; QDatabase dbObj = QInstance.Environments.GetDatabase(databaseName); if (dbObj != null) { schema = new QDBTableSchema(); if (schema.Load(dbObj, tableName)) { loadNeeded = false; retval = true; } } return(retval); }
public static Dictionary <String, String> GetComponents(string msi) { var t = new Dictionary <string, string>(); using (var database = new QDatabase(msi.ToLower(), DatabaseOpenMode.ReadOnly)) { var comps = from p in database.Components select p; foreach (var comp in comps) { t.Add(comp.Component, comp.ComponentId); } } return(t); }
public static Dictionary <String, String> GetProperties(string msi) { var t = new Dictionary <string, string>(); using (var database = new QDatabase(msi.ToLower(), DatabaseOpenMode.ReadOnly)) { var properties = from p in database.Properties select p; foreach (var property in properties) { t.Add(property.Property, property.Value); } } return(t); }
private bool CheckFieldInTable() { bool result = true; try { QDatabase database = QInstance.Environments.GetDatabase(DatabaseName); QDBTableSchema schema = ((QAlterTableCR)Parent).GetSchema(false); schema.Load(database, TableName); if (schema.ContainsColumn(ColumnName)) { QCRAction check = new QCRAction() { State = QCRActionState.WellImplemented, ActionType = QCRActionType.NoActionNeeded, Description = this.Description, DatabaseName = this.DatabaseName }; Actions.Add(check); } else { QCRAction check = new QCRAction() { State = QCRActionState.NeedsAction, ActionType = QCRActionType.AddColumn, Description = this.Description, DatabaseName = this.DatabaseName }; Actions.Add(check); } } catch (Exception ex) { QCRAction check = new QCRAction() { State = QCRActionState.NeedsAction, ActionType = QCRActionType.AddColumn, Description = ex.Message, DatabaseName = this.DatabaseName }; Actions.Add(check); result = false; } return(result); }
private bool ColumnExists() { bool result = true; try { QDatabase database = QInstance.Environments.GetDatabase(DatabaseName); QDBTableSchema schema = ((QAlterViewCR)Parent).GetSchema(false); schema.Load(database, ViewName); if (schema.ContainsColumn(ColumnName)) { QCRAction check = new QCRAction() { State = QCRActionState.WellImplemented, ActionType = QCRActionType.NoActionNeeded, Description = string.Format("Add field {0} in view {1}", ColumnName, ViewName), DatabaseName = this.DatabaseName }; Actions.Add(check); } else { QCRAction check = new QCRAction() { State = QCRActionState.NeedsAction, ActionType = QCRActionType.AddColumn, Description = string.Format("Add field {0} in view {1}", ColumnName, ViewName), DatabaseName = this.DatabaseName }; Actions.Add(check); } } catch (Exception ex) { QCRAction check = new QCRAction() { State = QCRActionState.NeedsAction, ActionType = QCRActionType.AddColumn, Description = string.Format(ex.Message), DatabaseName = this.DatabaseName }; Actions.Add(check); result = false; } return(result); }
public void LinqSimple() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); var comps = from c in db.Components select c; int count = 0; foreach (var c in comps) { Console.WriteLine(c); count++; } Assert.AreEqual <int>(4, count); } }
//Try to apply transform to msi package and return a list of product codes public static HashSet <String> GetTransformProductCode(string msi) { HashSet <string> productCodes = new HashSet <string>(); using (var db = new QDatabase(msi.ToLower(), DatabaseOpenMode.ReadOnly)) { Logger.LogMsg("******" + msi); try { int cnt = 0; foreach (string run in SqlRuns) { db.ApplyTransform(run, (TransformErrors)319); cnt++; //example: //"SELECT `Table`, `Column`, `Row`, `Data`, `Current` FROM `_TransformView`"; //table="Property",Column="Value",Row="SqlRun",Data="SqlRun01.mst",Current="SqlRun00" //table="Property",Column="Value",Row="ProductCode",Data="{C2D85992-11D5-4BC8-A8BF-77B6749FA9AC}",Current="{18B3B793-092C-4D03-BD6B-D388676CA997}" string SqlSelectString = "SELECT `Table`, `Column`, `Row`, `Data`, `Current` FROM `_TransformView`"; string codeStr = SqlSelectString + " WHERE Row='ProductCode' "; var ts = db.ExecuteQuery(codeStr); if (ts.Count == 5) { string productCode = ts[3].ToString(); productCodes.Add(productCode); //Logger.LogMsg("ApplyTransform:ProductCode=" + productCode); } } Logger.LogMsg("ApplyTransform to \"" + msi + "\",Count:" + cnt + " "); } catch (Exception ex) { //it is warning instead of error, some msi doesn't have transform Logger.LogWarning("ApplyTransform:\"" + msi + "\":" + ex.Message); } } return(productCodes); }
private object InitDropDown_Criterio(ITypeDescriptorContext context, ListBoxControl dbs) { object retval = null; try { QDatabaseName dbName = (QDatabaseName)context.Instance.GetType().GetProperty("DatabaseName").GetValue(context.Instance, null); string tableName = (string)context.Instance.GetType().GetProperty("WhereTable").GetValue(context.Instance, null); string sql = string.Format(@"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'{0}' ORDER BY COLUMN_NAME", tableName); QDatabase db = QInstance.Environments.GetDatabase(dbName); DataSet dbSet = db.ExecuteQuery(sql); dbs.DisplayMember = "COLUMN_NAME"; dbs.DataSource = dbSet.Tables[0]; edSvc.DropDownControl(dbs); retval = ((DataRowView)dbs.SelectedItem).Row["COLUMN_NAME"]; } catch (Exception ex) { } return(retval); }
public void LinqShapeSelect() { using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) { this.InitLinqTestDatabase(db); Console.WriteLine("Running LINQ query 1."); var features1 = from f in db.Features select new { Name = f.Feature, Desc = f.Description }; int count = 0; foreach (var f in features1) { Console.WriteLine(f); count++; } Assert.AreEqual <int>(2, count); Console.WriteLine(); Console.WriteLine("Running LINQ query 2."); var features2 = from f in db.Features where f.Description != null select new { Name = f.Feature, Desc = f.Description.ToLower() }; count = 0; foreach (var f in features2) { Console.WriteLine(f); Assert.AreEqual <string>("TestFeature2", f.Name); count++; } Assert.AreEqual <int>(1, count); } }