К программам, скопированным при помощи $OEM$ папок, нередко приходится создавать ярлыки из командной строки. Кроме того, в некоторых случаях нужно создать ярлык с определенными параметрами для запуска программы. Для создания ярлыков существуют различные способы.
Утилита NirCmd
Утилита NirCmd поможет создать ярлык. Команда
nircmd.exe shortcut "%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe" "~$folder.desktop$" "Home" "-p Home"
Создает ярлык к Thunderbird на рабочем столе с именем Home, программа будет запущена с профилем Home (-p Home является параметром запуска исполняемого файла).
С помощью Nircmd можно проделать очень много операций, список которых не ограничивается домашней страницей. В CHM справке все описано подробно.
AutoIt
Основано на сообщении amel27 в форуме автоустановки..
Создание ярлыков можно легко реализовать скриптом на AutoIt (v.3). Прилагаю вариант скрипта, который по сути лишь оболочка над командой FileCreateShortcut. Осталось скомпилировать EXE-файл и вперед.
Список ключей, в основном, получен из справки к AutoIt:
/f Full path and file name of file to create shortcut to.
/l Full path and file name of the shortcut.
/w Working directory. [optional]
/a Additional file arguments. [optional]
/d File Description. [optional]
/i Full Path/File name of icon to use. [optional]
Пример использования:
shortcut.exe /f:"%ProgramFiles%\Ahead\Nero\nero.exe" /a:"/w" /l:"%ALLUSERSPROFILE%\Desktop\Nero Express"
VBScript
Пример сценариев VBScript для создания ярлыков
Вариант 1 (спасибо, Diamond)
Set WshShell = WScript.CreateObject("WScript.Shell") ' Создание ярлыка: Set oShellLink = WshShell.CreateShortcut("C:\Ярлык.lnk") ' Целевой путь к файлу для которого создаётся ярлык: oShellLink.TargetPath = "%SystemRoot%\system32\notepad.exe" ' Стиль открытия окна:
' 1 - Обычный размер окна; 3 - Развёрнутое на весь экран; 7 - Свёрнутое в значoк oShellLink.WindowStyle = 1 ' Клавиши быстрого вызова: oShellLink.Hotkey = "CTRL+SHIFT+F" ' Путь к файлу который содержит иконку для ярлыка: oShellLink.IconLocation = "notepad.exe, 0" ' Комментарий: oShellLink.Description = "Это тестовый ярлык" ' Рабочая папка: oShellLink.WorkingDirectory = "%SystemRoot%\system32" ' Аргументы командной строки:
' Аргументы имеют смысл если файл к которому обращается ярлык - исполняемый, т.е. имеет одно из следующих расширений: .exe; .bat; .com; .cmd; .vbs и т.д. oShellLink.Arguments = "C:\MyFile.txt" ' Сохранение ярлыка на жестком диске: oShellLink.Save
Вариант 2, универсальный (спасибо, deepred)
Option Explicit Dim Args1, Args2 Args1 = "" Args2 = "" On Error Resume Next Args1 = Wscript.Arguments.Item(0) Args2 = Wscript.Arguments.Item(1) Dim objWshShell, objWshShortcut, objFSO Dim strDesktop, ShortcutName, ShortcutExt, ShortcutPath Set objWshShell = WScript.CreateObject("WScript.Shell") strDesktop = objWshShell.SpecialFolders("Desktop") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") ShortcutName = objFSO.GetBaseName(Args1) ShortcutExt = objFSO.GetExtensionName(Args1) ShortcutPath = objFSO.GetParentFolderName(Args1) If Len(Args2)=0 Then Args2=ShortcutName Set objWshShortcut = objWshShell.CreateShortcut _ (strDesktop &"\"& Args2 &".lnk") With objWshShortcut .WorkingDirectory = ShortcutPath .TargetPath = ShortcutName &"."& ShortcutExt .IconLocation = Args1 &", 0" .Save End with
Использование скрипта, сохраненного, например, с именем MKLink.vbs:
wscript.exe "MKLink.vbs" "полный_путь_к_исполняемому_файлу" "имя_ярлыка"
Самораспаковывающийся (SFX) архив
Если установка приложения ведется из SFX архива, можно задействовать возможности архиватора для создания ярлыков.
WinRar
SFX-модуль архиватора WinRAR обладает широкими возможностями для создания ярлыков. Программа добавляется в архив и создается сценарий распаковки, включающий в себя команды для создания ярлыков. Пример комментария к SFX-архиву (спасибо, voler):
;Расположенный ниже комментарий содержит команды SFX-сценария
Path=%systemdrive%\Program Files\AIMP\
SavePath
Silent=1
Overwrite=1
Shortcut=D, "cAIMP.exe", "", "Аналог winamp", "AIMP.lnk"
Shortcut=P, "cAIMP.exe", "", "Аналог winamp", "AIMP.lnk"
Пояснения:
- Silent=1 - включен тихий режим
- Overwrite=1 - включена перезапись существующих файлов
- Shortcut=D - ярлык для рабочего стола
- Shortcut=P - ярлык для Меню пуск
7-zip
SFX-модуль архиватора 7-Zip не умеет создавать ярлыки, но есть замечательный модифицированный модуль, который легко справляется с этой задачей. Все подробно расписано в справке модуля, где также имеется пример, включающий создание ярлыков.