При копировании базы данных обнаружена высокая версия ОС - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть приложение, которое копирует базу данных из локального пакета в локальную папку. После того, как я создаю пакет приложения в магазине и тестирую его с помощью 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;
        }

Здесь проект

Как с этим справиться?

1 Ответ

0 голосов
/ 18 сентября 2018

Я проверил ваш код, проблема в том, что вы использовали 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;
}
...