일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 파이썬 환경설정
- Python
- pywinauto 윈도우
- Selenium 셀렉터잡기
- 네이버 로그인 영수증 해결
- selenium
- 네이버 로그인 하기
- Uipath 설치방법
- 파이썬 가상환경 설치
- 네이버 로그인 캡챠해결
- pywinauto 윈도우제어
- venv 설치
- pycdas.exe
- 파이썬 가상환경 설치방법
- 네이버부동산크롤링
- pywinauto
- 네이버커머스API
- 커머스API
- Element is not clickable at point
- 가상환경설치
- 파이썬 네이버 로그인
- Uipath 기초
- uipath 입문
- 날짜 정규식
- vscode venv 설치
- UiPath
- pycdc.exe
- 파이썬네이버부동산
- 네이버매물크롤링
- 왕초보 파이썬 실행
- Today
- Total
콘솔워크
파이썬 자동업데이트 구현 참조 WinSparkle 본문
출처: https://zbaekhk.blogspot.com/2021/04/pyinstaller.html
[Pyinstaller] 실행 파일 관리자 권한 획득하기
zbaekhk.blogspot.com
WinSparkle 설치
WinSparkle에서는 아래 언어에 대한 바인딩을 지원합니다.
C#/.NET, Python, Go, Pascal
Python 바인딩인 pywinsparkle을 설치합니다.
pip install pywinsparkle
XML 파일로 버전 관리
이제 자동 업데이트 정보를 XML 파일에 저장하여 서버에 올려놓으면 프로그램 실행 시(구현에 따라 다름)에 최신 버전으로 자동 업데이트할 수 있습니다.
아래는 XML 파일 예제입니다. 여기서 중요한 부분은 릴리즈 노트(sparkle:releaseNotesLink), 설치 프로그램 위치(url), 버전(sparkle:version)입니다. 실행 프로그램 버전과 XML의 버전을 확인하여 최신 버전이 있으면 릴리즈 노트를 보여주고 사용자가 최신 프로그램을 설치할 수 있도록 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle">
<channel>
<title>WinSparkle Test Appcast</title>
<description>Most recent updates to WinSparkle Test</description>
<language>en</language>
<item>
<title>Version 1.5.5880</title>
<sparkle:releaseNotesLink> https://your_domain/your_path/release_notes.html </sparkle:releaseNotesLink>
<pubDate>Fri, 06 Feb 2016 22:49:00 +0100</pubDate>
<enclosure url="https://your_domain/your_path/setup.exe" parkle:dsaSignature="MEQCICh10SofkNHa5iJgVWDi2O8RBYyN+nxkFEL7u/tBuWboAiB6VOV/WQMRJE+kRoICZXAhq5b24WkgqcDs0z7gyBkGVw=="
sparkle:version="1.5.5880"
length="0"
type="application/octet-stream" />
</item>
</channel>
</rss>
위 변조 방지
sparkle:dsaSignature라는 항목이 있습니다.
이 부분은 설치 파일의 변조를 방지하는 데 사용됩니다.
WinSparkle 웹페이지에서 다운받아 압축 해제하면 bin 폴더에 generate_keys.bat, sign_update.bat이 있습니다.
배치 파일을 실행하기 위해서는 openssl.exe 파일이 필요합니다.
generate_keys.bat를 실행하면 dsa_pub.pem, dsa_priv.pem 파일이 생성됩니다.
![](https://blog.kakaocdn.net/dn/voHOd/btrEd4iwQLN/uDhl0k7kVlJckHfoER50k0/img.png)
![](https://blog.kakaocdn.net/dn/lEdj7/btrEcO1Qw3J/ksPbcKijnKQ3BB8Hw5XMqK/img.png)
그리고 코드에서 dsa_pub.pem 파일을 읽어 DSA 공개키를 설정합니다.
Signature 키 혹은 설치 파일이 변경되면 업데이트 오류가 발생하여 자동 업데이트가 되지 않습니다.
![](https://blog.kakaocdn.net/dn/dK2AKr/btrEgo8EObj/lhpVbKSWkF8RkgH4NVyTA0/img.png)
DSA 키를 적용하면 보안상 좋을 것 같습니다. 하지만 최신 프로그램을 배포할 때마다 Signature를 키를 생성하여 XML 파일에 적용해야 하는 불편함도 발생합니다. Jenkins를 이용한 자동화도 힘들 것 같습니다.
따라서 DSA 키를 적용하지 않기로 하였습니다.
자동 업데이트 기능을 통하여 사용자들은 좀더 편리하게 프로그램을 업데이트할 수 있습니다.
![](https://blog.kakaocdn.net/dn/m0lmF/btrEgp7AfPS/fcOu2mIlnH09W74r8Fqgik/img.png)
현재(2021.4.27) pywinsparkle은 python 3.7 버전까지 지원하고 있습니다.
'프로그래밍 > python' 카테고리의 다른 글
pyinstaller 자동업데이트 기능 AWS S3 (Exe) 자동업데이트 (1) | 2022.06.09 |
---|---|
pyinstaller 자동업데이트 github 연동 (0) | 2022.06.08 |
파이썬 pyinstaller google colud vision 사용 시 오류 발생 될 때 (0) | 2022.05.11 |
pyinstaller hook-sqlalchemy.py 오류 error (0) | 2022.05.06 |
파이썬 절대경로 상대경로 참조, 패키지 안에서 다른 패키지 호출, 모듈안에서 다른 모듈 호출 (0) | 2022.04.29 |