#windows-7 #batch-file #exe #auto-update
#windows-7 #пакетный файл #exe #автоматическое обновление
Вопрос:
У меня была настраиваемая функция автоматического обновления для моих программ начиная с Windows 95. Раньше он работал нормально, до Vista, а затем Windows 7. В основном он загружал новый исполняемый файл, создавал пакетный файл и выполнял его. Пакетный файл просто ждал закрытия родительского исполняемого файла (постоянно пытаясь его удалить), а затем переместил / переименовал загруженный новый файл в старый. И даже запустите недавно загруженный. Это работало нормально в течение многих лет. Но Windows 7 на самом деле не нравится, когда я это делаю. Одна вещь заключается в том, что он «знает», что исполняемые файлы больше не совпадают (хотя их имена и пути одинаковы).
Есть ли способ незаметно заменить исполняемый файл на новый, скопировав свойства / разрешения исполняемого файла в новый, чтобы Windows 7 не жаловалась на то, что это другой EXE-файл? (Конечно, мне это нужно для функции автоматического обновления, поэтому я открыт и для других подходов)
Ответ №1:
Хм, ClickOnce с .NET отлично подходит для этого… Однако не знаю, что вы подразумеваете под Windows 7, жалуясь на exe.
Комментарии:
1. Нет, @dan, .NET — это не мое. Под exe я имел в виду обычный файл Windows .EXE.
Ответ №2:
Не уверен в описанных вами предупреждениях, но у меня возникли проблемы, когда я поместил обновление в отдельный каталог, который сломал закрепленный элемент на панели задач.
Один из подходов заключается в использовании тонкого загрузчика, который устанавливается один раз, а затем загружает обновленную программу в свое собственное пространство памяти. Таким образом, он будет идентифицирован как та же программа, если она закреплена на панели задач.
Я знаком только с использованием .NET AppDomain, но я предполагаю, что большинство других сред выполнения также могут это делать.