0

プログラムを書き込んでいますがVB.Net、このプログラムは自動更新されるはずです。新しいファイルをダウンロードして解凍する方法はすでに見つけましたが、問題は、実行中のファイルを上書きできないことです。これは通常どのように行われますか?別のexeの「アップデーター」について考えましたが、それには同じ問題があり、いくつかの変更を加えたときにアップデーターを更新できませんでした...

4

5 に答える 5

3

古いプログラムを閉じるだけです。

別のアップデータ プログラムを保持し、古いプログラムを更新する場合は、アップデータを取得して古いプログラムを閉じてから、アプリの新しいバージョンをダウンロードします。例えば、

アップデータプログラム、

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Do While True
        Dim client As New Net.WebClient
        Dim newVersion As String = client.DownloadString("http://www.myWebsite.com/updates/latestVersion.txt")
        If newVersion <> IO.File.ReadAllText("Your programs file location") Then
            For Each p As Process In Process.GetProcesses
                If p.ProcessName = "your program's process name" Then 'If you don't know what your program's process name is, simply run your program, run windows task manager, select 'processes' tab, scroll down untill you find your programs name.
                    p.Kill()
                End If
            Next
            IO.File.Delete("old program file location")
            client.DownloadFile("http://www.myWebsite.com/updates/12.05.2013.exe", "where ever you want to download your new program to (file location)")
            client.Dispose()
        End If
        Threading.Thread.Sleep(300000) 'freeze thread for 5 mins...
    Loop
End Sub
于 2013-05-19T16:46:15.490 に答える
2

古い質問ですが、私がしていることは、メイン プログラム内にいるときに、現在のアップデーターの名前を変更してコピーし、名前を変更したアップデーターを次のように呼び出すことです。

(注、コードは説明と図解のために簡略化されています)

FileCopy("MyUpdater.exe", "~MyUpdater.exe") ' rename the updater
Shell("~MyUpdater.exe") ' start the updater
END ' close the current program

その後、アップデーターがその仕事を行うと、MyUpdater.exe と他のすべてが更新されます。

于 2015-12-03T22:58:47.377 に答える
1

ClickOnce 配置を作成して、どこかでホストしないのはなぜですか?

于 2013-05-19T15:15:13.257 に答える
0

たぶん、実行中のプロセスのダンプファイルを作成するようなもの

ここに表示されます

ただし、VBのバージョンによって異なります....

于 2013-05-19T16:29:39.380 に答える
0

簡単な解決策は、exeファイルのソースコードを複数のDLLファイルに分割し(モジュールの観点から分割するように)、メインのexeに

sub MDImainEXE_load()
DLL.functionのよう にdllコードを実行させるだけです
end subのように

、同じものを使用できますupdate exe のメソッドは、構成と DLL を含む新しいメイン exe を送信します。構成ファイルには、更新する DLL 名が含まれます。更新 exe を更新する必要がある場合は、その DLL を使用する引数として指定します。更新 exe にはコードが含まれないため、DLL ファイル名の関数を使用するだけです。構成ファイルの引数から。

sub updateEXE_load()
DLL.function のように
end sub

混乱している場合は、何が混乱しているかを尋ねます。

于 2013-05-19T15:33:17.477 に答える