gpt4 book ai didi

c# - 自更新应用问题

转载 作者:太空狗 更新时间:2023-10-30 00:58:43 24 4
gpt4 key购买 nike

我一直在寻找一种 self 更新可执行文件的简单机制。 (由于应用程序的性质,我不能使用 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,并且原始文件位置被文本“some text”填充。

我想我的问题是,这是一种安全和/或可靠的方法,可以跨 XP 及更高版本的 Windows 使用),还是有其他方法可以实现此功能?这是否会被我无权测试的 AV 系统检测为可能的病毒行为?

TIA

最佳答案

Notepad++ 使用 GUP - http://gup-w32.sourceforge.net/ .值得一看。

应用程序的性质是否必须保持运行?让更新程序下载新的 EXE、覆盖当前的 EXE,然后提示重新启动应用程序似乎要容易得多。

关于c# - 自更新应用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com