Le code de mise à niveau MSI est un code unique pour gérer votre application. Si cela n'est pas spécifié, vous devrez réinstaller manuellement le package à chaque mise à niveau.
Exécutez la commande suivante dans l'interpréteur Python.
import uuid str(uuid.uuid3(uuid.NAMESPACE_DNS, 'appname.orgname.org')).upper()
Cela générera un ID unique tel que «3F2504E0-4F89-11D3-9A0C-0305E82C3301», alors notez-le.
setup.py
#Informations sur l'application
name = 'memopad'
version = '1.0.0'
author = 'example'
author_email = '[email protected]'
url = 'http://example.xxx'
description = 'Text Editor'
#Spécifiez le GUID ici (en gros, il ne doit pas être changé)
upgrade_code = '{3F2504E0-4F89-11D3-9A0C-0305E82C3301}'
#Pour Windows 64 bits, changez le dossier d'installation
# ProgramFiles(64)Le dossier semble être remplacé par le répertoire réel du côté msi
programfiles_dir = 'ProgramFiles64Folder' if distutils.util.get_platform() == 'win-amd64' else 'ProgramFilesFolder'
#Options à utiliser avec la commande build sous Windows
build_exe_options = {
'packages': ['os'],
'excludes': ['tkinter'], #Exclure tkinter car il n'est pas utilisé
'includes': ['PySide.QtCore', 'PySide.QtGui', 'gui', 'commands'],
'include_files': ['img/', 'lang/', 'license/'],
'include_msvcr': True, #Puisqu'il utilise PySide, il ne peut être démarré que si le runtime C de Microsoft est inclus.
'compressed' : True
}
# bdist_Options à utiliser avec la commande 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
}
#informations exe
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]
)
Si vous le construisez tel quel, il ne passera pas le contrôle de validation d'Orca (l'éditeur MSI de Microsoft), donc modifiez'cx_Freeze / windist.py'in site-packages. Ajoutez le taple suivant à la liste des accessoires à la ligne 230.
windist.py
('SecureCustomProperties', 'REMOVEOLDVERSION;REMOVENEWVERSION')
python setup.py bdist_msi
Courez.
exe et msi sont créés.
Veuillez noter que si vous modifiez le code de mise à niveau, il ne sera pas considéré comme le même package et vous ne pourrez pas gérer correctement les packages.
Sachez également que vous pouvez être averti lors de l'installation sans signature numérique.
Ouvrez le MSI généré par Orca et consultez la table des propriétés. Si le GUID spécifié précédemment est affiché dans la propriété UpgradeCode, il ne doit y avoir aucun problème.
distutils setup script — cx_Freeze 5.0 documentation Cours développeur-programme d'installation Windows
Recommended Posts