NSIS 刪除開始選單中快捷方式的方法(學習八)
阿新 • • 發佈:2019-01-11
我們在安裝程式時通常會使用createShortCut命令來建立一個快捷方式,如下,是在開始–>啟動項 裡建立run.bat的快捷方式。
CreateShortCut "$SMPROGRAMS\啟動\run.lnk" "$INSTDIR\bin\run.bat"
當我們在執行解除安裝操作時是這樣刪除的,如下
Delete "$SMPROGRAMS\啟動\run.lnk"
但是,無論怎麼樣都刪除不掉。
下面提供以下解決方案和為什麼刪不掉的原因:
原因:因為NSIS中使用CreateShortCut建立快捷方式時會在每一個人使用者下面都建立快捷方式,然後Delete刪的時候卻只是在當前使用者下,因此怎麼刪也刪不掉。
解決方案:
1.在當前使用者下建立快捷方式。只需新增RequestExecutionLevel user即可。
RequestExecutionLevel user
Section
CreateDirectory "$SMPROGRAMS\Vista Test"
CreateShortcut "$SMPROGRAMS\Vista Test\hello.lnk" $WINDIR\notepad.exe
WriteUninstaller $EXEDIR\uninst.exe
SectionEnd
Section uninstall
Delete "$SMPROGRAMS\Vista Test\hello.lnk"
RMDir "$SMPROGRAMS\Vista Test"
SectionEnd
2.刪除所有使用者下的快捷方式。首先新增RequestExecutionLevel admin,然後在建立快捷方式和刪除快捷方式的地方加上SetShellVarContextall即可。
RequestExecutionLevel admin #NOTE: You still need to check user rights with UserInfo!
Section
SetShellVarContext all
CreateDirectory "$SMPROGRAMS\Vista Test"
CreateShortcut "$SMPROGRAMS\Vista Test\hello.lnk" $WINDIR\notepad.exe
WriteUninstaller $EXEDIR\uninst.exe
SectionEnd
Section uninstall
SetShellVarContext all
Delete "$SMPROGRAMS\Vista Test\hello.lnk"
RMDir "$SMPROGRAMS\Vista Test"
SectionEnd