1. 程式人生 > >NSIS 刪除開始選單中快捷方式的方法(學習八)

NSIS 刪除開始選單中快捷方式的方法(學習八)

我們在安裝程式時通常會使用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