Use cx-freeze to create an msi that adds a shortcut to the desktop

前端 未结 1 1757
梦谈多话
梦谈多话 2020-12-01 13:01

I am using cx-freeze to create an MSI installer for a Python application. How can I install a link to the application from the desktop?

1条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-01 13:41

    To create a shortcut to the application, give the shortCutName and shortcutDir options to the Executable. The shortcutDir can name any of the System Folder Properties (thanks Aaron). For example:

    from cx_Freeze import *
    
    setup(
        executables = [
            Executable(
                "MyApp.py",
                shortcutName="DTI Playlist",
                shortcutDir="DesktopFolder",
                )
            ]
        )
    

    You can also add items to the MSI Shortcut table. This lets you create multiple shortcuts and set the working directory (the "start in" setting of the shortcut).

    from cx_Freeze import *
    
    # http://msdn.microsoft.com/en-us/library/windows/desktop/aa371847(v=vs.85).aspx
    shortcut_table = [
        ("DesktopShortcut",        # Shortcut
         "DesktopFolder",          # Directory_
         "DTI Playlist",           # Name
         "TARGETDIR",              # Component_
         "[TARGETDIR]playlist.exe",# Target
         None,                     # Arguments
         None,                     # Description
         None,                     # Hotkey
         None,                     # Icon
         None,                     # IconIndex
         None,                     # ShowCmd
         'TARGETDIR'               # WkDir
         )
        ]
    
    # Now create the table dictionary
    msi_data = {"Shortcut": shortcut_table}
    
    # Change some default MSI options and specify the use of the above defined tables
    bdist_msi_options = {'data': msi_data}
    
    setup(
        options = {
            "bdist_msi": bdist_msi_options,
        },
        executables = [
            Executable(
                "MyApp.py",
                )
            ]
        )
    

    0 讨论(0)
提交回复
热议问题