<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%EC%9E%90%EB%8F%99_%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EA%B0%9C%EB%B0%9C</id>
	<title>Autoit 자동 업그레이드 프로그램 개발 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%EC%9E%90%EB%8F%99_%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EA%B0%9C%EB%B0%9C"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%EC%9E%90%EB%8F%99_%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EA%B0%9C%EB%B0%9C&amp;action=history"/>
	<updated>2026-05-17T07:20:44Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Autoit_%EC%9E%90%EB%8F%99_%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EA%B0%9C%EB%B0%9C&amp;diff=1915&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: == 자동 업그레이드 프로그램 개발 == # 최신 소프트웨어 버전을 비교하여 최신 버전을 설치하는 AutoIt 스크립트 개발 &lt;source lang=autoit&gt; #include &lt;File.au3&gt;  ; --- 설정 시작 --- Global $sProgramName = &quot;내 프로그램&quot; ; 프로그램 이름 (설치될 폴더 이름 등) Global $sLocalVersionFile = @ScriptDir &amp; &quot;\version.txt&quot; ; 로컬 버전 정보 파일 경로 Global $sRemoteVersionURL = &quot;http://www.yourwebsite.com/latest_version.txt&quot;...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%EC%9E%90%EB%8F%99_%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EA%B0%9C%EB%B0%9C&amp;diff=1915&amp;oldid=prev"/>
		<updated>2025-06-26T11:59:54Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == 자동 업그레이드 프로그램 개발 == # 최신 소프트웨어 버전을 비교하여 최신 버전을 설치하는 AutoIt 스크립트 개발 &amp;lt;source lang=autoit&amp;gt; #include &amp;lt;File.au3&amp;gt;  ; --- 설정 시작 --- Global $sProgramName = &amp;quot;내 프로그램&amp;quot; ; 프로그램 이름 (설치될 폴더 이름 등) Global $sLocalVersionFile = @ScriptDir &amp;amp; &amp;quot;\version.txt&amp;quot; ; 로컬 버전 정보 파일 경로 Global $sRemoteVersionURL = &amp;quot;http://www.yourwebsite.com/latest_version.txt&amp;quot;...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 자동 업그레이드 프로그램 개발 ==&lt;br /&gt;
# 최신 소프트웨어 버전을 비교하여 최신 버전을 설치하는 AutoIt 스크립트 개발&lt;br /&gt;
&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
#include &amp;lt;File.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; --- 설정 시작 ---&lt;br /&gt;
Global $sProgramName = &amp;quot;내 프로그램&amp;quot; ; 프로그램 이름 (설치될 폴더 이름 등)&lt;br /&gt;
Global $sLocalVersionFile = @ScriptDir &amp;amp; &amp;quot;\version.txt&amp;quot; ; 로컬 버전 정보 파일 경로&lt;br /&gt;
Global $sRemoteVersionURL = &amp;quot;http://www.yourwebsite.com/latest_version.txt&amp;quot; ; 최신 버전 정보가 있는 URL&lt;br /&gt;
Global $sRemoteInstallerURL = &amp;quot;http://www.yourwebsite.com/MyProgram_Setup.exe&amp;quot; ; 최신 설치 파일 URL&lt;br /&gt;
Global $sInstallerSavePath = @TempDir &amp;amp; &amp;quot;\MyProgram_Setup.exe&amp;quot; ; 설치 파일 다운로드 경로&lt;br /&gt;
; --- 설정 끝 ---&lt;br /&gt;
&lt;br /&gt;
Func Main()&lt;br /&gt;
    Local $sCurrentVersion = GetCurrentVersion()&lt;br /&gt;
    Local $sLatestVersion = GetLatestVersion()&lt;br /&gt;
&lt;br /&gt;
    If $sCurrentVersion = &amp;quot;&amp;quot; Then&lt;br /&gt;
        MsgBox(64, $sProgramName &amp;amp; &amp;quot; 업데이트&amp;quot;, &amp;quot;현재 프로그램 버전 정보를 찾을 수 없습니다. 처음 설치하거나 수동 업데이트가 필요할 수 있습니다.&amp;quot;)&lt;br /&gt;
        InstallLatestVersion($sRemoteInstallerURL, $sInstallerSavePath)&lt;br /&gt;
        Exit&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If $sLatestVersion = &amp;quot;&amp;quot; Then&lt;br /&gt;
        MsgBox(48, $sProgramName &amp;amp; &amp;quot; 업데이트&amp;quot;, &amp;quot;최신 버전 정보를 가져올 수 없습니다. 인터넷 연결을 확인하거나 나중에 다시 시도하십시오.&amp;quot;)&lt;br /&gt;
        Exit&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    If VersionCompare($sCurrentVersion, $sLatestVersion) &amp;lt; 0 Then&lt;br /&gt;
        MsgBox(64, $sProgramName &amp;amp; &amp;quot; 업데이트&amp;quot;, &amp;quot;새로운 버전(&amp;quot; &amp;amp; $sLatestVersion &amp;amp; &amp;quot;)이 감지되었습니다. 현재 버전: &amp;quot; &amp;amp; $sCurrentVersion &amp;amp; @CRLF &amp;amp; &amp;quot;업데이트를 진행합니다.&amp;quot;)&lt;br /&gt;
        InstallLatestVersion($sRemoteInstallerURL, $sInstallerSavePath)&lt;br /&gt;
    Else&lt;br /&gt;
        MsgBox(64, $sProgramName &amp;amp; &amp;quot; 업데이트&amp;quot;, &amp;quot;현재 최신 버전입니다. (&amp;quot; &amp;amp; $sCurrentVersion &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func GetCurrentVersion()&lt;br /&gt;
    ; 로컬 버전 파일에서 버전 정보 읽기&lt;br /&gt;
    If FileExists($sLocalVersionFile) Then&lt;br /&gt;
        Return FileReadLine($sLocalVersionFile, 1)&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return &amp;quot;&amp;quot;&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func GetLatestVersion()&lt;br /&gt;
    ; 원격 URL에서 최신 버전 정보 읽기&lt;br /&gt;
    Local $oHTTP = ObjCreate(&amp;quot;WinHttp.WinHttpRequest.5.1&amp;quot;)&lt;br /&gt;
    If Not IsObj($oHTTP) Then Return SetError(1, 0, &amp;quot;&amp;quot;)&lt;br /&gt;
    $oHTTP.Open(&amp;quot;GET&amp;quot;, $sRemoteVersionURL, False)&lt;br /&gt;
    $oHTTP.Send()&lt;br /&gt;
    If $oHTTP.Status = 200 Then&lt;br /&gt;
        Return StringStripWS($oHTTP.ResponseText, 3) ; 공백 제거&lt;br /&gt;
    EndIf&lt;br /&gt;
    Return SetError(1, $oHTTP.Status, &amp;quot;&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func VersionCompare($sVer1, $sVer2)&lt;br /&gt;
    ; 버전 문자열 비교 (예: 1.0.10 &amp;lt; 1.0.11, 1.1.0 &amp;gt; 1.0.10)&lt;br /&gt;
    Local $aVer1 = StringSplit($sVer1, &amp;quot;.&amp;quot;)&lt;br /&gt;
    Local $aVer2 = StringSplit($sVer2, &amp;quot;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    For $i = 1 To Max($aVer1[0], $aVer2[0])&lt;br /&gt;
        Local $iNum1 = ($i &amp;lt;= $aVer1[0]) ? Int($aVer1[$i]) : 0&lt;br /&gt;
        Local $iNum2 = ($i &amp;lt;= $aVer2[0]) ? Int($aVer2[$i]) : 0&lt;br /&gt;
&lt;br /&gt;
        If $iNum1 &amp;lt; $iNum2 Then Return -1&lt;br /&gt;
        If $iNum1 &amp;gt; $iNum2 Then Return 1&lt;br /&gt;
    Next&lt;br /&gt;
    Return 0 ; 두 버전이 같음&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func InstallLatestVersion($sURL, $sSavePath)&lt;br /&gt;
    MsgBox(64, $sProgramName &amp;amp; &amp;quot; 업데이트&amp;quot;, &amp;quot;최신 버전 설치 파일을 다운로드합니다. 잠시 기다려주십시오.&amp;quot;)&lt;br /&gt;
    Local $bDownloaded = _INetGetSource($sURL, $sSavePath)&lt;br /&gt;
&lt;br /&gt;
    If Not $bDownloaded Then&lt;br /&gt;
        MsgBox(16, $sProgramName &amp;amp; &amp;quot; 업데이트&amp;quot;, &amp;quot;설치 파일 다운로드에 실패했습니다. 인터넷 연결을 확인하거나 나중에 다시 시도하십시오.&amp;quot;)&lt;br /&gt;
        Return&lt;br /&gt;
    EndIf&lt;br /&gt;
&lt;br /&gt;
    MsgBox(64, $sProgramName &amp;amp; &amp;quot; 업데이트&amp;quot;, &amp;quot;설치 파일을 다운로드했습니다. 설치를 시작합니다.&amp;quot;)&lt;br /&gt;
    Run($sSavePath)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
; INetGetSource 함수는 AutoIt 기본 함수가 아님, _INetGetSource 사용&lt;br /&gt;
; AutoIt 도움말 파일에서 InetGet 또는 _INetGetSource를 검색하여 사용법 확인&lt;br /&gt;
Func _INetGetSource($sSource, $sDest)&lt;br /&gt;
    Local $iResult = InetGet($sSource, $sDest, 1) ; 1은 존재하면 덮어쓰기&lt;br /&gt;
    Return ($iResult = 1) ; 성공 시 1 반환&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 프로그램 기능 설명 ===&lt;br /&gt;
# 현재 버전 확인: version.txt 파일에서 현재 설치된 프로그램의 버전 정보를 읽어옵니다.&lt;br /&gt;
# 최신 버전 확인: 지정된 웹사이트(sRemoteVersionURL)에서 최신 버전 정보를 가져옵니다. 이 웹사이트에는 버전 번호만 포함된 텍스트 파일이 있어야 합니다 (예: 1.2.3).&lt;br /&gt;
 # 버전 비교: 현재 버전과 최신 버전을 비교하여 최신 버전이 있는지 확인합니다.&lt;br /&gt;
 # 다운로드 및 설치: 최신 버전이 감지되면, 지정된 URL(sRemoteInstallerURL)에서 최신 설치 파일을 다운로드하고 실행합니다.&lt;br /&gt;
&lt;br /&gt;
=== 사용 전 설정 ==&lt;br /&gt;
# 스크립트 상단에 있는 다음 전역 변수들을 반드시 사용자 환경에 맞게 수정해야 합니다.&lt;br /&gt;
#  $sProgramName: 프로그램 이름입니다. 메시지 박스에 표시됩니다.&lt;br /&gt;
# $sLocalVersionFile: 로컬 버전 정보 파일 경로입니다. 이 파일은 현재 프로그램이 설치된 폴더 내에 version.txt라는 이름으로 존재해야 하며, 파일 안에는 현재 버전 번호(예: 1.0.0)만 적혀있어야 합니다.&lt;br /&gt;
# $sRemoteVersionURL: 최신 버전 정보가 있는 URL입니다. 웹 서버에 버전 정보만 담긴 텍스트 파일(예: latest_version.txt)을 올려두고 해당 파일의 URL을 입력합니다.&lt;br /&gt;
# $sRemoteInstallerURL: 최신 설치 파일 URL입니다. 웹 서버에 최신 프로그램 설치 파일(예: MyProgram_Setup.exe)을 올려두고 해당 파일의 URL을 입력합니다.&lt;br /&gt;
 # $sInstallerSavePath: 설치 파일이 임시로 저장될 경로입니다. 기본값은 Windows 임시 폴더입니다.&lt;br /&gt;
&lt;br /&gt;
=== 작동 원리 및 권장 사항===&lt;br /&gt;
# 버전 파일: 프로그램 설치 시 version.txt 파일을 프로그램 설치 경로에 함께 생성하고, 이 파일에 설치된 프로그램의 현재 버전을 기록해야 합니다. 예를 들어, 1.0.0 또는 1.2.5와 같은 형식으로요.&lt;br /&gt;
 # 웹 서버: 최신 버전 정보 (latest_version.txt)와 최신 설치 파일 (MyProgram_Setup.exe)을 호스팅할 웹 서버가 필요합니다.&lt;br /&gt;
 # 설치 파일: 다운로드된 설치 파일은 일반적으로 자동으로 이전 버전을 제거하고 새 버전을 설치하도록 구성되어 있어야 합니다. AutoIt 스크립트는 단순히 설치 파일을 실행하는 역할만 합니다.&lt;br /&gt;
# 오류 처리: 인터넷 연결 문제, 파일 다운로드 실패 등 발생할 수 있는 여러 오류에 대한 기본적인 메시지 박스가 포함되어 있습니다. 필요에 따라 더 정교한 오류 처리 로직을 추가할 수 있습니다.&lt;br /&gt;
# 사용자 경험: 업데이트가 필요한 경우 사용자에게 명확히 알리고, 업데이트 진행 상황을 알리는 메시지 박스를 사용합니다.&lt;br /&gt;
# 관리자 권한: 프로그램 설치를 위해서는 관리자 권한이 필요할 수 있습니다. 스크립트를 관리자 권한으로 실행해야 할 수도 있습니다. RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; $sSavePath, &amp;quot;&amp;quot;, @SW_HIDE)와 같이 RunWait 함수를 사용하고 RunAs를 고려할 수도 있습니다.&lt;br /&gt;
# 백그라운드 실행: 메시지 박스 없이 백그라운드에서 업데이트를 진행하려면 MsgBox 대신 로그 파일에 기록하거나, Run 함수에 @SW_HIDE 플래그를 사용하여 설치 프로세스를 숨길 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
* 이 스크립트를 기반으로 프로그램을 개발하고 배포하는 환경에 맞춰 수정하고 기능을 확장할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
[[category:autoit]]&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>