【问题标题】:How to extend distutils with a simple pre uninstall script?如何使用简单的预卸载脚本扩展 distutils?
【发布时间】:2023-11-25 03:36:01
【问题描述】:

我找到了Question#1321270 用于安装后。我目前的主要目标是 bdist_wininst,但我没有找到与卸载相关的任何内容...

澄清:
我想在安装后注册一个com服务器,卸载前注销它。

扩展答案:
然而,就事情的完整性而言,ars 的回答似乎是正确的(我认为文档为这个主题留下了一些改进空间......):
我没有像提到Question#1321270 扩展distutils.command.install 所建议的那样,而是编写了一个名为scripts/install.py 的新python sript 并在setup.py 中设置以下内容:

setup(
    ...
    scripts=['scripts\install.py'],
    options = {
        ...
        "bdist_wininst" : {
            "install_script" : "install.py", 
            ...
        },
    }
)

install.py 肯定会在安装时被调用。看来,尽管它(尽管文档说)在卸载时没有被调用...

【问题讨论】:

    标签: python setuptools distutils


    【解决方案1】:

    相同的安装后脚本将在卸载时使用不同的参数运行。请参阅docs 了解更多信息:

    此脚本将在复制所有文件后在目标系统上安装时运行,并将 argv1 设置为 -install,并在卸载时再次运行,然后将 argv1 设置为-删除。

    【讨论】:

    • 看起来正确,但没有发生。 bdist_wininst 的 unistallation 部分是否可能不正确??
    • 我认为脚本必须在根目录中(您的设置表明它在“脚本”文件夹下)。
    • 不,无论脚本位于何处(根目录、子目录),它仅用于安装后,从不用于卸载前。这发生在 Win7、amd64 上。今晚我会在 WinXP、x86 上试试。
    • 我认为这是一个正确的答案,因为这是文档所说的应该工作......
    • 有一个已知的 Python 错误导致此错误:请参阅 bugs.python.org/issue13276