public void Run() { List <TableUpdate> tablesUpdate = BuildTablesUpdate(); Opts.AppSettings opt = AppContext.Settings.AppSettings; var inc = new UpdateIncrement(AppContext.TableManager.DataUpdates.CreateUniqID(), opt.DataGeneration); string incFileName = inc.ID.ToString("X"); string incFilePath = System.IO.Path.Combine(AppPaths.DataUpdateFolder, incFileName); UpdateEngin.SaveTablesUpdate(tablesUpdate, incFilePath); AppContext.AccessPath.GetDataProvider(InternalTablesID.INCREMENT).Insert(inc); foreach (TableUpdate tu in tablesUpdate) { AppContext.TableManager.SetTableGeneration(tu.TableID, tu.PostGeneration); } AppContext.TableManager.Transactions.Reset(); string dataMainfest = AppPaths.DataManifestPath; UpdateEngin.UpdateDataManifest(dataMainfest, new UpdateURI(incFileName, opt.DataGeneration)); if (opt.DataGeneration++ == 0) { opt.UpdateKey = (uint)DateTime.Now.Ticks; } AppContext.Settings.Save(); string manifestFile = AppPaths.ManifestPath; try { IUpdateManifest oldManifest = UpdateEngin.ReadUpdateManifest(manifestFile); var newManifest = new UpdateManifest(opt.UpdateKey, opt.DataGeneration, oldManifest.Versions); UpdateEngin.WriteUpdateManifest(newManifest, manifestFile); } catch { UpdateEngin.WriteUpdateManifest(new UpdateManifest(opt.UpdateKey, opt.DataGeneration), manifestFile); } }