2013-02-25 8 views
7

Ho questo problema: nelle sezioni di installazione che ho questo;uninstaller nsis non rimuove collegamenti

Section "Start Menu Shortcuts" 
    SetShellVarContext current 
    CreateDirectory "$SMPROGRAMS\myProgram" 
    CreateShortCut "$SMPROGRAMS\myProgram\myProgram.lnk" "$INSTDIR\myProgram.exe" 
    CreateShortCut "$SMPROGRAMS\myProgram\Uninstall myProgram.lnk" "$INSTDIR\myProgram-Uninstall.exe" 
SectionEnd 

Section "Desktop Shortcut" 
    SetShellVarContext current 
    CreateShortCut "$DESKTOP\myProgram.lnk" "$INSTDIR\myProgram.exe" 
SectionEnd 

e funziona bene, ho l'icona sul desktop e l'icona più l'icona di disinstallazione dei programmi di avvio \ ... albero

la sezione di disinstallazione è come questo:

SetShellVarContext current 
Delete "$DESKTOP\myProgram.lnk" 
Delete "$SMPROGRAMS\myProgram\myProgram.lnk" 
Delete "$SMPROGRAMS\myProgram\Uninstall myProgram.lnk" 
RMDir "$SMPROGRAMS\myProgram" 

e il collegamento desktop è stato eliminato, ma l'altra cartella con i collegamenti non .. qualche idea?

la cartella in cui è memorizzato è questo (io sono su Win 7 64 bit):

C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 

risposta

7

Avete RequestExecutionLevel nello script? Senza Windows potrebbe fare un po 'di compatibility hacks con le scorciatoie.

Se questo non aiuta, provare Process Monitor, potrebbe essere in grado di far luce sulla questione ...

+0

grazie! ho aggiunto l'admin RequestExecutionLevel e ora funziona ... anche che se il mio utente corrente è amministratore .. grazie – ghiboz

+2

Non so perché "RequestExecutionLevel admin" non funziona per me, ma "SetShellVarContext all" fa ... – Sorayuki

+0

@Sorayuki Si dovrebbe impedire lo shim di compatibilità dal kicking in ma non rimuoverà i collegamenti di compatibilità che potrebbero già esistere ... – Anders