Example #1
0
        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);
        }
Example #3
0
        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();
            }
        }
Example #4
0
        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);
        }
Example #6
0
        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);
            }
        }
Example #7
0
 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);
     }
 }
Example #8
0
        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;
        }
Example #9
0
        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);
                }
            }
        }
Example #10
0
 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);
     }
 }
Example #11
0
        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);
            }
        }
Example #12
0
        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);
        }
Example #13
0
        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);
        }
Example #14
0
        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());
     }
 }
Example #16
0
        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);
            }
        }
Example #17
0
        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();
            }
        }
Example #18
0
        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);
            }
        }
Example #19
0
 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();
        }
Example #21
0
 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("");
 }
Example #22
0
        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);
        }
Example #23
0
        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);
        }
Example #24
0
        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);
        }
Example #25
0
        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);
        }
Example #26
0
        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);
        }
Example #27
0
        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);
            }
        }
Example #28
0
        //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);
        }
Example #30
0
        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);
            }
        }