Я работаю над программой, которая включает в себя механизм общего назначения, некоторый контент для конкретной программы и настраиваемое автоматическое средство обновления, позволяющее максимально эффективно обновлять мультимедийные данные в нашем контенте. В недавнем выпуске движка мы реорганизовали нашу структуру каталогов, так что вместо установки исполняемого файла (например,) c:\Program Files\Program\Engine.exe
теперь она находится в c:\Program Files\Program\engine\win32\NewEngine.exe
(обратите внимание, что имя движка также изменилось в этот процесс).
Проблема в том, что для запуска программы пользователю необходимо использовать ярлык, который мы устанавливаем в его меню «Пуск» и (необязательно) на рабочем столе. Однако движение двигателя после обновления ломает эти ярлыки. Так что теперь мне нужно найти способ исправить все ярлыки, которые есть у пользователя для запуска программы.
Исходя из фона Unix / Mac OS X, я хотел бы просто создать символическую ссылку из старого исполняемого имени на новое. Насколько я знаю, на самом деле в Windows нет эквивалента символической ссылки (из Googling я вижу, что в Vista и более поздних есть символические ссылки, но это должно работать в XP). Я ошибаюсь в своем предположении? Есть ли в Windows эквивалент символической ссылки на исполняемый файл?
Некоторые другие возможные решения, которые приходят на ум:
- Создание небольшого исполняемого файла в старом месте, который запускает реальный в новом месте. Есть ли какой-нибудь быстрый и простой способ создать простой исполняемый файл без головы, который просто запускает другую программу? Опять же, в Unix я просто создал бы сценарий оболочки, но насколько я знаю, я могу ' Назовите
.bat
file .exe
и запустите его, так что это должен быть способ для генерации .exe
.
- После обновления найдите все ярлыки, которые указывают на исполняемый файл, и отредактируйте их. Существует ли какой-либо (эффективный и надежный) способ найти все ярлыки в системе, которые указывают на указанное местоположение, и обновить их?
- Комбинация вышеперечисленного с небольшим исполняемым файлом, который определяет, что он запускается из ярлыка, и редактирует этот ярлык перед запуском реальной программы. Есть ли способ обнаружить, что программа запускается из ярлыка, и, таким образом, иметь возможность редактировать этот ярлык?
Будет ли работать любой из этих параметров, и если да, то как? Каков наилучший способ сделать это в Windows? Не хватает ли других способов перенаправления ярлыка из одного места в другое?
изменить, чтобы добавить : Некоторые дополнительные требования, которые у нас есть:
- Многие из наших пользователей нетехнические. О любом решении, требующем вмешательства пользователя, не может быть и речи.
- Это должно быть как можно более плавным. Любые дополнительные окна, появляющиеся каждый раз, когда пользователь нажимает на ярлык, недопустимы.
- Это должно быть надежно перед лицом большинства действий, которые мог бы сделать пользователь, таких как перестановка меню «Пуск» или перемещение ярлыка на панель быстрого запуска.
- Наши ярлыки абсолютно необходимы для функционирования программы, так как они передают аргументы, необходимые движку для загрузки контента (да, это не идеально, я бы предпочел это исправить, но не могу на этом этапе)
- Я ищу что-то относительно быстрое, простое в реализации и чрезвычайно надежное.