2010-01-20 79 views
2

有什么办法可以告诉NSIS不要覆盖我的开始菜单快捷方式。我不希望它覆盖的原因是,用户的命令行选项在升级到新版本时不会被清除。我试过这个无济于事:NSIS覆盖快捷方式

Section -AdditionalIcons 
    SetOverwrite off 
    CreateDirectory "${START_MENU_DIR}" 
    CreateShortCut "${START_MENU_LNK}" "$INSTDIR\${PRODUCT_NAME}.exe" 
SectionEnd 

回答

3

为什么不能用IfFileExists检查?

如果您想全力以赴,可以更新路径和工作目录,但保留参数和图标,但要做到这一点,您必须自行调用IShellLink COM接口(使用系统插件或自定义插件/应用)

+0

是谢谢你。我昨天晚上才意识到这一点。它效果很好。我把一些示例代码作为另一个答案。 – 2010-01-21 18:25:03

1

这里是工作的例子:

Section -AdditionalIcons 

    CreateDirectory "${START_MENU_DIR}" 
    IfFileExists "${START_MENU_LNK}" SkipShortcut 
    CreateShortCut "${START_MENU_LNK}" "$INSTDIR\${PRODUCT_NAME}.exe" 

SkipShortcut: 

SectionEnd