1

过去几天我一直在尝试设置一个家庭 FTP 服务器,但是我的防火墙让我很难过。

我的目标是在 Portable .NET 应用程序中模拟 Click-Once 应用程序的功能。我有一个完成的便携式 EXE 文件,其中在运行时使用My.Application.info.directorypath. 出于这个原因,我不想在安装时发布已发布的应用程序,因为许多用户没有对其程序文件目录的写入权限。此外,我还有在 Mac/Linux 上使用 WINE 的用户以及 XP 用户。我认为如果我脱离便携性,尝试获得与我目前相同的兼容性将是有问题的。

我的计划是编写第二个应用程序来充当启动器/更新器。它将使用 Web 客户端读取具有当前软件版本号的托管文件。如果它已过期,它将提示用户,然后用于WebClient.DownloadFile下载最新软件的压缩包。用新的替换旧的,然后启动应用程序。

唯一的问题是这是非常病毒性的......我认为它不可能进行程序文件下载并让它只是在后台替换文件。

有人对如何处理这种情况有任何好的部署技巧吗?此外,任何人都对可以以编程方式读取的文件托管位置有一个很好的建议(我可以使用 Github,但我想这是不受欢迎的......)

我正在考虑使用Squirrel.Windows,但是我的 WINE 或 XP 用户都无法使用它。

4

1 回答 1

2

您可以让更新应用程序充当“启动器”,验证是否需要更新,可选择将其下载到子文件夹并解压缩,然后运行实际应用程序。

SomeLauncher.exe
-> application sub-folder -> TheAppToRun.exe

我认为这样可以避免锁定文件的问题。

编辑:WebClient https://msdn.microsoft.com/en-us/library/ez801hhe(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

    Dim client As New System.Net.WebClient()
    client.DownloadFile("http://path/to/file.zip", "c:\some\path")
    client.Dispose();
于 2017-05-10T16:08:55.990 回答