Invalid command 'bdist_msi' when trying to create MSI installer with 'cx_Freeze' in Gitlab CI/CD Pipeline

25 views Asked by At

I'm using py setup.py bdist_msi to generate windows single executable file for my python application. this works fine on my computer, but it does not work when it is executed in GitLab pipeline. does anyone know how to solve this issue? i'm using Python 3.11.8 on my local machine and on the pipeline. here is the error: enter image description here

here is my setup.py file:

from cx_Freeze import setup, Executable
import sys



directory_table = [("ProgramMenuFolder", "TARGETDIR", "."),
                   ("MyProgramMenu", "ProgramMenuFolder", "MYPROG~1|My Program")]

msi_data = {"Directory": directory_table,
            "ProgId": [("Prog.Id", None, None, "This is a description", "IconId", None)],
            "Icon": [("IconId", "matplotlib.ico")]}
files = ['param_list.py', 'mca_ioconfig_parser.py', 'mca_package_manifest_parser.py', 'mca_rti_log_parser.py',
         'ui_interface.py', 'resources_rc.py']
bdist_msi_options = {"add_to_path": False,
                     "data": msi_data,
                     'initial_target_dir': r'[ProgramFilesFolder]%s' % 'yammiX',
                     "upgrade_code": "{96a85bac-52af-4019-9e94-3afcc9e1ad0c}"}

build_exe_options = {"excludes": [], "includes": []}
executables = Executable(script="toolName.py",
                         base="Win32GUI" if sys.platform == "win32" else None,
                         icon="matplotlib.ico",
                         shortcut_name="toolName",
                         shortcut_dir="DesktopFolder")
setup(name="toolName",
      version="0.1.5",
      author="toolName",
      description="",
      executables=[executables],
      options={"build_exe": build_exe_options,
               "bdist_msi": bdist_msi_options})

here is my yml file:

image: python:3.11.8
stages:
  - build
  - test
  - deploy

build-job:
  stage: build
  # Update stuff before building versions
  before_script:
    - apt-get update -q -y
    - apt install -y python3-pip
    - apt install -y python3-venv
    - python3 -m venv .venv
    - source .venv/bin/activate
    - python3 --version
    - python3 -m pip install -r requirements.txt
  script:
    - python3 setup.py -q bdist_msi

  artifacts:
    paths:
      - build/

unit-test-job:
  stage: test
  script:
    - echo "Running unit tests... This will take about few seconds."
    - echo "Code coverage is 100%"

deploy-job:
  stage: deploy
  script:
    - echo "Deploying application..."
    - echo "Application successfully deployed."
0

There are 0 answers