簡體   English   中英

自我更新申請問題

[英]Self updating application question

我一直在尋找一個簡單的機制來自我更新可執行文件。 (由於應用程序的性質,我不能使用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,然后提示重新啟動應用程序似乎要容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM