[PYTHON] Erstellen Sie mit cx_Freeze eine aktualisierbare MSI-Datei

Der MSI-Upgrade-Code ist ein eindeutiger Code zum Verwalten Ihrer Anwendung. Wenn dies nicht angegeben ist, müssen Sie das Paket bei jedem Upgrade manuell neu installieren.

Generieren Sie eine UUID (GUID) für den Upgrade-Code

Führen Sie den folgenden Befehl im Python-Interpreter aus. import uuid str(uuid.uuid3(uuid.NAMESPACE_DNS, 'appname.orgname.org')).upper()

Dadurch wird eine eindeutige ID wie "3F2504E0-4F89-11D3-9A0C-0305E82C3301" generiert. Notieren Sie sich diese.

Bereiten Sie setup.py vor

setup.py


#Bewerbungs informationen
name = 'memopad'
version = '1.0.0'
author = 'example'
author_email = '[email protected]'
url = 'http://example.xxx'
description = 'Text Editor'

#Geben Sie hier die GUID an (grundsätzlich sollte sie nicht geändert werden).
upgrade_code = '{3F2504E0-4F89-11D3-9A0C-0305E82C3301}'
#Wechseln Sie unter 64-Bit-Windows den Installationsordner
# ProgramFiles(64)Der Ordner scheint durch das eigentliche Verzeichnis auf der MSI-Seite ersetzt zu sein
programfiles_dir = 'ProgramFiles64Folder' if distutils.util.get_platform() == 'win-amd64' else 'ProgramFilesFolder'

#Optionen zur Verwendung mit dem Befehl build unter Windows
build_exe_options = {
    'packages': ['os'],
    'excludes': ['tkinter'], #Schließen Sie tkinter aus, da es nicht verwendet wird
    'includes': ['PySide.QtCore', 'PySide.QtGui', 'gui', 'commands'],
    'include_files': ['img/', 'lang/', 'license/'],
    'include_msvcr': True, #Da PySide verwendet wird, kann es nur gestartet werden, wenn die C-Laufzeit von Microsoft enthalten ist.
    'compressed'   : True
}

# bdist_Optionen zur Verwendung mit dem Befehl msi
bdist_msi_options = {
    'upgrade_code': upgrade_code,
    'add_to_path': False,
    'initial_target_dir': '[%s]\%s\%s' % (programfiles_dir, author, name)
}

options = {
    'build_exe': build_exe_options,
    'bdist_msi': bdist_msi_options
}

#exe Informationen
base = 'Win32GUI' if sys.platform == 'win32' else None
icon = 'img/app_icon.ico'

mainexe = Executable(
    'main.py',
    targetName = 'Memopad.exe',
    base = base,
    icon = icon,
    copyDependentFiles = True
)

setup(
    name=name,
    version=version,
    author=author,
    author_email=author_email,
    url=url,
    description=description,
    options=options,
    executables=[mainexe]
)

Windist.py in cx_Freeze behoben

Wenn Sie es so erstellen, wie es ist, besteht es die Validierungsprüfung von Orca (Microsofts MSI-Editor) nicht. Ändern Sie daher "cx_Freeze / windist.py" in Site-Paketen. Fügen Sie der Requisitenliste in Zeile 230 den folgenden Taple hinzu.

windist.py


('SecureCustomProperties', 'REMOVEOLDVERSION;REMOVENEWVERSION')

Bauen

python setup.py bdist_msi Lauf einfach. exe und msi werden erstellt. Bitte beachten Sie, dass wenn Sie den Upgrade-Code ändern, dieser nicht als dasselbe Paket betrachtet wird und Sie die Pakete nicht ordnungsgemäß verwalten können. Beachten Sie auch, dass Sie während der Installation möglicherweise ohne digitale Signatur gewarnt werden.

Bestätigung von MSI

Öffnen Sie die von Orca generierte MSI und sehen Sie sich die Eigenschaftentabelle an. Wenn die zuvor angegebene GUID in der UpgradeCode-Eigenschaft angezeigt wird, sollte es kein Problem geben.

Referenz

distutils setup script — cx_Freeze 5.0 documentation Entwicklerkurs-Windows-Installationsprogramm

Recommended Posts

Erstellen Sie mit cx_Freeze eine aktualisierbare MSI-Datei
Erstellen Sie schnell eine Excel-Datei mit Python #python
Erstellen Sie eine Umgebung mit virtualenv
Erstellen Sie eine API mit Django
[Python] Erstellen Sie mit cx_Freeze eine Verteilungsdatei für das Tkinter-Programm
Erstellen Sie mit tkinter eine Anwendung mit cx_freeze zu einer ausführbaren Datei
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
Erstellen Sie eine Altersgruppe mit Pandas
Erstellen Sie mit Django einen Datei-Uploader
Erstellen Sie eine Anwendung, indem Sie mit Pygame klassifizieren
Erstellen Sie mit PySimpleGUI einen Bildverarbeitungs-Viewer
VM mit YAML-Datei (KVM) erstellen
Erstellen Sie eine Excel-Datei mit Python + Ähnlichkeitsmatrix
[Python] Erstellen Sie schnell eine API mit Flask
Generieren Sie eine add-in-fähige Excel-Instanz mit xlwings
Erstellen Sie eine englische Wort-App mit Python
Erstellen Sie eine App, die Schüler mit Python errät
Erstellen Sie ein akademisches Programm mit Kombinationsoptimierung
Erstellen Sie eine mit tkinter erstellte ausführbare GUI-Datei
Erstellen Sie eine Datei, die in der Skriptsprache ausgeführt werden kann
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Machen Sie einen Zylinder mit open3d + STL-Dateiausgabe
Erstellen Sie schnell einen API-Server mit Python + Falcon
Erstellen Sie mit PyInstaller eine exe-Datei, die in einer Windows-Umgebung ohne Python funktioniert
Erstellen Sie mit Python + Flask einen animierten lokalen GIF-Server
Erstellen Sie eine Bilddatei mit PIL (Python Imaging Library).
Machen Sie einen idolartigen Tweet mit Keras LSTM (Satzgenerierung)
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
Erstellen Sie eine App, die Schüler mit der Python-GUI-Version errät
Erstellen Sie eine Zufallszahl mit einer beliebigen Wahrscheinlichkeitsdichte
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Geben Sie nach dem Lesen einer Excel-Datei mit pandas read_excel ein
Erstellen Sie eine 2D-CAD-Datei ".dxf" mit Python [ezdxf]
[WIP] 1-Datei-Chainer erstellen
Dateivorgang mit open - "../"
Erstelle Spiele mit Pygame
Erstellen Sie einen Filter mit scipy
[Python] Erstellen Sie mit tkinter einen Bildschirm zur Datei- und Ordnerpfadspezifikation
Bis Sie die SVG-Datei mit AutoCAD zu PNG bearbeiten.
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Minimales Makefile und buildout.cfg, um eine Umgebung mit buildout zu erstellen
Erstellen Sie mit dem Blender 2.80-Skript eine beispielhafte spielähnliche Phase
Erstellen wir eine App, die OIDC mit Azure AD authentifiziert
Erstellen Sie eine Authentifizierungsfunktion mit django-allauth und CustomUser in Django
Lesen einer Excel-Datei (.xlsx) mit Pandas [Python]
So erstellen Sie eine ISO-Datei (CD-Image) unter Linux
Ich habe versucht, einen Artikel mit SQL Alchemy auf Wiki.js zu erstellen