Deployment/Update 的 .NET 编程文件下载
.NET programmatic file download for Deployment/Update
过去几天我一直在尝试设置家庭 FTP 服务器,但我的防火墙让我很难过。
我的目标是在可移植 .NET 应用程序中模拟 Click-Once 应用程序的功能。我有一个完整的可移植 EXE 文件,在同一目录中有几个 read/write 个数据文件夹,在 运行 时间用 My.Application.info.directorypath
访问。出于这个原因,我不想通过安装来发布应用程序,因为许多用户没有对其程序文件目录的写入权限。此外,我还有在 Mac/Linux 上使用 WINE 的用户以及 XP 用户。我认为如果我脱离便携性,尝试获得与现在相同的兼容性将是有问题的。
我的计划是编写第二个应用程序作为 launcher/updater。它将使用 Web 客户端读取具有当前软件版本号的托管文件。如果它已过期,它会提示用户然后使用 WebClient.DownloadFile
下载最新软件的压缩包。将旧的替换为新的,然后启动应用程序。
唯一的问题是这很容易感染病毒...我认为不可能进行程序化文件下载并让它在后台替换文件。
有没有人有任何好的部署技巧来处理这种情况?此外,任何人都对可以以编程方式读取的文件托管位置有很好的建议(我可以使用 Github,但我想这是不受欢迎的...)
我正在考虑使用 Squirrel.Windows,但是 none 我的 WINE 或 XP 用户将能够使用它。
您可以将更新应用程序作为 "launcher" 来验证是否需要更新,可选择将其下载到子文件夹并解压缩,然后运行实际应用程序。
SomeLauncher.exe
-> application sub-folder -> TheAppToRun.exe
我认为这样可以避免锁定文件时出现问题。
Dim client As New System.Net.WebClient()
client.DownloadFile("http://path/to/file.zip", "c:\some\path")
client.Dispose();
过去几天我一直在尝试设置家庭 FTP 服务器,但我的防火墙让我很难过。
我的目标是在可移植 .NET 应用程序中模拟 Click-Once 应用程序的功能。我有一个完整的可移植 EXE 文件,在同一目录中有几个 read/write 个数据文件夹,在 运行 时间用 My.Application.info.directorypath
访问。出于这个原因,我不想通过安装来发布应用程序,因为许多用户没有对其程序文件目录的写入权限。此外,我还有在 Mac/Linux 上使用 WINE 的用户以及 XP 用户。我认为如果我脱离便携性,尝试获得与现在相同的兼容性将是有问题的。
我的计划是编写第二个应用程序作为 launcher/updater。它将使用 Web 客户端读取具有当前软件版本号的托管文件。如果它已过期,它会提示用户然后使用 WebClient.DownloadFile
下载最新软件的压缩包。将旧的替换为新的,然后启动应用程序。
唯一的问题是这很容易感染病毒...我认为不可能进行程序化文件下载并让它在后台替换文件。
有没有人有任何好的部署技巧来处理这种情况?此外,任何人都对可以以编程方式读取的文件托管位置有很好的建议(我可以使用 Github,但我想这是不受欢迎的...)
我正在考虑使用 Squirrel.Windows,但是 none 我的 WINE 或 XP 用户将能够使用它。
您可以将更新应用程序作为 "launcher" 来验证是否需要更新,可选择将其下载到子文件夹并解压缩,然后运行实际应用程序。
SomeLauncher.exe
-> application sub-folder -> TheAppToRun.exe
我认为这样可以避免锁定文件时出现问题。
Dim client As New System.Net.WebClient()
client.DownloadFile("http://path/to/file.zip", "c:\some\path")
client.Dispose();