Как поддерживать актуальность/синхронизацию ярлыков приложений?

StackOverflow https://stackoverflow.com/questions/1179031

Вопрос

У меня есть средство автоматического обновления приложений, которое проверяет наличие новых обновлений, перемещает существующие файлы, включая app.exe, в новую папку и копирует новую версию .exe + .dll в папку приложения.

все работает отлично, без проблем, но есть один небольшой сбой - ярлыки, созданные во время первоначальной установки, становятся недействительными.

Есть ли способ программно исправить эти ярлыки?

Это было полезно?

Решение

Вы можете обновить ярлык, используя объект WshShell (для идентификации папок и расположений) и Scripting.FilesystemObject для внесения изменений.

Вот статья в MSDN об объекте WshShell:http://msdn.microsoft.com/en-us/library/aew9yb99(VS.85).aspx

Это пример замены ярлыка ссылки в VB Script:

Sub ReplaceShortcut (folder, target, targetTarget)
  set oFso = CreateObject("Scripting.FilesystemObject")
  Set oFolder = oFso.GetFolder(folder)
  Set oFiles = oFolder.Files

  For Each oFile In oFiles

    If LCase(oFso.GetExtensionName(oFile.name)) = "lnk" Then
        Set oLnk = oShell.CreateShortcut(oFile.path)
        If instr(1, oLnk.TargetPath, target, 1)<>0 Then
            oLnk.TargetPath = replace(oLnk.TargetPath, target, targetTarget)
            oLnk.Save
        End If
    End If
  Next
End Sub
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top