2013-03-31 10 views
7

Sto usando cx-freeze per creare un programma di installazione MSI per un'applicazione Python. Come posso installare un collegamento all'applicazione dal desktop?Usa cx-freeze per creare un msi che aggiunge un collegamento al desktop

+0

possibile duplicato del [Usa cx-freeze per creare un programma di installazione MSI che installa un programma di installazione del bambino] (http://stackoverflow.com/questions/15733405/use-cx-freeze-to-create-an- msi-installer-that-installs-a-child-installer) –

+2

Le domande sono diverse. In questa domanda, voglio creare un'icona sul desktop. L'altra domanda riguarda l'integrazione di diversi programmi di installazione MSI. – joshuanapoli

risposta

19

Per creare un collegamento per l'applicazione, dare il shortCutName e shortcutDir opzioni al file eseguibile. La scorciatoia Dir può nominare uno qualsiasi dei System Folder Properties (grazie Aaron). Ad esempio:

from cx_Freeze import * 

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

È inoltre possibile aggiungere elementi alla tabella dei collegamenti MSI. Ciò consente di creare più scorciatoie e impostare la directory di lavoro (l'impostazione "start in" del collegamento).

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

Sapresti come funziona con un amministratore di sistema che installa questa app? Non avranno l'opzione per le scorciatoie o lo faranno? – PascalVKooten

+1

Il collegamento verrà installato per tutti gli utenti se la proprietà ALLUSERS è impostata. – joshuanapoli

+0

Dove puoi impostare la proprietà ALLUSERS? Come si specifica un'icona? –

Problemi correlati