复制数据库时检测到高操作系统版本验证

时间:2018-09-18 03:23:26

标签: c# database sqlite uwp windows-store-apps

我有一个应用程序,可将数据库从本地包复制到本地文件夹。在将应用程序包创建到商店并使用Windows App Cert Kit进行测试后,将显示一条错误消息,如下所示: failed message

在我尝试使用Powershell进行安装后,当首次打开该应用程序时,该应用程序运行平稳。但是在关闭应用程序后,再次运行,然后仅出现初始屏幕。 代码:

public static string DB_PATH = Path.Combine(Path.Combine(ApplicationData.Current.LocalFolder.Path, "Tryout.sqlite"));
if (!CheckFileExists("Tryout.sqlite").Result)
            {
                CopyDatabase();
            }
public async void CopyDatabase()
        {
            StorageFile dbFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Tryout.sqlite"));
            StorageFolder localFolder = ApplicationData.Current.LocalFolder;
            await dbFile.CopyAsync(localFolder, "Tryout.sqlite");
        }

        private async Task<bool> CheckFileExists(string fileName)
        {
            try
            {
                var store = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
                return true;
            }
            catch (Exception ex)
            {
            }
            return false;
        }

project

如何处理?

1 个答案:

答案 0 :(得分:0)

我已经测试了您的代码,问题是您在async构造函数方法中使用了App,这将导致线程阻塞。要检查文件是否存在,可以使用File.Exists sync方法来避免线程阻塞。我已经编辑了您的代码,请检查。

public App()
{
    this.InitializeComponent();
    this.Suspending += OnSuspending;

    if (!CheckFileExists("Tryout.sqlite"))
    {
        CopyDatabase();
    }

}

private bool CheckFileExists(string fileName)
{
    bool isExist;
    isExist = File.Exists(Path.Combine(ApplicationData.Current.LocalFolder.Path,fileName)) ? true : false;
    return isExist;
}