Uninstall Renamed-Moved-Copied Shortcuts: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
No edit summary |
(→Description: typo) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
{{PageAuthor|Red Wine}} | {{PageAuthor|Red Wine}} | ||
== Description == | == Description == | ||
The research on the subject uninstall | The research on the subject uninstall shortcuts that have been possibly renamed and/or moved/copied started [http://forums.winamp.com/showthread.php?s=&threadid=261212 on this forum thread].<BR> | ||
Requires [[RecFind:_Recursive_FindFirst%2C_FindNext%2C_FindClose|RecFind.nsh]] by [[User:Afrow_UK|Afrow UK]] and [[ShellLink_plug-in|ShellLink plug-in]].<BR> | Requires [[RecFind:_Recursive_FindFirst%2C_FindNext%2C_FindClose|RecFind.nsh]] by [[User:Afrow_UK|Afrow UK]] and [[ShellLink_plug-in|ShellLink plug-in]].<BR> | ||
== The Code == | == The Code == | ||
<highlight-nsis> | <highlight-nsis> | ||
Line 133: | Line 134: | ||
#The origin of this script must not be misrepresented; you must not claim that you wrote the original code. If you use this script in a product, an acknowledgment in the product documentation would be appreciated but is not required. | #The origin of this script must not be misrepresented; you must not claim that you wrote the original code. If you use this script in a product, an acknowledgment in the product documentation would be appreciated but is not required. | ||
#Altered versions must be plainly marked as such, and must not be misrepresented as being the original | #Altered versions must be plainly marked as such, and must not be misrepresented as being the original script. | ||
#This notice may not be removed or altered from any distribution. | #This notice may not be removed or altered from any distribution. | ||
[[Category:Code Examples]] | [[Category:Code Examples]] | ||
[[Category:Real World Installers]] | [[Category:Real World Installers]] |
Latest revision as of 22:50, 5 May 2009
Author: Red Wine (talk, contrib) |
Description
The research on the subject uninstall shortcuts that have been possibly renamed and/or moved/copied started on this forum thread.
Requires RecFind.nsh by Afrow UK and ShellLink plug-in.
The Code
Name "My App" OutFile "MyApp.exe" InstallDir '$PROGRAMFILES\My App' InstallDirRegKey HKCU "Software\My App" "" ShowInstDetails show ShowUninstDetails show !include 'RecFind.nsh' !define ICON_SEARCH '$SMPROGRAMS$R0\$R1' !define DESK_SEARCH '$DESKTOP$R0\$R1' !define MyApp '$INSTDIR\makensisw.exe' !define Uninst '$INSTDIR\uninstall.exe' var SM_FOLDER page directory page instfiles Section Install SetOutPath '$INSTDIR' File '${NSISDIR}\makensisw.exe' createshortcut '$DESKTOP\makensisw.lnk' '${MyApp}' createdirectory '$SMPROGRAMS\My App' createshortcut '$SMPROGRAMS\My App\makensisw.lnk' '${myApp}' writeuninstaller '${Uninst}' createshortcut '$SMPROGRAMS\My App\uninstall.lnk' '${Uninst}' WriteRegStr HKCU "Software\My App" "" "$INSTDIR" sectionend # In order to examine the example uncomment the following section. # By doing this, shortcuts will be renamed and copied to All Users as well. # Of course you may manoually rename move copy the shortcuts the way you like. /* Section RenameCreatedShortCuts Rename '$SMPROGRAMS\My App' '$SMPROGRAMS\My Renamed App' Rename '$SMPROGRAMS\My Renamed App\makensisw.lnk' \ '$SMPROGRAMS\My Renamed App\Renamed makensisw.lnk' Rename '$SMPROGRAMS\My Renamed App\uninstall.lnk' \ '$SMPROGRAMS\My Renamed App\Renamed uninstall.lnk' CopyFiles '$DESKTOP\makensisw.lnk' '$DESKTOP\copied makensisw.lnk' StrCpy '$R9' '$SMPROGRAMS' StrCpy '$R8' '$DESKTOP' SetShellVarContext all CreateDirectory '$SMPROGRAMS\My ALL USERS App' CopyFiles '$R9\My Renamed App\*' '$SMPROGRAMS\My ALL USERS App' CopyFIles '$R8\makensisw.lnk' '$DESKTOP\ALL USERS makensisw.lnk' CopyFIles '$R8\copied makensisw.lnk' '$DESKTOP\copied ALL USERS makensisw.lnk' SectionEnd */ Section Uninstall Delete ${MyApp} Delete ${Uninst} RmDir '$INSTDIR' Call un.StartMenuClean Call un.DesktopClean DeleteRegKey HKCU "Software\My App" SectionEnd Function un.StartMenuClean StrCpy '$R9' '0' start: ${RecFindOpen} '$SMPROGRAMS' '$R0' '$R1' ${RecFindFirst} ; DetailPrint '${ICON_SEARCH}' ShellLink::GetShortCutTarget '${ICON_SEARCH}' Pop $0 StrCmp '$0' '${MyApp}' 0 next MessageBox mb_ok '${ICON_SEARCH}' StrCpy '$SM_FOLDER' '$R0' Delete '${ICON_SEARCH}' next: StrCmp '$0' '${Uninst}' 0 end MessageBox mb_ok '${ICON_SEARCH}' Delete '${ICON_SEARCH}' end: ${RecFindNext} ${RecFindClose} StrCmp '$SM_FOLDER' '' +3 MessageBox mb_ok '$SMPROGRAMS$SM_FOLDER' RmDir '$SMPROGRAMS$SM_FOLDER' StrCmp '$R9' '1' func_end SetShellVarContext all StrCpy '$SM_FOLDER' '' StrCpy '$R9' '1' goto start func_end: FunctionEnd Function un.DesktopClean StrCpy '$R9' '0' start: ${RecFindOpen} '$DESKTOP' '$R0' '$R1' ${RecFindFirst} ; DetailPrint '${DESK_SEARCH}' ShellLink::GetShortCutTarget '${DESK_SEARCH}' Pop $0 StrCmp '$0' '${MyApp}' 0 next messagebox mb_ok '${DESK_SEARCH}' Delete '${DESK_SEARCH}' next: ${RecFindNext} ${RecFindClose} StrCmp '$R9' '1' func_end SetShellVarContext current StrCpy '$R9' '1' goto start func_end: FunctionEnd
License
This script is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages arising from the use of this code.
Permission is granted to anyone to use this script for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
- The origin of this script must not be misrepresented; you must not claim that you wrote the original code. If you use this script in a product, an acknowledgment in the product documentation would be appreciated but is not required.
- Altered versions must be plainly marked as such, and must not be misrepresented as being the original script.
- This notice may not be removed or altered from any distribution.