728x90
반응형
이 글에서는 Qt Installer Framework를 사용해 버전별 디렉터리 관리와 온라인 설치 프로그램 생성 과정을 다룹니다. 또한, repogen과 binarycreator 명령어를 사용해 최신 버전의 설치 프로그램을 생성하는 방법도 소개합니다.
Windows 환경에서 CMD 명령어로 모든 작업을 수행 할 예정입니다.(Qt가 윈도우 기반이라 리눅스에서 실행하면 환경 변수나 플러그인 경로 문제로 설정이 까다로워요.)
1. 프로젝트 디렉터리 구조 예시
버전별 디렉터리를 구성하면 의존성 문제를 최소화하고 버전 간 롤백도 간편합니다.
rockpaperscissors-installer/
├── v1.00/
│ ├── config/
│ │ └── config.xml # v1.00 설치 프로그램 설정 파일
│ ├── packages/
│ │ └── com.mycompany.rockpaperscissors/
│ │ ├── meta/
│ │ │ └── package.xml # v1.00 패키지 정보 파일
│ │ └── data/
│ │ └── [v1.00 게임 파일들]
│ └── repository/
│ └── Updates.xml # v1.00 업데이트 정보 파일
├── v1.01/
│ ├── config/
│ │ └── config.xml # v1.01 설치 프로그램 설정 파일
│ ├── packages/
│ │ └── com.mycompany.rockpaperscissors/
│ │ ├── meta/
│ │ │ └── package.xml # v1.01 패키지 정보 파일
│ │ └── data/
│ │ └── [v1.01 게임 파일들]
│ └── repository/
│ └── Updates.xml # v1.01 업데이트 정보 파일
└── latest/ (선택 사항)
└── 심볼릭 링크 → 최신 버전(v1.01)
- repository는 Qt의 repogen으로 생성할 레포지터리 디렉터리이므로 비어있는 디렉터리로 만든다.
1.1 v1.01 버전의 package.xml 예시
이 파일은 패키지 정보(버전, 이름, 설명 등)를 담고 있으며, 설치 프로그램이 이 파일을 참조합니다.
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>Rock Paper Scissors Game v1.01</DisplayName>
<Description>
This is the v1.01 release of the Rock Paper Scissors game with improved UI and bug fixes.
</Description>
<Version>1.01</Version>
<ReleaseDate>2024-10-28</ReleaseDate>
<Default>true</Default>
<Script>installscript.qs</Script>
</Package>
- <DisplayName>: 패키지의 표시 이름
- <Description>: 패키지 설명
- <Version>: 패키지 버전 정보
- <ReleaseDate>: 릴리즈 날짜
- <Default>: 이 패키지를 기본적으로 설치할지 여부 (true 또는 false)
- <Script>: 설치 스크립트 파일 지정 (선택사항)
1.2 v1.01 버전의 config.xml 예시
이 파일은 설치 프로그램의 전반적인 설정을 관리합니다.
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>Rock Paper Scissors Installer</Name>
<Version>1.01</Version> <!-- 최신 버전 정보 -->
<Title>Rock Paper Scissors Game Installer</Title>
<Publisher>MyCompany</Publisher>
<StartMenuDir>RockPaperScissors</StartMenuDir>
<TargetDir>@HomeDir@/RockPaperScissors</TargetDir>
<RemoteRepositories>
<Repository>
<Url>https://example.github.io/rockpaperscissors-installer/v1.01</Url>
<Enabled>1</Enabled>
<DisplayName>Rock Paper Scissors v1.01 Repository</DisplayName>
</Repository>
</RemoteRepositories>
</Installer>
- <Name>: 설치 프로그램 이름
- <Version>: 설치 프로그램의 버전 정보
- <Title>: 설치 프로그램 창의 제목
- <Publisher>: 배포자 이름
- <StartMenuDir>: 시작 메뉴에 생성될 디렉터리 이름
- <TargetDir>: 프로그램이 설치될 기본 디렉터리
- <RemoteRepositories>: 원격 레포지토리 설정
- <Url>: 레포지토리 URL
- <Enabled>: 해당 레포지토리가 활성화될지 여부 (1은 활성화)
- <DisplayName>: 설치 도구에서 표시될 레포지토리 이름
2. Qt 레포지토리 생성 (repogen 명령어 사용)
1) repogen 명령어를 사용한 레포지토리 생성
repogen -p rockpaperscissors-installer\v1.01\packages rockpaperscissors-installer\v1.01\repository
- -p: 패키지 디렉터리를 지정합니다.
- repository: 생성된 레포지토리의 위치입니다.
2) 게임 파일 복사
xcopy new_version_files\* rockpaperscissors-installer\v1.01\packages\com.mycompany.rockpaperscissors\data\ /E /I
- 이전에 만든 7z파일을 윈도우 환경에서 복사해도 된다.
3. 심볼릭 링크 생성 및 최신 버전 설정
mklink /D rockpaperscissors-installer\latest rockpaperscissors-installer\v1.01
- 사용자는 **latest**를 통해 항상 최신 버전을 설치할 수 있습니다.
- latest 폴더에 최신 버전 디렉터리를 바로가기로 설정해서 항상 최신 버전을 설치할 수 있도록 할 수 있다.
4. 온라인 설치 프로그램 생성 (binarycreator)
1) 기본 설치 프로그램 생성
binarycreator -c rockpaperscissors-installer\v1.01\config\config.xml -p rockpaperscissors-installer\v1.01\packages rockpaperscissors_installer.exe
- -c: 설정 파일 경로
- -p: 패키지 경로
- rockpaperscissors_installer.exe: 생성될 설치 파일 이름
2) 최신 버전을 사용한 설치 프로그램 생성
latest 디렉터리를 이용해 항상 최신 버전을 반영한 설치 프로그램을 생성합니다.
binarycreator -c rockpaperscissors-installer\latest\config\config.xml -p rockpaperscissors-installer\latest\packages latest_installer.exe
5. 최신 버전의 설치 프로그램 설정
latest 디렉터리를 활용한 config.xml 파일 예시입니다:
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>Rock Paper Scissors Installer</Name>
<Version>latest</Version>
<Title>Rock Paper Scissors Game Installer</Title>
<Publisher>MyCompany</Publisher>
<StartMenuDir>RockPaperScissors</StartMenuDir>
<TargetDir>@HomeDir@/RockPaperScissors</TargetDir>
<RemoteRepositories>
<Repository>
<Url>https://example.github.io/rockpaperscissors-installer/latest</Url>
<Enabled>1</Enabled>
<DisplayName>Rock Paper Scissors Latest Repository</DisplayName>
</Repository>
</RemoteRepositories>
</Installer>
6. GitHub에 푸시하기
- Git 초기화 및 커밋
cd rockpaperscissors-installer
git init
git add .
git commit -m "Add v1.01 version and latest installer"
- GitHub 원격 저장소 추가 및 푸시
git remote add origin https://github.com/yourusername/rockpaperscissors-installer.git
git branch -M main
git push -u origin main
7. 결론
이제 Qt Installer Framework를 활용해 버전별로 관리하면서, 최신 버전을 위한 설치 프로그램도 손쉽게 생성할 수 있습니다. 심볼릭 링크를 통해 최신 버전을 반영하고, GitHub에 쉽게 푸시하여 사용자들이 온라인에서 설치 프로그램을 다운로드할 수 있습니다.
궁금한 점이 있거나 추가 설명이 필요하면 언제든지 말씀해 주세요! 😊
'임베디드 관련 카테고리 > Qt' 카테고리의 다른 글
Qt로 다운로드 매니저 구현하기: 진행 상태 및 자동 설치 기능 (1) | 2024.10.30 |
---|---|
Qt Creator를 사용한 GitHub API 기반 버전 관리 모듈 분리 및 사용하기 (0) | 2024.10.29 |
GitHub Pages와 Qt Installer Framework를 이용해 온라인 설치 프로그램 만들기 (1) | 2024.10.25 |
가위바위보 배포 프로그램 만들기 - Qt Creator 사용 (3) | 2024.10.23 |
Qt Creator로 버튼 클릭 예제 만들기 (0) | 2024.10.23 |
댓글