我正在开发一个应该能够自动更新的客户端应用程序(.NET)。 该应用程序将使用Simple WiX / MSI安装程序进行部署。
我需要的是:
有没有合适的框架/模式来存档?
我发现/尝试了以下内容:
是否有任何积极的开发和可靠的解决方案(它们不需要是免费的也不是OpenSource)?
答案 0 :(得分:2)
以下可能有用:
https://autoupdaterdotnet.codeplex.com/
或者你可以尝试一下:
https://github.com/synhershko/NAppUpdate
至少这两个看起来活跃且易于使用。
答案 1 :(得分:0)
我认为您可以自己编写代码。如下面的代码:
对于Form
,请使用以下代码:
Imports System.Net
Public Class frmMain
Private WithEvents WebC As New WebClient
Private updatefilename As String
Private WithEvents updateTimer As New Timer With {.Enabled = True, .Interval = 300000} '300000 is 5 min
Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
CheckUpdatePHP() ' you can use the php method or the normal method
End Sub
Private Sub CheckUpdatePHP() Handles updateTimer.Tick
Dim ServerVer As String = WebC.DownloadString("http://yourdomainname.com/update.php?get=ver")
If Not Application.ProductVersion.Equals(ServerVer) Then
Dim updateURL As String = WebC.DownloadString("http://yourdomainname.com/update.php?get=url")
updatefilename = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".exe"
WebC.DownloadFileAsync(New Uri(updateURL), updatefilename)
End If
End Sub
Private Sub CheckUpdate() 'Handles updateTimer.Tick
Dim ServerInfo As String = WebC.DownloadString("http://yourdomainname.com/version.txt")
Dim Infos As String() = ServerInfo.Split("%split%")
If Not Application.ProductVersion.Equals(Infos(0)) Then
Dim updateURL As String = WebC.DownloadString(Infos(1))
updatefilename = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".exe"
WebC.DownloadFileAsync(New Uri(updateURL), updatefilename)
End If
End Sub
Private Sub WebC_DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles WebC.DownloadFileCompleted
Dim pinfo As New ProcessStartInfo(updatefilename)
pinfo.WindowStyle = ProcessWindowStyle.Hidden
pinfo.CreateNoWindow = True
Process.Start(pinfo)
End
End Sub
End Class
version.txt
应如下所示:
1.0.0.0%split%http://yourdomainname.com/update.exe
upload.php
如果您将使用php方法,则应使用此代码:
<?php
if(isset($_GET['get'])){
$get = $_GET['get'];
$txt = file_GET_contents("version.txt");
$info = explode("%split%",$txt);
if($get = 'ver'){
echo $info[0];
}elseif($get = 'url'){
echo $info[1];
}
}
?>
如果您要使用PHP method
,则应该从表单代码中删除它,同样对于常规方法,您可以将version.txt
文件和update.exe
上传到您的保管箱帐户,使用它们。
随意问。