NSIS提供了很好的軟件卸載功能編寫的方法,但是針對win8.1和win10操作系統,由於開始目錄的權限限制,我們有時候並不能完美的完成所需要的功能----卸載程序的快捷方式不能顯示。話不多說,下面提供解決方法:
運用all用戶權限和current用戶權限各寫一遍即可解決問題。下面是我打安裝包卸載的快捷方式的代碼:
SetShellVarContext current CreateDirectory "$SMPROGRAMS\立思辰合眾" CreateDirectory "$SMPROGRAMS\立思辰合眾\智課堂" CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\智課堂.lnk" "$INSTDIR\U-Teach.exe" ;高級配置 CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\高級配置.lnk" "$INSTDIR\AdvancedConfig.exe" CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\配置.lnk" "$INSTDIR\Config.exe" CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\卸載智課堂.lnk" "$INSTDIR\Uninst.exe" SetShellVarContext all CreateShortCut "$DESKTOP\智課堂.lnk" "$INSTDIR\U-Teach.exe" CreateDirectory "$SMPROGRAMS\立思辰合眾" CreateDirectory "$SMPROGRAMS\立思辰合眾\智課堂" CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\智課堂.lnk" "$INSTDIR\U-Teach.exe" ;高級配置 CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\高級配置.lnk" "$INSTDIR\AdvancedConfig.exe" CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\配置.lnk" "$INSTDIR\Config.exe" CreateShortCut "$SMPROGRAMS\立思辰合眾\智課堂\卸載智課堂.lnk" "$INSTDIR\Uninst.exe"
你會神奇的發現問題解決了,有個關鍵的問題需要注意一下,就是卸載的時候最好調用cmd命令完成,以保證完全是刪除快捷方式!代碼如下:
;快捷方式刪除操作 SetShellVarContext current Delete "$DESKTOP\智課堂.lnk" nsExec::Exec 'cmd /c rd /q /s "$SMPROGRAMS\立思辰合眾\智課堂"' SetShellVarContext all Delete "$DESKTOP\智課堂.lnk" nsExec::Exec 'cmd /c rd /q /s "$SMPROGRAMS\立思辰合眾\智課堂"'