如何使用pythoncx_Freeze在卸载程序列表中显示图标?

How to display icon in uninstall list of programs using python cx_Freeze?

我可以为我的应用程序构建 MSI,它工作正常,但控制面板中的图标 --> 卸载程序--> 我的应用程序丢失。

如何使自定义 setup.py 文件显示图标?

我尝试将图标包含在安装文件中,如下所示,但它仅显示在 MyProgramMenu 中:

exe = Executable( 
    script="test.py", 
    initScript=None,
    base=base,  
    targetName="test.exe", 
    copyDependentFiles=True,
    compress=False,
    appendScriptToExe=False,
    appendScriptToLibrary=False,
    shortcutDir="MyProgramMenu",
    shortcutName=APP_NAME,
    icon="test.ico" 
)

我想在控制面板的程序列表中显示图标。

我认为没有简单干净的方法可以使用:

python setup.py bdist_msi

因为您基本上需要执行 Set the icon displayed in Add/Remove Programs 中描述的额外步骤,这需要以可能 non-generic 的方式修补 distutils\command\bdist_msi.py

要制作具有适当卸载图标的更可自定义的安装程序,您可以使用 script-based 工具,例如 NSIS (Nullsoft Scriptable Install System)。仅使用 cx_Freeze:

执行构建步骤
python setup.py build

和运行 NSIS 的installer-generating 脚本或您之后选择的任何其他工具。