• 0
S_007

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

Вопросы

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

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


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

6 ответов на этот вопрос

  • 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

sinuke гигантское Спасибо!!!

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


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

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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