Показать полную графическую версию : [решено] Создание ярлыка с помощью VBS
omegastripes
04-02-2014, 21:41
судя по всему скрипт не понимает переменную %InstallPatch% »
Дело в том, что скрипту в качестве параметра не передаются переменные окружения вида "%name%". Сперва программа преобразует эти переменные в конкретные пути, только после этого вызывает указанный скрипт, и передает ему в параметре преобразованные пути.
А именно в Smart Install Maker »
Поскольку в данном случае этой программой является Smart Install Maker, с ним и нужно разбираться. Но этот софт я знаю только поверхностно, и не готов дать дельный совет.
Если начать копать, можно для дебага заменить скрипт "заглушкой", которая будет просто показывать что за параметр передала скрипту программа. Для этого подойдет такой скрипт:
args = ""
for each arg in wscript.arguments
args = args & arg & vbcrlf & vbcrlf
next
if args = "" then args = "аргументы не переданы скрипту"
msgbox args, , "wscript.arguments"
Iska, что я делаю не так? »
Для начала попробуйте обрамить пути, указанные в «Команда:» и «Параметры:» в кавычки, как это было указано в моём примере (http://forum.oszone.net/post-2300557.html#post2300557). По результату отпишитесь.
Покажите, куда у Вас происходит установка «IceTorrent.exe» по факту.
Dodakaedr
05-02-2014, 13:11
Покажите, куда у Вас происходит установка «IceTorrent.exe» по факту. »
По умолчанию в C:\Program Files\IceTorrent\IceTorrent.exe, но вообще используется переменная "%InstallPatch%" тоисть по выбору пользователя.
Для начала попробуйте обрамить пути, указанные в «Команда:» и «Параметры:» »
Действительно, взял «команду» в кавычки скрипт заработал. Спасибо!
Как теперь добавить диалоговое окно с текстом "Закрепить ярлык в панели задач", "Да" - создается, "Нет" - выход. Какой код нужно вставить? Чтобы этот диалог обязательно появлялся.
используется переменная "%InstallPatch%" »
Коллега, Вы в третий раз вставляете лишнюю букву в словосочетание: «%InstallPatch%».
Как теперь добавить диалоговое окно с текстом "Закрепить ярлык в панели задач", "Да" - создается, "Нет" - выход. Какой код нужно вставить? Чтобы этот диалог обязательно появлялся. »
Запрашивайте посредством MsgBox() и анализируйте ответ в If … Then.
А самым правильным будет перейти на использование бесплатных InnoSetup или NSIS, и реализовать сие непосредственно в самом инсталляторе.
Dodakaedr
05-02-2014, 13:57
А самым правильным будет перейти на использование бесплатных InnoSetup или NSIS, и реализовать сие непосредственно в самом инсталляторе. »
Смотрел я эти программы там в основном скрипты, а я в них не особо знаюсь и к тому же я просто привык к smart install maker
Запрашивайте посредством MsgBox() и анализируйте ответ в If … Then. »
Как правильно это оформить?
http://savepic.net/4510322m.jpg (http://savepic.net/4510322.htm)
Как добавить да и нет?
Смотрел я эти программы там в основном скрипты, а я в них не особо знаюсь и к тому же я просто привык к smart install maker »
«Найдите десять отличий» ;):
http://imageshack.com/a/img812/73/zk9t.png
Как добавить да и нет? »
'…
strPath = WScript.Arguments(0)
'…
If MsgBox("Закрепить ярлык на [" & strPath & "] на Панели задач?", vbYesNo + vbInformation, "Закрепление ярлыка на Панели задач") = vbYes Then
' Здесь код
End If
Dodakaedr
05-02-2014, 14:40
'… »
Ничего не получается, ошибки выдает
Dodakaedr
05-02-2014, 15:53
Все разобрался.
Это если при выборе "Да" а при "Нет" как? Потому что при выборе "Нет" выскакивает ошибка...
Все и в этом разобрался командой Elseif)))
Все и в этом разобрался командой Elseif))) »
Вам вообще не нужна ветвь «else».
Dodakaedr
06-02-2014, 22:06
Вам вообще не нужна ветвь «else». »
Почему? Именно с ней и заработал скрипт, без нее ошибки выскакивали.
А можно создать такой скрипт который после установки программы автоматов будет ассоциировать поддерживаемые форматы? А то вручную долго прописывать???
Почему? »
Потому что не нужна.
Именно с ней и заработал скрипт, без нее ошибки выскакивали. »
Если приведёте Ваш код — посмотрим.
А можно создать такой скрипт который после установки программы автоматов будет ассоциировать поддерживаемые форматы? »
Можно. Но есть два но: 1) кто будет убирать сделанную ассоциацию и восстанавливать предыдущую и 2) ассоциация ассоциации рознь — ассоциации строятся не по одному и тому же сценарию. Надо рассматривать каждый конкретный случай.
А то вручную долго прописывать??? »
Да ну? Например?
Dodakaedr
06-02-2014, 23:17
Если приведёте Ваш код — посмотрим.
If WScript.Arguments.Count <> 1 Then
MsgBox "Drag'n'drop exe file to pin to taskbar", , "Pin to Taskbar"
WScript.Quit
End If
a=MsgBox("Закрепить ярлык на Панели задач?", vbYesNo + vbInformation, "ххх")
If a = 6 Then
strPath = WScript.Arguments(0)
Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objShell.NameSpace(objFSO.GetParentFolderName(strPath))
Set objFolderItem = objFolder.ParseName(objFSO.GetFileName(strPath))
ElseIf a = 7 Then
WScript.Quit
End If
If objFolderItem Is Nothing Then
MsgBox strPath & vbCrLf & "not found", , "Pin to Taskbar"
WScript.Quit
End If
Set colVerbs = objFolderItem.Verbs
bPinned = False
For Each objVerb In colVerbs
VerbName = Replace(objVerb.Name, "&", "")
If VerbName = "Закрепить программу в панели задач" Or VerbName = "Закрепить на панели задач" Or VerbName = "Pin to Taskbar" Then
objVerb.DoIt
bPinned = True
Exit For
End If
Next
If bPinned Then
Msgbox "Ярлык закреплен", vbOKOnly + vbInformation, "ххх"
Else
Msgbox "Ошибка", vbOKOnly + vbCritical, "ххх"
End If
Да ну? Например?
http://savepic.net/4576610m.jpg (http://savepic.net/4576610.htm)
Dodakaedr, я как не по-русски написал (http://forum.oszone.net/post-2303225.html#post2303225):
'…
strPath = WScript.Arguments(0)
'…
If MsgBox("Закрепить ярлык на [" & strPath & "] на Панели задач?", vbYesNo + vbInformation, "Закрепление ярлыка на Панели задач") = vbYes Then
' Здесь код
End If
?!
Вот всё, что требовалось сделать:
If WScript.Arguments.Count <> 1 Then
MsgBox "Drag'n'drop exe file to pin to taskbar", , "Pin to Taskbar"
WScript.Quit
End If
strPath = WScript.Arguments(0)
If MsgBox("Закрепить ярлык на [" & strPath & "] на Панели задач?", vbYesNo + vbInformation, "Закрепление ярлыка на Панели задач") = vbYes Then
Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objShell.NameSpace(objFSO.GetParentFolderName(strPath))
Set objFolderItem = objFolder.ParseName(objFSO.GetFileName(strPath))
If objFolderItem Is Nothing Then
MsgBox strPath & vbCrLf & "not found", , "Pin to Taskbar"
WScript.Quit
End If
Set colVerbs = objFolderItem.Verbs
bPinned = False
For Each objVerb In colVerbs
VerbName = Replace(objVerb.Name, "&", "")
If VerbName = "Закрепить программу в панели задач" Or VerbName = "Закрепить на панели задач" Or VerbName = "Pin to Taskbar" Then
objVerb.DoIt
bPinned = True
Exit For
End If
Next
If bPinned Then
Msgbox "Ярлык закреплен", vbOKOnly + vbInformation, "ххх"
Else
Msgbox "Ошибка", vbOKOnly + vbCritical, "ххх"
End If
End If
http://savepic.net/4576610m.jpg»
Коллега, «По-моему вы слишком много кушать» ;).
omegastripes
06-02-2014, 23:49
А можно создать такой скрипт который после установки программы автоматов будет ассоциировать поддерживаемые форматы? А то вручную долго прописывать??? »
Для этих целей не лишена смысла идея посмотреть в сторону *.reg файлов.
Кстати, исходные ассоциации можно бы забэкапить в эти файлы, но это попахивает извращением: поскольку как такового процесса деинсталляции нет,- пользователю придется самому запускать *.reg для восстановления ассоциаций; плюс ко всему, будут восстановлены ассоциации неизвестно какой давности, с момента создания бэкапа пользователь мог их неоднократно изменить.
Dodakaedr
07-02-2014, 16:31
я как не по-русски написал: »
Но при выборе "Нет" выскакивала ошибка!
Но при выборе "Нет" выскакивала ошибка! »
Потому что Вы неверным образом составили код. По приведённому примеру (http://forum.oszone.net/post-2304418.html#post2304418) теперь понятно, как следовало сие сделать?
Dodakaedr
07-02-2014, 17:48
Потому что Вы неверным образом составили код. По приведённому примеру теперь понятно, как следовало сие сделать? »
Действительно все работает норм, а у меня не получалось...Спасибо!!!
Dodakaedr
12-02-2014, 16:34
Iska, Как теперь написать этот код в язык LUA???
Iska, Как теперь написать этот код в язык LUA??? »
Без понятия. Я LUA пока не трогал, жду пока третья версия Far Manager'а «устаканится», тогда и приступлю.
Dodakaedr
21-02-2014, 01:48
omegastripes, Iska, а можете обратный код написать, чтобы извлекал ярлык с панели задач? Просто после удаления программы остается как-бы след ярлыка (но сам ярлык удаляется через стандартный uninstall).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.