오토핫키로 만든 프로그램을 추가 배포 없이 자동으로 최신 버전으로 업데이트하는 로직을 알아보겠습니다.
서버에 최신 버전이 있는 것을 확인하고 최신 버전이 있다면 서버에서 다운로드하고
최신 버전을 실행시키며 기존의 구 버전을 삭제시키는 로직입니다.
서버에 최신 버전을 확인할 파일인 ver.txt의 내용은 1.1을 저장하고 ver.txt 파일을 업로드했습니다.
최신 버전의 프로그램인 Downloader.exe를 업로드했습니다.
// 현재 버전
curVer := 1.0
// 서버에서 최신버전을 다운로드 함
urldownloadtofile, https://******/ver.txt, ver.txt ;버전
// UpdateVer 변수에 ver.txt의 내용을 읽어 저장하고 ver.txt 파일삭제
fileread, UpdateVer, ver.txt
filedelete, ver.txt
// 현재 버전과 최신버전이 틀리면 업데이트를 합니다.
if(curVer!=UpdateVer)
{
msgbox, 새버전 업데이트 합니다.`n프로그램이 재시작 됩니다.
urldownloadtofile, https://******/Downloader.exe, Downloader%UpdateVer%.exe
// 다운로드한 최신버전의 프로그램을 실행시키고 현재 프로그램은 종료합니다.
run, Downloader%UpdateVer%.exe
exitapp
}
ver.txt에 내용을 읽어 1.1의 버전을 UpdateVer 변수에 저장하고
현재 버전인 curVer 변수와 최신 버전인 UpdateVer 변수를 비교해 값이 다르다면 업데이트를 진행합니다.
서버에서 최신 버전의 실행파일을 다운로드하고 최신 버전인 1.1을 실행파일 뒤에 붙어 파일명을 지정합니다.
그리고 최신 버전 실행파일을 실행하고 버전이 1.0인 기존 프로그램은 종료합니다.
다음은 최신 버전인 프로그램의 코드입니다.
// 최신 버전
curVer := 1.1
urldownloadtofile, https://******/ver.txt, ver.txt ;버전
fileread, UpdateVer, ver.txt
filedelete, ver.txt
// 이전 버전 삭제
FileDelete, Downloader*.exe
if(curVer!=UpdateVer)
{
msgbox, 새버전 업데이트 합니다.`n프로그램이 재시작 됩니다.
urldownloadtofile, https://******/Downloader.exe, Downloader%UpdateVer%.exe
run, Downloader%UpdateVer%.exe
exitapp
}
딱히 다른 내용은 없습니다.
결과적으로 curVer 변수의 내용만 변경하고 서버에 업로드하면 됩니다.
이전 버전을 삭제하는 코드는 최초 버전부터 들어가 있어도 됩니다.
중요한 점은 서버에 올릴 최신 버전의 프로그램은 고정 이름으로 업로드해야 합니다.
1.0 버전에서 업데이트를 진행해 버전 1.1을 다운로드하고 실행한 이후
이전 버전 파일을 삭제합니다.
정확히 말하면 Downloader가 붙은 모든 파일을 삭제합니다. (Downloader*.exe)
실행되고 있는 프로그램에 삭제 코드가 들어가 있지만 실행 중이라 삭제되지 않기 때문에 문제가 없습니다.
저번 포스팅에 사용했던 다운로드 함수를 이용하면 다음과 같이 사용할 수 있습니다.
curVer := 1.0
urldownloadtofile, https://******/ver.txt, ver.txt ;버전
fileread, UpdateVer, ver.txt
filedelete,ver.txt
FileDelete, Downloader*.exe
if(curVer!=UpdateVer)
{
msgbox, 새버전 업데이트 합니다.`n프로그램이 재시작 됩니다.
Url = https://******/Downloader.exe
DownloadAs = Downloader%UpdateVer%.exe
Overwrite := True
UseProgressBar := True
DownloadFile(Url, DownloadAs, Overwrite, UseProgressBar)
run, Downloader%UpdateVer%.exe
exitapp
}
자동 업데이트를 하려면 해야 할 목록입니다.
1. 서버에 ver.txt 파일에 내용을 최신 버전으로 변경해서 업로드
2. ver.txt에 쓴 버전과 동일한 버전을 CurVer 변수에 저장하는 코드를 사용하는 프로그램을 서버에 업로드
'컴퓨터 프로그래밍 > Autohotkey' 카테고리의 다른 글
오토핫키 뮤텍스 / 클래스 수정 (오토핫키 오픈소스를 이용한) - 일부 온라인 게임에서 오토핫키를 사용할 수 있게 합니다. (20) | 2019.08.19 |
---|---|
[오토핫키 서버 연동] 5. 프로그램 서버 인증 / 차단 (24) | 2019.08.19 |
[오토핫키 서버 연동] 3. 소스 코드 수정 없이 메시지 변경 (0) | 2019.08.19 |
[오토핫키 서버 연동] 2. 다운로더 (폴더 선택: FileSelectFolder, 다운로드 상태 바: Progress, 다운로드 함수) (0) | 2019.08.19 |
[오토핫키 서버 연동] 1. 서버 개설 3 (시놀로지 나스를 이용한) (0) | 2019.08.19 |