2017-01-18 3 views
0

사용자가 내 소프트웨어를 설치하면 사용자의 바탕 화면에 바로 가기가 생성됩니다. 바로 가기의 이름은 설치된 버전을 반영합니다.NSIS : nsis 스크립트에서 일치하는 파일을 삭제하는 방법

내 고객 중 일부는 여러 버전을 설치하지만 (아무 문제가 없거나 충돌이 없지만), 사용자의 데스크톱이 설치 한 여러 가지 다른 버전의 바로 가기가 많다는 의미입니다. 시간이 지남에. (예를 들어 SchoolServer 7.1.lnk, SchoolServer 7.2.lnk, SchoolServer 8.5.lnk 다음 현재 SchoolServer 9.0.lnk)

그들은 수동으로 사용되지 않는 바로 가기를 삭제해야합니다.

어떻게 NSIS 스크립트에서 이것을 수행 할 수 있습니까?

참고 : 모든 버전의 경우 와일드캣으로 바탕 화면의 바로 가기를 삭제 한 다음 설치된 버전의 바로 가기를 만들려고했지만 새로운 바로 가기를 만든 다음 이전 바로 가기를 그대로 두었습니다. 내가 사용하는 코드는 다음과 같습니다 :

;first delete stale shortcuts matching the wildcat 
Delete "$DESKTOP\SchoolServer *.lnk" 
;create the new shortcut 
CreateDirectory "$INSTDIR" 
CreateShortCut "${ICON_URL}" "$INSTDIR\SchoolServer.exe" "" "" "" SW_SHOWMAXIMIZED ALT|CONTROL|SHIFT|F5 "SchoolServer" 

답변

1

사용 SetShellVarContext 전 삭제로, 현재 사용자로 전환 :

SetShellVarContext current 
Delete "$DESKTOP\SchoolServer *.lnk" 
SetShellVarContext all 
+0

천재! 그렇다고해서 바로 가기를 만들 때'SetShellVarContext current'를 사용하는 것이 좋습니다. –

+0

예, 모든 사용자의 바로 가기를 만들지 않으려는 경우. 나는 그것이 문서에서 언급되지 않은 것에 놀란다. – idleberg

+0

그것은'SetShellVarContext current'를 설정하지 않으면 모든 사용자를위한 바로 가기가 생성된다는 것을 의미하지 않습니까? 그렇다면, 원래의 경우, 왜'SetShellVarContext current'를 설정해도 (모든 사용자에 대해) 재귀 적으로 단축키가 삭제되지 않는 이유는 무엇입니까? (실패하는 대신) –