Я искал простой механизм самообновления исполняемых файлов. (Я не могу использовать Click-Once из-за характера приложения - поверьте мне)
Я заметил, что сборка в полете может перемещаться в другое место на диске, предположительно потому, что выполняющаяся сборка фактически является копией в памяти), и что исходное местоположение файла может быть перезаписано. Это доказывается с помощью следующего отрывочного примера ...
string assemblyStart = System.Reflection.Assembly.GetExecutingAssembly().Location;
Console.WriteLine(assemblyStart);
if(File.Exists(@"C:\ANewExe.exe"))
{
File.Delete(@"C:\ANewExe.exe");
}
File.Move(assemblyStart,@"C:\ANewExe.exe");
string assemblyMoved = System.Reflection.Assembly.GetExecutingAssembly().Location;
Console.WriteLine(assemblyMoved); // still reports as the original location
File.WriteAllText(assemblyStart,"some text");
В моей системе разработки XP это приводит к перемещению файла сборки в c:\ANewExe.exe
, а исходное местоположение файла заполняется текстом "некоторый текст".
Я предполагаю, что мой вопрос здесь заключается в том, является ли этот безопасный и / или надежный метод для использования в версиях Windows от XP и более), или есть другие способы достижения этой функциональности? Будет ли это обнаружено как возможное поведение вируса антивирусными системами, к которым у меня нет доступа для тестирования?
1011 * ТИА *