FTP를 이용한 업체별, 부서별 프로그램 자동업데이트 루틴에 대한 설명과 사용 방법

 
뭐 유틸리티 프로그램같은것 말고, ASP 프로그램도 아니고, 사무실에서만 돌아가는 업체용 프로그램을 개발하는 경우 수십 수백개의 사이트를 가지고 있을 경우에 업데이트 프로그램을 개발할때 조금이나마 도움이 되지 않을까 싶은 생각에...

예를들어 A, B, C 업체가 있는데,
프로그램이 전체적으로 업데이트가 되는 경우에야 모두다 자동 업그레이드를 해주면 되지만, 일부 업체에 한해서만 업그레이드를 해주고 싶은 경우...(물론 업체 컴퓨터에 인터넷이 연결되어있다는 가정아래...)

ftp 사이트에 version.ini 파일을 하나 작성해서 올려놓는다.

[prog]
ver=1
A=1
B=1
C=-1
D=10003
down=http://ftp.danbisw.xxx/1234.exe

그리고 프로그램이 시작할때  Windows api 를 이용해서 위 파일을 다운받는다.

FUNCTION ULONG URLDownloadToFileA( ulong pCaller, ref string szUrl, ref string szFileName,  ulong dwReserved,  ulong lpfncb) LIBRARY "urlmon.dll"

URLDownloadToFileA(0, ls_url, ls_down, 0, 0)

그리고 로컬에 저장된 ini 파일을 읽는다 - 물론 이미 만들어져 있거나, 새로 만들거나...
(로그인을 해서 DB에서 값을 불러와 이용해도 괜찮고...)

[prog]
autoupdate=yes
lastupdate=2010-03-22
sitecode=A
ver=1
site=10002

뭐 각 랭귀지마다 다르겠지만, 프로파일을 읽어오는 함수를 이용해서
ftp서버에서 받아온 값과 로컬 ini 파일의 값을 비교한다.

ver -> 프로그램 버전으로 이것이 다르면 무조건 업데이트를 받도록 함.
A, B, C, D -> 업체별 사이트코드로 ini파일에 있는 site값과 서버에 있는 값이 다를 경우에 업데이트를 한다.

위와 같은 경우에는 B,C 라는 사이트는 ver=1 로 되어 있으므로 자동업데이트를 실행할 필요가 없고,
A라는 사이트만 변경된 프로그램을 다운 받아서 자동업데이트를 하게 됨...

( ftp서버에서 받은 파일은 비교를 한후에 바로 삭제를 해서 사용자는 볼수 없도록 처리)

A라는 사이트의 부분만 수정이 되었는데, B, C까지 업데이트를 안해도 되고,
ftp에 있는 사이트코드를 0으로 입력하면 무조건 업데이트가 안되게 한다던지, -1 로 해놓으면 프로그램이 경고메세지만 남기고 종료를 한다던지의 방법을 이용할수도 있을것이다.

물론 업체마다 프로그램 자체가 다 다르다면 어쩔수 없지만, 하나의 프로그램으로 업체별로 조금씩 루핀만 다른 정도라면 괜찮을듯 하고, 회사 업무상에서도 회계전표를 끊는 부분이 바뀌었다면 전체부서가 프로그램을 업데이트해야겠지만, 영업팀의 매출관리 프로그램이 변경되었는데, 모든 회사의 프로그램을 업데이트하는 경우에도 이용을 해보면 좋을듯....


그러고보니 예전에 어떤 대기업에 잠깐 들어갔을때도 프로그램 하나가 수정되면 모든 클라이언트에 자료를 업데이트하기도 했는데, 그런 경우 아침 출근시간에 엄청난 부하가 걸리기도...^^
(물론 파일이 락이 걸리는 경우도 있지만, 위 파일에 다운로드 경로까지 포함해서 작성을 하면 될듯)


배치파일을 만들어서 프로그램을 컴파일러 하고, 자동으로 FTP 서버에 올리고, ini 파일도 자동으로 수정을 할수 있게 하면 한방에 끝나서 간편하게 처리할수 있다는...