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