Использование cordova-plugin-file для копирования базы данных SQLite cordova-sqlite-storage в Windows 10

Мне нужна помощь с файлом cordova-plugin-file для резервного копирования базы данных, используемой cordova-sqlite-storage в приложении Windows 10. Мой код отлично работает на платформе Android. База данных может быть скопирована в обоих направлениях (резервное копирование и восстановление). База данных, используемая приложением, выглядит следующим образом:

C: \ Users \ MyUser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db

Приложение пытается использовать это местоположение, чтобы найти файл, но он не найден:

мс-appx:///databases/sample.db

Как получить правильное местоположение для Windows, чтобы скопировать файл?

Это код, который я использую для копирования файла:

backupDatabase (имя: строка): Promise {

return new Promise<boolean>((resolve, reject) => 
{
  var fileName: string = window.cordova.file.applicationStorageDirectory + 'databases/' + name;
  var directoryName: string = window.cordova.file.externalRootDirectory;

  window.resolveLocalFileSystemURL(fileName, (file: FileEntry) => {
    console.log('[!] Database exists: ' + fileName);
    console.log('[!] Storage: ' + directoryName);
    window.resolveLocalFileSystemURL(directoryName, (directory: DirectoryEntry) => {
      console.log('[!] Directory: ' + directory.toURL());
      directory.getDirectory("Backup", {create: true, exclusive: false}, (directoryBackup: DirectoryEntry) => {
        console.log('[!] Directory: ' + directoryBackup.toURL());
        file.copyTo(directoryBackup, name, (copiedFile: Entry) => {
          console.log('[!] Copy success');
          resolve(true);
        }, (error: FileError) => {
          console.log('[!] Copy failed: ' + error.code);
          reject(error);
        });
      }, (error: FileError) => {
        console.log('[!] Backup Directory not found: ' + directoryName + 'Backup' + ' errorcode: ' +  + error.code);
        reject(error);
      })
    }, (error: FileError) => {
      console.log('[!] Directory not found: ' + directoryName + ' errorcode: ' +  + error.code);
      reject(error);
    }); 
  }, (error: FileError) => {
      console.log('[!] Database not found: ' + fileName + ' errorcode: ' +  + error.code);
      reject(error);
  });
});

1 ответ

Решение

Приложение пытается использовать это местоположение, чтобы найти файл, но он не найден:

мс-appx:///databases/sample.db

Как получить правильное местоположение для Windows, чтобы скопировать файл?

Вы используете неправильную схему ms-appx:/// относится к месту установки пакета.

За C:\Users\myuser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db

вам нужно использовать ms-appdata:///local/sample.db,

Другие вопросы по тегам