사운드, 이미지, 텍스트 파일을 최초배포하고, 변경된 파일을 다시 배포할 경우 덮어쓰기(overwrite)가 되지않습니다.(10 시애틀. 2016년 3월) 해당 현상은 안드로이드와 iOS 모두 해당됩니다.

이유는 배포 대상파일이 존재하는 경우(FileExist) 배포를 진행하지 않도록 구현(System.StartUpCopy.pas에 구현)되어 있기 때문입니다.

 

해결 방법은 3가지 정도로 생각해볼 수 있습니다.

1, System.StartUpCopy.pas를 수정하는 방법

2, 업데이트할 파일을 새로운 이름으로 배포하고, 앱 시작시 기존 파일로 덮어쓰는 방법

3, 파일을 앱과 함께 최초 배포 후, 파일 변경이 필요할 경우 인터넷 등을 통해 자동 업데이트 하는 방법

 

1, System.StartUpCopy.pas를 수정하는 방법

http://qc.embarcadero.com/wc/qcmain.aspx?d=125481 링크를 방문해 Xavier Dufaure de Citres 글을 참고해 수정할 수 있습니다.

Xavier Dufaure de Citres at 12/14/2014 3:10:58 PM -
Here is a workaround on Android:
* modify System.StartUpCopy
   - in the interface section add "Var ASSET_OVERWRITE : Boolean = false;"
   - in the interface section exopose "procedure CopyStartUpFiles;"
   - in the CopyAssetToFile change "if (not FileExists(DestFileName)) then" by "if (not FileExists(DestFileName)) or ASSET_OVERWRITE then"

* in your own code, store in the preference file the last version the user ran. If the current version is newer do
  if optLastVersionRan<Version then
  Begin
    ASSET_OVERWRITE := true;
    CopyStartUpFiles;
    ASSET_OVERWRITE := false;
  End;

On the 1st installation the data will be copied twice (no biggy), on update the file will be overwritten.

Note for iOS: i find out that deploying the files i need in ".\Data\" is much better: it put the file directly in the bundle, this way the file are not archived (i got my app rejected because i had 12 Mb of data that was archived). Of course these files can only be read only.

 

2, 업데이트할 파일을 새로운 이름으로 배포하고, 앱 시작시 기존 파일로 덮어쓰는 방법 

배포파일이 업데이트 되면 새로운 파일명으로 배포 후 앱 시작 시 원래파일로 덮어쓰는 방식입니다.

위 이미지와 같이, "deploy.txt" 파일 배포 시 remote name을 "deploy_2.txt"로 배포했습니다.

 

프로젝트에는 아래와 같은 코드를 구현했습니다.(코드에 대한 설명은 생략합니다.)

uses
  System.IOUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
  Path: string;
begin
  Path := TPath.Combine(TPath.GetDocumentsPath, 'deploy.txt');
  Memo1.Lines.LoadFromFile(Path);
end;

procedure TForm1.DeployFileUpdate(const AFilename, AUpdateFilename: string);
var
  OrgPath, UptPath: string;
begin
  OrgPath := TPath.Combine(TPath.GetDocumentsPath, AFilename);
  UptPath := TPath.Combine(TPath.GetDocumentsPath, AUpdateFilename);

  if TFile.Exists(UptPath) then
  begin
    if TFile.Exists(OrgPath) then
      TFIle.Delete(OrgPath);
    TFile.Move(UptPath, OrgPath);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DeployFileUpdate('deploy.txt',  'deploy_2.txt');
//  DeployFileUpdate('sound1.wav',  'sound1_2.wav');
//  DeployFileUpdate('env.ini',     'env_2.ini');
end;

 

3, 파일을 앱과 함께 최초 배포 후, 파일 변경이 필요할 경우 인터넷 등을 통해 자동 업데이트 하는 방법

배포파일 자동 업데이트는 파일별 버전관리가 필요하며, 업데이트 파일을 내려주는 서버가 필요합니다.

앱 실행 시 배포파일 버전을  서버에서 확인 후 업데이트할 파일이 있으면, Http, FTP 등으로 파일을 다운로드해 배포파일을 교채하는 방식입니다.

웹상의 파일을 다운로드 받는 방법은 아래 링크를 참고할 수 있습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15450
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13963
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16500
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22057
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18924
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39259
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174726
1103 David I의 31일 동영상(한글자막) - SQLite DB앱 만들기(윈도우&맥용)(델파이 동일 적용 가능 관리자 2013.04.26 5021
1102 [웹세미나] 파이어몽키용 TMS Grid와 비주얼 라이브바인딩을 활용한 멀티-티어 애플리케이션 개발 관리자 2012.10.23 5015
1101 CodeRage7 : 'C++' 다시보기 관리자 2012.12.21 5003
1100 멀티-티어 작업을 더욱 쉽게 만들어주는 Class Helper 관리자 2013.03.26 5000
1099 RAD Studio XE3를 활용한 iOS애플리케이션 개발 베타 테스터 모집 관리자 2013.01.28 4994
1098 델파이로 간단하게 슬라이드 효과를 적용한 iOS앱 만들기 관리자 2013.03.26 4957
1097 델파이 이전버전을 설치하는 방법 Humphery 2014.02.14 4901
1096 RAD Studio XE4 퀵 가이드: PDF 다운로드 file 관리자 2013.05.30 4896
1095 [XE5만의 특별한 기능] 응답하라! Delphi VCL 개발자 관리자 2013.12.21 4890
1094 [C++빌더 XE3 비디오 31] C++파이어몽키 애플리케이션에 새로운 장비와 센서 적용하기 관리자 2013.01.08 4888
1093 안드로이드 ARM 에뮬레이터 속도를 올리는 8가지 팁 Humphery 2014.04.25 4886
1092 Digifort에서 델파이XE5로 개발한 원격 제어 카메라 앱 관리자 2013.10.30 4880
1091 이 달의 기술자료 - 2014년 10월 file 험프리 2014.09.12 4851
1090 "델파이 세미나 in 부산: 윈도우와 맥 개발자를 위한 파이어몽키" 세미나 자료 file 관리자 2013.03.06 4838
1089 안드로이드 웹브라우저에서 "tel:, sms:" 링크가 동작하지 않는 이슈 해결하기 Humphery 2015.06.26 4831
1088 RAD Studio 모바일 로드맵 공개 관리자 2012.09.21 4828
1087 20130307 "RAD Studio XE3 따라잡기,LIVE! : iOS 델파이 개발 프리뷰 최초 공개" 세미나 자료 file 관리자 2013.03.08 4798
1086 XE3 - Hotfix가 올라왔습니다. 관리자 2012.10.05 4761
1085 모바일 첫걸음: 델파이 iOS 개발 - 5.제스처를 사용한 탭 간 이동 관리자 2013.10.15 4754
1084 InterBase XE3 퀵스타트 가이드 file 문효섭 2014.01.13 4727