2017-01-18 28 views
0

ユーザーがソフトウェアをインストールすると、ユーザーのデスクトップにショートカットが作成されます。ショートカットの名前には、インストールされているバージョンも反映されます。NSIS:nsisスクリプトで一致するファイルを削除する方法

私のクライアントの中には複数のバージョンをインストールしていることが判明していますが(問題はありませんし、矛盾はありません)、インストールされているさまざまなバージョンのショートカットがたくさんあります時間とともに。 (例えばSchoolServer 7.1.lnkSchoolServer 7.2.lnkSchoolServer 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'を設定してもすべてのユーザのショートカットを(再帰的に)削除しないのですか? (失敗する代わりに) –

関連する問題