【问题标题】:Available bdist_msi options when creating MSI with cx_Freeze使用 cx_Freeze 创建 MSI 时可用的 bdist_msi 选项
【发布时间】:2019-07-24 14:11:01
【问题描述】:

在使用 cx_Freeze 设置脚本创建 MSI 时,我无法找到有关 bdist_msi 命令可用选项的文档。

我在与该主题相关的其他 SO 帖子中看到了以下选项:

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

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

windows installer docs 提到了一些分散在各处的选项。 cx_Freeze docs 记录了两个选项(包括upgrade_code),提到它们与standard set of options 一起可用。 我在哪里可以找到上面提到的标准选项列表?

【问题讨论】:

    标签: python windows-installer cx-freeze


    【解决方案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 的同音词类,它本身需要您在问题中提到的“标准选项集”,您可以在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"),
                       ]
    

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

    data 选项可用于让安装程序在桌面或程序菜单中添加快捷方式,如Use cx-freeze to create an msi that adds a shortcut to the desktophere 中所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多