gpt4 book ai didi

c# - 在数据库迁移失败时恢复应用程序的先前状态 (ClickOnce)

转载 作者:可可西里 更新时间:2023-11-01 08:29:02 27 4
gpt4 key购买 nike

我想恢复使用 ClickOnce 发布的以前版本的 C# 应用程序,如果数据库迁移失败,因为数据库不是最新的并且不支持最新版本的应用程序。

详细信息

我正在开发一个应用程序,该应用程序将在无法使用互联网的偏远地区本地使用。一个人会每隔一段时间通过某种方式访问​​互联网来更新他/她的应用程序,然后将应用程序部署到本地网络上。从那里每个人都将能够获得更新版本的应用程序。我现在想要的是使用此应用程序进行数据库迁移,如果该应用程序失败,它应该恢复到以前的版本。我已经使用 FluentMigrator 进行数据库迁移,并使用 ClickOnce 部署应用程序。我还浏览了这里的几乎每个链接,看看我该怎么做。我现在知道使用 ClickOnce 是不可能的。谁能以其他方式告诉我或可能是某种黑客?我正在使用 ClickOnce,因为它具有自动更新功能,所以现在真的不想失去该功能。任何帮助将不胜感激。

最佳答案

FluentMigrator 跟踪数据库中的当前版本。它还会跟踪当前应用程序版本中的最新版本。运行 Migrator 功能并检查当前版本中的最新版本的迁移文件是否等于数据库中存储的最新版本。如果两者相等,则迁移成功。如果不相等则可以运行cmd 命令直接打开(删除或备份)控制面板的窗口并转到以前的版本。这是使用 ClickOnce 恢复到以前版本的最佳方法。

try {
new MigrationsWrapper(AppManager.ConnectionString).MigrateToLatestVersion();
}
catch (Exception ex)
{

}
LatestVersionNumber = new MigrationsWrapper(AppManager.ConnectionStringADO).LatestVersionNumber;
CurrentVersionNumber = new MigrationsWrapper(AppManager.ConnectionStringADO).CurrentVersionNumber;
if (LatestVersionNumber > CurrentVersionNumber) {

string applicationName = ConfigurationManager.AppSettings["ApplicationName"].ToString();
string uninstallString = GetUninstallRegistryKeyByProductName(applicationName);
if (uninstallString != string.Empty) {
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c " + uninstallString;
process.StartInfo = startInfo;
process.Start();

}
} else {
// Successfull
}

关于c# - 在数据库迁移失败时恢复应用程序的先前状态 (ClickOnce),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com