К программам, скопированным при помощи $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 не умеет создавать ярлыки, но есть замечательный модифицированный модуль, который легко справляется с этой задачей. Все подробно расписано в справке модуля, где также имеется пример, включающий создание ярлыков.