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); } ; }
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(); }; } ; }