Skip to main content

Create robust and reliable Windows installers with ease. This library leverages Wix Toolset v3 to generate XML definitions, allowing developers to focus on installation logic instead of XML syntax.

Project description

wix3msi

이 파이썬 패키지는 Wix Toolset v3의 MSI 파일 생성 기능을 돕는 윈도우 전용 라이브러리 패키지 입니다.

MSI가 무엇인가?

MSI는 Microsoft Installer의 약자로서 Windows OS에 개발의 결과물을 설치 형태로 배포하고 싶을 때 사용 할 수 있는 설치 체계이자 파일 포맷의 이름입니다.
Windows SDK를 받으면 그 안에 Microsoft Windows Installer SDK 구성요소가 존재하며, 이를 통해 설치 파일을 만드는 게 스탠다드 한 접근법입니다.
다만, 해당 SDK는 파이썬을 공식적으로 지원해주지 않기 때문에 Basic, C++, C# 중 하나의 언어를 사용해서 개발해야 합니다.

파이썬 자체적으로는 MSI를 만들 수 없을까?

원래 파이썬에서는 별다른 설정없이도 MSI를 만들 수 있도록 msilib 패키지를 배포판에 내장하고 있습니다.
그러나 msilib는 현재 deprecated 된 상태이며, 파이썬 3.13 이후부터는 아예 배포에서 제거되었습니다.
참고로 msilib를 사용해보니 msi 파일 생성을 위한 스펙 구현이 생각보다 부실합니다. 실무 사용을 고려하자면 제약이 많습니다.

** MSI를 만들어주는 별도의 파이썬 패키지는 없을까?**

확인을 해봤는데 일단 알아본 바에 의하면 cx_Freeze, pywin32 패키지를 설치해도 MSI 파일을 생성 할 수 있습니다. 다만, 두 패키지 모두 실제 MSI에 대한 활용면에서 아쉬움을 느꼈습니다. cx_Freeze는 실행가능한 바이너리 파일을 패키징하는 라이브러리로 MSI는 패키징한 라이브러리를 설치버전으로 제공 할 수 있게 한다는 정도의 기능이라 MSI 자체를 활용하는데 있어서 필요 기능을 제공하지 않습니다.
pywin32는 WindowsAPI의 사용에 목적을 두고 있는 라이브러리로 MSI 자체를 지원한다기보다는 COM 객체 기능을 통해 우회하여 MSI 제작 기능에 접근해서 작업하는지라 배보다 배꼽이 더 큰 경우입니다.
따라서 사용해볼만한 무료 솔루션을 알아보던 중 현재 Wix Toolset v3 이 오픈소스로서 존재함을 알게 되었습니다.

공식홈페이지: https://wixtoolset.org
문서: https://wixtoolset.org/docs/v3/
다운로드: https://github.com/wixtoolset/wix3/releases

Wix Toolset v3만 사용하면 되지않나? 왜 굳이 wix3msi라는 파이썬 라이브러리를 거쳐서 사용해야 하지?

기본적으로 MSI 생성을 하려면 Wix는 자체적인 인스톨러 정의 데이터인 WXS 파일을 만들고 다룰 수 있어야 합니다.
WXS는 XML 포맷의 문서 파일이며 MSI의 기능적 데이터베이스 구축을 대체하는 용도이지만 그만큼 복잡도가 높아 생각보다 학습 곡선이 있는 편입니다.
즉, 사용자 입장에서는 Wix3를 쓰더라도 MSI 스펙 + WXS 스펙을 이해하지 못하면 인스톨러 개발이 어렵습니다.
또한 여러가지 설정 등에서 각 셋팅이 변경 될 때마다 WXS를 갱신 해주어야 하는 번거로운 추가 관리비용이 있습니다.
이 때문에 Wix Toolset v3에서는 이와 관련된 여러 자동화 도구들을 제공하고 있지만 해당 부분은 논리적인 부분이나 상황적인 대처가 필요한 부분이 많아 수작업 비용이 높습니다. 저는 이러한 작업을 매번 반복하는 것으로 제 시간을 낭비하고 싶지 않았기 때문에 제가 쓸 생각으로 도구를 만들려는 생각을 가지게 되었습니다.

사실 주 목적은 제가 사용하는 것이고, 어차피 만드는 김에 이를 모두가 사용할 수 있도록 배포하려고 하는 것입니다.
당연한 이야기지만, MSI 생성에 대한 핵심 기능을 자체적으로 개발 할 생각은 전혀 없기 때문에 현재 프로젝트는 이미 존재하는 솔루션인 Wix Toolset v3의 사용을 전제로 하려고 합니다.

라이선스

기본적으로 Wix Toolset v3은 무료 오픈소스 도구이며, 저 또한 Wix Toolset v3 의 소스코드를 수정하거나 제 패키지에 포함시켜 재배포 하지 않습니다.
wix3msi는 어디까지나 Wix Toolset v3 사용자가 해당 솔루션의 설정파일인 WXS를 편하게 만들 수 있도록 돕는 용도입니다. 모두에게 라이브러리를 무료로 공유하려고 하고요.
따라서 라이선스 문제는 일어날 수 없습니다.

목표 및 개발 방향

가장 중요한 목적은 파이썬 코딩으로 Wix Toolset v3 + 수작업 보다 편하게 인스톨러를 자동 생성하는 것입니다. 그리고 장기적으로는 WIX3가 구현하고 있는 MSI 생성 스펙을 모두 쉽게 사용할 수 있도록 파이썬으로 구현 할 계획입니다.
장기적으로 유지보수 할 라이브러리로 생각하고 있으며 어느정도 개발이 되면 문서화도 할 예정입니다.
MSI와 WIX3를 몰라도 파이썬 개발자가 쉽게 자신의 앱을 윈도우 인스톨러로 배포 할 수 있도록 하는 것이 이 라이브러리의 궁극적 목표입니다.

설치방법

Wix Toolset v3 설치

  1. https://github.com/wixtoolset/wix3/releases 에 있는 압축파일 혹은 실행파일 (설치파일)을 받아주세요.
  2. 압축해제 혹은 설치를 통해 나온 툴셋의 경로를 시스템 환경변수의 PATH에 등록해주세요.

wix3msi 설치

  1. pypi에 올라간 현재 wix3msi 패키지를 설치 해주세요.
python -m pip install wix3msi

사용법

  1. 파이썬 코드에서는 다음과 같이 사용합니다. (작성 예정)
from wix3msi import WXSDocument
  1. 터미널 명령어는 다음과 같이 사용합니다. (개발 예정)
D:\Github\Project\> wix3msi ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wix3msi-0.0.39.tar.gz (19.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wix3msi-0.0.39-py3-none-any.whl (38.1 kB view details)

Uploaded Python 3

File details

Details for the file wix3msi-0.0.39.tar.gz.

File metadata

  • Download URL: wix3msi-0.0.39.tar.gz
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.11

File hashes

Hashes for wix3msi-0.0.39.tar.gz
Algorithm Hash digest
SHA256 95785fdd9b9481c59e5523de028a48f1190dc38727f545c9762adc9bfe68f81c
MD5 b4fa9ac3b7e8d06f6c0e863930218bf8
BLAKE2b-256 77b54a7d27116de0d124e47f96b4b658e9cdbb7fc868dbd39e232ad1accf5fae

See more details on using hashes here.

File details

Details for the file wix3msi-0.0.39-py3-none-any.whl.

File metadata

  • Download URL: wix3msi-0.0.39-py3-none-any.whl
  • Upload date:
  • Size: 38.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.11

File hashes

Hashes for wix3msi-0.0.39-py3-none-any.whl
Algorithm Hash digest
SHA256 1cf91ea7de86873a08dd562899cfc7f12bb663e0cbf0bc532aae201cc9d08f26
MD5 65a073804dd39dda199d08617935da47
BLAKE2b-256 abc8748317f07090f9652af30bd79bd0ac1928ed154b83f1371068202cd786fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page