使用Cx_freeze创建MSI时可用的bdist_msi选项

时间:2019-07-24 14:11:01

标签: python windows-installer cx-freeze

使用bdist_msi安装脚本创建MSI时,我找不到有关Cx_freeze命令可用选项的文档。

我已经看到与该主题相关的其他SO帖子中使用了以下选项-

bdist_msi_options = {'data': '','add_to_path':'','initial_target_dir':'','upgrade_code':'',}

setup(
    options = {
        "bdist_msi": bdist_msi_options,
    },
    executables = [
        Executable(
            "test.py",
            )
        ]
)

https://facebook.github.io/create-react-app/docs/proxying-api-requests-in-development提到了分散在各处的一些选项。 windows installer docs记录了两个选项(包括upgrade_code),其中提到它们与Cx_freeze docs一起可用。 我在哪里可以找到提到的标准选项列表?

1 个答案:

答案 0 :(得分:1)

您可以在cx_Freeze/windist.py中查看源代码,以查看所需选项的列表:

class bdist_msi(distutils.command.bdist_msi.bdist_msi):
    user_options = distutils.command.bdist_msi.bdist_msi.user_options + [
        ('add-to-path=', None, 'add target dir to PATH environment variable'),
        ('upgrade-code=', None, 'upgrade code to use'),
        ('initial-target-dir=', None, 'initial target directory'),
        ('target-name=', None, 'name of the file to create'),
        ('directories=', None, 'list of 3-tuples of directories to create'),
        ('environment-variables=', None, 'list of environment variables'),
        ('data=', None, 'dictionary of data indexed by table name'),
        ('product-code=', None, 'product code to use'),
        ('install-icon=', None, 'icon path to add/remove programs ')
    ]

如您所见:

  1. cx_Freeze添加了比文档中提到的更多的选项
  2. cx_Freeze的bdist_msi类是从标准模块distutils的谐音类派生的,该模块本身希望您在问题中提到的“标准选项集”,您可以在{{1 }}:
path_to_python\Lib\distutils\command\bdist_msi.py

您必须在源代码中查看这些选项的实现,以了解如何使用它们。您会注意到其中一些尚未实现或仅部分实现。

例如,class bdist_msi(Command): description = "create a Microsoft Installer (.msi) binary distribution" user_options = [('bdist-dir=', None, "temporary directory for creating the distribution"), ('plat-name=', 'p', "platform name to embed in generated filenames " "(default: %s)" % get_platform()), ('keep-temp', 'k', "keep the pseudo-installation tree around after " + "creating the distribution archive"), ('target-version=', None, "require a specific python version" + " on the target system"), ('no-target-compile', 'c', "do not compile .py to .pyc on the target system"), ('no-target-optimize', 'o', "do not compile .py to .pyo (optimized)" "on the target system"), ('dist-dir=', 'd', "directory to put final built distributions in"), ('skip-build', None, "skip rebuilding everything (for testing/debugging)"), ('install-script=', None, "basename of installation script to be run after" "installation or before deinstallation"), ('pre-install-script=', None, "Fully qualified filename of a script to be run before " "any files are installed. This script need not be in the " "distribution"), ] 选项可用于让安装程序在桌面或程序菜单中添加快捷方式,如Use cx-freeze to create an msi that adds a shortcut to the desktophere中所述。