Как принудительно перезаписать уже развернутые файлы в Android delphi

#android #delphi #deployment

#Android #delphi #развертывание

Вопрос:

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

Что касается:http://docwiki.embarcadero.com/RADStudio/Rio/en/Deployment_Manager
вы можете указать функцию перезаписи для каждого файла.

  • Всегда: Развертывайте локальный файл, если он новее удаленного файла, перезаписывая удаленный файл
  • Никогда: Выберите этот параметр для файла, если вы хотите исключить его из развертывания.

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

    тематическое исследование:
    Я хочу развернуть базу данных «только для чтения» в приложении. В следующем обновлении я хочу развернуть актуальную версию, поэтому файл DB должен быть перезаписан. Но что, если драйвер базы данных изменит этот файл в устройстве? (Не гарантируется, что файл БД не будет изменен, даже не будет вставки или обновления в БД — возможно, драйвер может записать некоторые метаданные …).
    Что, если у пользователя будет неправильное время на устройстве (например, будущие годы), и поэтому «старый» файл на устройстве будет иметь более новую временную метку?

  • Комментарии:

    1. Я чувствую, что файлы, которые необходимо развернуть, — это файлы, которые не должны и не нуждаются в изменении приложением. Это ресурсы, подобные изображениям. Если приложение изменяет файл, оно делает это намеренно. Пользователь через разработчика хотел, чтобы это было именно так. Повторное изменение с помощью обновления приводит к потере данных. Как следствие, все файлы, которые могут быть изменены, должны не развертываться, а генерироваться при использовании.

    2. Вы можете скопировать файл startupcopy.pas в папку вашего проекта и отредактировать его, чтобы разрешить перезапись в определенных обстоятельствах.

    3. @nolaspeaker большое вам спасибо, startupcopy.pas — это очень интересная точка, с которой можно начать.

    4. startupcopy.pas — это код, который фактически использует менеджер развертывания.