컴퓨터 프로그래밍/Autohotkey

[오토핫키 서버 연동] 4. 자동 업데이트

나노콛 2019. 8. 19. 18:27

오토핫키로 만든 프로그램을 추가 배포 없이 자동으로 최신 버전으로 업데이트하는 로직을 알아보겠습니다.

서버에 최신 버전이 있는 것을 확인하고 최신 버전이 있다면 서버에서 다운로드하고

최신 버전을 실행시키며 기존의 구 버전을 삭제시키는 로직입니다.

서버에 최신 버전을 확인할 파일인 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 변수에 저장하는 코드를 사용하는 프로그램을 서버에 업로드

728x90