Esempio n. 1
0
        public void InstallUpdates()
        {
            var toInstall = Packs
                            .Where(x => x.Version > OldVersion)
                            .OrderBy(x => x.Version);

            foreach (var itm in toInstall)
            {
                Log.AppendFormat("Installing pack {0}...{1}", itm.Version, Environment.NewLine);
                itm.Load();

                var args = new BeforePackInstallEventArgs()
                {
                    Pack = itm
                };
                OnBeforeInstallPack(args);

                if (!args.Cancel)
                {
                    itm.Install();
                    Log.Append(itm.Log);
                    OnAfterInstallPack(itm);
                }
                ;

                Log.AppendFormat("Pack {0} has been installed{1}{1}", itm.Version, Environment.NewLine);
            }
            ;
        }
Esempio n. 2
0
        public virtual void OnBeforeInstallPack(BeforePackInstallEventArgs args)
        {
            if (BeforePackInstall != null)
            {
                BeforePackInstall(this, args);
            }
            ;

            if (!args.Cancel)
            {
                var script = String.Format(@"if(not exists (select 1
                                                              from [{0}].[DBVersion]
                                                             where [Major] = @major
                                                               and [Minor] = @minor 
                                                               and [Build] = @build
                                                               and [Revision] = @revision))
                                             begin 
                                                insert into [{0}].[DBVersion] 
                                                    ([Major], [Minor], [Build], [Revision], [InstallationStarted]) 
                                                values 
                                                    (@major, @minor, @build, @revision, getdate());
                                             end;",
                                           Settings.ServiceSchema);

                using (var conn = new SqlConnection(Settings.ConnectionString))
                    using (var cmd = new SqlCommand(Regex.Replace(script, @"\s+", " "), conn))
                    {
                        conn.Open();
                        conn.ChangeDatabase(Settings.Database);

                        var pack = args.Pack;

                        cmd.Parameters.Add(new SqlParameter("@major", pack.Version.Major));
                        cmd.Parameters.Add(new SqlParameter("@minor", pack.Version.Minor));
                        cmd.Parameters.Add(new SqlParameter("@build", pack.Version.Build));
                        cmd.Parameters.Add(new SqlParameter("@revision", pack.Version.Revision));

                        cmd.ExecuteNonQuery();
                    };
            }
            ;
        }