Перейти к содержанию
  • Регистрация
  • 0
S_007

Обновление приложения

Вопрос

Как сделать чтоб при обновлении приложения через USB кабель, переустанавливалось только само приложение а файл базы который был установлен по пути  .\assets\internal\ с первой установкой оставался не тронутым?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0
16 минут назад, S_007 сказал:

Как сделать чтоб при обновлении приложения через USB кабель, переустанавливалось только само приложение а файл базы который был установлен по пути  .\assets\internal\ с первой установкой оставался не тронутым?

Как раз не обновляется то, что было в deployment-е. Для многих это головная боль)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
37 минут назад, S_007 сказал:

Как сделать чтоб при обновлении приложения через USB кабель, переустанавливалось только само приложение а файл базы который был установлен по пути  .\assets\internal\ с первой установкой оставался не тронутым?

ну я бы сделал так:

поместил нужный файл в ресурсы (при этом в деплойменте галочку рядом с этим файлом убрал). при первом запуске проверял бы - если файл отсутсвует, то копируем из ресурсов в нужное место. а если файл уже присутствует, то ничего не делаем

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Спасибо! Очень понравился Ваш вариант sinuke, только бы реализацию такого подхода для андроид найти бы еще

Изменено пользователем S_007

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 2

Ну можно примерно так (не делал проверку на исключения)

procedure TForm1.FormShow(Sender: TObject);
var
  LRes: TResourceStream;
  LFileName: string;
begin
  LFileName := TPath.Combine(TPath.GetDocumentsPath, '1.txt');
  if not TFile.Exists(LFileName) then
    begin
      LRes := TResourceStream.Create(HInstance, 'SOMEFILE', RT_RCDATA);
      try
        LRes.SaveToFile(LFileName);
      finally
        FreeAndNil(LRes);
        ShowMessage('Файл скопирован из ресурсов');
      end;
    end
  else
    ShowMessage('Файл уже существует');
end;

1.txt - имя вашего файла

TPath.GetDocumentsPath - возвращает путь как раз к папке \assets\internal

SOMEFILE - имя ресурса, который добавлен в проект. При этом после добавления файла в ресурсы обязательно нужно зайти в Deployment и убрать галочку с добавленного файла (при добавлении в ресурсы файл автоматически добавляется в деплоймент)

Вот тестовый проектик. Делал правда в Starter-версии, поэтому Android не доступен. Но принцип ничем не отличается

ResFile.zip

Изменено пользователем sinuke

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Сколько уже разжевывали, что не заменяются ресурсы из деплоя..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...