Создать ярлык с VBS
Я устанавливаю программу в 'c:\program files (x86)\myfolder\' и вызываю скрипт vbs для создания ярлыка на рабочем столе.
Dim linkObj
Set linkObj = shellObj.CreateShortcut(linkFilePath)
linkObj.WindowStyle = "1"
linkObj.HotKey = linkHotKey
linkObj.Arguments = linkArgs
linkObj.Description = linkDesc
linkObj.TargetPath = linkTarget
linkObj.WorkingDirectory = linkWorkingDir
If (linkIconPath <> "") Then linkObj.IconLocation = linkIconPath
linkObj.Save
Я передаю полные строки без какой-либо строки окружения, но в конечном результате linkIconPath изменяется на "%programfiles%\myfolder\myicon.ico", что означает, что проводник Windows (являющийся 64-битным приложением) ищет myicon. ico в 'C:\Program Files\myfolder\myicon.ico' вместо 'c:\Program Files (x86)\myfolder\myicon.ico'
Как я могу предотвратить это? (Я не хочу копировать файлы значков в отдельную, не перенаправленную папку)
1 ответ
Я решил проблему, преобразовав строку "c:\Program Files (x86)\myfolder\myicon.icon" в старый короткий формат dos 8.3, а затем передал ее в IconLocation: 'c:\PROGRA~2\myfolder\myicon.ico. '
set fsObj = CreateObject("Scripting.FileSystemObject")
folder = "c:\Program Files (x86)"
set fsoFolder = fsObj.GetFolder(folder)
folder = fsoFolder.ShortPath
IconLocation по-прежнему будет манипулировать строкой в "%SystemDrive%\PROGRA~2\myfolder\myicon.ico", но я согласен с этим.