ユーザーがソフトウェアをインストールすると、ユーザーのデスクトップにショートカットが作成されます。ショートカットの名前には、インストールされているバージョンも反映されます。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"
天才!しかしそれは、ショートカットを作成するときに 'SetShellVarContext current'を使用することをお勧めしますか? –
はい、すべてのユーザーのショートカットを作成する場合を除きます。私はそれがドキュメントに記載されていないことに驚いています。 – idleberg
これは、 'SetShellVarContext current'を設定しないと全てのユーザのショートカットが作成されるということではありませんか?その場合、元のケースでは、なぜ 'SetShellVarContext current'を設定してもすべてのユーザのショートカットを(再帰的に)削除しないのですか? (失敗する代わりに) –