
AutoUpdater.NET 是一个开源库,专为 .NET 桌面应用程序设计,支持 Windows Forms 和 WPF 应用。它通过从服务器获取 XML 文件来检测新版本信息,当发现新版本时向用户显示更新对话框。
相对于 ClickOnce,AutoUpdater.NET 的配置更简单一些。
首先通过 NuGet 包管理器安装 Autoupdater.NET.Official,然后在应用程序入口点添加以下代码:
AutoUpdater.Start("http://yourserver.com/path/to/update.xml");
XML 文件结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>2.0.0.0</version> <!--必填:最新版本号-->
<url>http://yourserver.com/path/to/updatefile.zip</url> <!--必填:更新文件下载地址-->
<changelog>http://yourserver.com/path/to/changelog.txt</changelog> <!--可选:更新日志-->
<mandatory>False</mandatory> <!--可选:是否强制更新-->
</item>
Windows Forms 在 Program.cs 文件的 Main() 方法中,WPF 在 App.xaml.cs 的 OnStartup() 中添加:
AutoUpdater.Start("http://yourserver.com/path/to/update.xml");
AutoUpdater.CheckForUpdateEvent += (e) =>
{
if (e.Error != null)
{
MessageBox.Show($"检查版本更新失败:{e.Error.Message}");
}
if (e.IsUpdateAvailable)
{
if (e.Mandatory.Value)
{
// 强制更新
AutoUpdater.DownloadUpdate(e);
}
else
{
// 可选更新
if (MessageBox.Show("发现新版本,是否立即更新?", "更新提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
AutoUpdater.DownloadUpdate(e);
}
}
}
};
这样就能简单实现打开应用时判断是否有更新。具体用法参:GitHub
对于控制台应用程序,AutoUpdater.NET 并不直接支持。可以使用 GeneralUpdate 等轻量级自动更新库。
其它:
若希望通过标准安装流程(如添加到开始菜单),优先选择 ClickOnce,适合长期维护的内部工具。
若追求快速集成和无感更新,AutoUpdater.NET 更灵活。
无论哪种方案,务必对程序进行代码签名(如购买企业证书或生成测试证书),否则系统可能拦截安装。(你要允许来自未知发布者的此应用对你的设备进行更改吗)
可以购买“OV 代码签名”证书或“EV 代码签名”证书,注意:“代码签名证书”与“域名证书”互不通用。

目标: 在运行 HarmonyOS Next 的华为 MateBook Pro 上侧载安装第三方应用程序。
注:本教程同样适用于在运行 HarmonyOS Next 的华为手机上侧载安装第三方应用程序。
所需准备
一台运行 HarmonyOS Next 的华为 MateBook Pro。
一台 Windows 电脑。
一根数据线:
USB-A to Type-C
或 Type-C to Type-C (确保能将两台电脑连接)。
网络连接:两台电脑需在同一局域网下(用于无线调试连接)。
步骤详解
第一步:鸿蒙 PC (MateBook Pro) 端设置 (启用开发者模式与调试)
连接设备: 使用数据线将鸿蒙 MateBook Pro 连接到 Windows 电脑。
打开设置: 在鸿蒙 PC 上,进入
设置
。进入关于本机: 在设置中,找到并点击
关于本机
或您的电脑型号
。启用开发者模式:
在“关于本机”界面,找到
软件版本
或HarmonyOS 版本
。连续点击
软件版本/HarmonyOS 版本
文字 5 次以上。系统会提示“您已处于开发者模式”或提示重启进入开发者模式。按提示重启电脑(如果需要)。
打开开发者选项:
重启后,回到
设置
->系统
->开发者选项
(路径可能略有不同,在“系统和更新”或“隐私与安全”下查找)。启用 USB 调试:
在开发者选项中,找到
USB 调试
,将其开启。首次开启时,可能会弹出提示(连接线后或稍后操作时),点击
允许
。注意提示:系统可能提示“Matebook Pro 上的右上角的 Type-C 口可以进行调试”,确保使用正确的接口连接调试线。如果弹出“始终允许本机调试”选项,勾选并允许。
启用并记录无线调试信息:
在开发者选项中,找到
无线调试
,将其开启。开启后,系统会显示一个 IP 地址和端口号(例如
192.168.x.x:xxxxx
)。务必准确记下这个 IP 地址和端口号,后续在 Windows 端连接时必须用到。至此,鸿蒙 PC 端的准备工作完成。
第二步:Windows 电脑端操作 (使用小白调试助手)
获取工具和 HAP 包:
访问包含 HarmonyOS Next 可用 HAP 包的资源(如 GitHub 上的相关仓库,搜索 “HarmonyOS Next HAP”)。
下载小白调试助手:
在工具仓库中找到
小白调试助手
或类似名称。点击
Latest
(最新版本)。点击
Download
下载其 Windows 版压缩包(.zip
文件)。下载目标应用的 HAP 包(以 ClashBox 为例,你也可以使用自己已有的 .hap 文件):
在应用仓库中找到
ClashBox
。同样点击
Latest
->Download
下载其 HAP 包(.hap
文件)。准备小白调试助手:
将下载的小白调试助手压缩包解压到一个非中文且无空格路径的文件夹。
进入解压后的文件夹,找到可执行文件。双击运行。根据 Windows SmartScreen 或安全软件提示(若有),选择
更多信息
->仍要运行
。登录华为开发者账号 (强烈推荐):
在小白调试助手界面,找到登录入口(通常在界面顶部或设置中),点击
登录
。使用您的华为开发者账号登录(登录时,您的华为手机可能会收到验证码,或在鸿蒙PC上验证)。
输入验证码,并在授权请求页面点击
允许
。登录成功后,界面通常会显示您的账号昵称或ID。重要: 开发者账号签发的应用证书有效期通常为 6 个月,普通账号仅 14 天。为方便使用,建议申请华为开发者账号。
连接鸿蒙设备:
在小白调试助手主界面,找到
连接设备
、添加设备
或类似功能的按钮并点击。在弹出的连接窗口(通常是输入IP和端口的对话框)中:
输入您在鸿蒙 PC 上
无线调试
功能中记录的 IP 地址。输入记录的 端口号。
点击
确定
、连接
或OK
。连接成功:如果地址和端口输入正确,且鸿蒙 PC 的开发者选项已开启无线调试:
鸿蒙 PC 可能弹出调试请求(“允许调试?”),勾选“始终允许”并点击
允许
。小白调试助手界面会显示“连接成功”或目标设备信息。
(若未弹出提示框但连接成功,也属正常)
第三步:安装第三方 HAP 包
选择 HAP 包:
确保设备已连接成功。
在小白调试助手界面,找到
选择 HAP
、加载 HAP
、安装应用
或类似按钮(通常在文件菜单或主功能区)。点击该按钮,浏览文件系统,找到您下载好的目标 HAP 文件(如
ClashBox-xxx.hap
),选中并点击打开
。开始安装:
选择好 HAP 文件后,小白调试助手界面通常会激活
开始调试
、安装
或运行
按钮。点击
开始调试
或安装
。等待安装完成:
小白调试助手会开始处理 HAP 包:进行签名、推送到设备并安装。
观察进度条或日志输出,耐心等待直至提示“安装成功”。
第四步:在鸿蒙 PC 上使用安装的应用
安装完成后,返回您的鸿蒙 MateBook Pro。
在桌面或
开始菜单
中,查找您刚刚安装的应用图标(如ClashBox
)。点击图标即可启动使用该应用。
常见问题处理
签名错误/证书问题:在小白调试助手内寻找 **
清理缓存
、重置证书
、重新登录
** 或类似选项。执行后,重新登录开发者账号,再尝试安装。确保登录的是开发者账号。Java 环境报错:如果小白调试助手提示需要 Java 环境(如
java
命令未找到),按照其提示点击安装,它会引导下载并安装所需的 Java Runtime Environment (JRE)。连接失败:
检查鸿蒙 PC 的
无线调试
IP 和端口号是否变化(息屏、重启、网络切换可能导致变化),在开发者选项里重新确认并输入。确保两台电脑在同一局域网。
检查鸿蒙 PC 的 **
USB 调试
和无线调试
是否已开启**。尝试在鸿蒙 PC 的开发者选项中关闭再重新开启
无线调试
,获取新的端口号。其他报错:查阅小白调试助手官方的使用说明或 GitHub 仓库的 Issue 区寻求解决方案。

解析域名(非网站域名)、修改实例名称、主机名
设置阿里云(重要)
远程连接进入 ECS(若解析未生效可以先用 IP)(若新服默认使用 22 端口,可在阿里云控制台登录系统,或先在安全组临时放行 22 端口)
修复系统漏洞
将磁盘挂载到目录(fdisk、df 命令参考:https://xoyozo.net/Blog/Details/SSH)
安装宝塔面板(本文以宝塔面板方案为例,选择任何你喜欢的环境部署方案都行)。可以在阿里云控制台ECS实例页安装扩展程序
临时放行宝塔面板端口,进入宝塔面板(http方式),或用命令更改宝塔面板端口
配置面板 SSH、添加新的安全端口、面板设置
更改 SSH 默认端口(参:https://xoyozo.net/Blog/Details/change-default-port)
安装 nginx、PHP 等
配置 PHP 扩展(Redis、sqlsrv(注意选择兼容的版本)、memcached 及端口)
创建网站,配置网站(路径、伪静态等)
迁移网站文件(参:https://xoyozo.net/Blog/Details/SSH)
仔细对比新旧网站的配置文件(特别是 .php 的访问权限,参:https://xoyozo.net/Blog/Details/nginx-location-if)
设置写入目录(使用 rsync 同步的文件会同步用户和权限)
解析域名(先改 hosts 测试网站功能)
更改内网其它 ECS 上的 hosts
关闭原 ECS(能马上发现问题,不然等运行一段时间才发现问题就麻烦点)
设置 FTP
迁移“计划任务”
所有网站和软件的配置文件都要使用 WinMerge 进行对比
移除“宝塔面板-安全”和“阿里云-ECS-安全组”中不用的端口
再次检查阿里云设置
私网中若有 ECS 的 hosts 中域名直接绑定到私网 IP 的,做相应更改
其它:ERP 添加到期提醒、WAF 增加该 ECS、备份工具增加该 ECS
更多文章:

解析域名(非网站域名)、挂载磁盘(若有另购)、修改实例名称、主机名
设置阿里云(重要)
远程连接进入 ECS(若解析未生效可以先用 IP)(若新服默认使用 3389 端口,可先在安全组临时放行 3389 端口)
开启 Windows 防火墙(使用推荐设置)
Windows 更新、并在高级选项中开启(更新 Windows 时接收其它 Microsoft 产品的更新)
安装 IIS:服务器管理器-添加角色和功能-勾选“Web 服务器(IIS)”包括管理工具
建议勾选:
默认已勾选项
按需安装 IP 和域限制
跟踪(即“失败请求跟踪”)
请求监视器、日志记录工具、
按需安装 ASP
按需安装 ASP.NET 4.8(会同时勾选 .NET Extensibility 4.8、ISAPI 扩展、ISAPI 筛选器)
按需安装 WebSocket 协议
应用程序初始化(建议安装)
管理服务(用于 Web 部署)
细节:设置任务栏;设置桌面图标;个性化-颜色-勾选“标题栏和窗口边框”;设置输入法;
下载 URL 重写(文件名:rewrite_amd64_zh-CN.msi)
下载 MySQL Connector/NET(文件名:mysql-connector-net-8.0.19.msi)
下载 ASP.NET Core 运行时 Hosting Bundle(文件名:dotnet-hosting-*.*.*-win.exe)
下载 .NET 桌面运行时 Windows x64(文件名:windowsdesktop-runtime-*.*.*-win-x64.exe)
下载 Web Deploy(文件名:WebDeploy_amd64_zh-CN.msi)
服务:设置“ASP.NET State Service”自动启动
IIS 日志:路径(如 D:\wwwlogs),每小时(统一设置一个全局的就行了,不需要设置每个网站),按需勾选“使用本地时间进行文件命名和滚动更新”
IIS 导入证书:个人、允许导出证书。参
设置默认网站的 https、设置默认网站跳转到指定网站。
设置权限:设置网站所在分区(如 D 盘),安全,添加 IIS_IUSRS,全部拒绝(防止跨站)
添加用户:为每个网站创建用户(既能防止跨站,又能跟踪进程),密码不能改、不过期,仅隶属于 IIS_IUSRS,并添加到每个网站的根目录,若用户创建失败看这里。
创建网站:设置访问物理路径的用户;设置应用程序池的“标识”用户;编辑绑定:勾选需要服务器名称指示;检查域名是否绑全;设置写入目录的用户权限;设置写入目录的“处理程序映射”取消“脚本”。
重复上面两步
检查所有网站用户是否仅隶属于 IIS_IUSRS(在“组”页面双击 Users 和 IIS_IUSRS 查看成员)
在应用程序池列表页面检查 CLR 版本、管托管道模式和标识;在网站列表页面检查绑定和路径
设置“IP 地址和域限制”
废弃旧服时再次检查:IIS 中各功能设置、hosts、安装的应用程序、启动项、任务计划程序、服务、防火墙等
接入 WAF
解析各网站域名
其它:资源管理器-选项-查看-去掉“始终显示图标,从不显示缩略图”前的勾
再次检查阿里云设置
在备份工具中添加该服务器的所有备份项
其它:到期日期提醒、
>> 关于域名解析
因各地域名解析生效时间不可控,一般国内域名 1 天内,国际域名 2 天内。
若网站数据库在 RDS、上传文件在 OSS,则解析 48 小时后直接停止原网站即可;(比较理想的)
文件上传到 ECS 的可使用 FTP 等工具定时同步文件,或直接停止原网站。(网友会遇到新文章中图片无法显示等问题)
还有一种方法是新网站提前解析一个备用域名,确保完全生效后再修改正式域名的解析,原网站无条件跳转到备用域名,如果数据库中有保存完整网址路径的,关闭原网站并解绑备用域名之后,进行批量替换。(缺点是可能会影响在搜索引擎的网站权重)
部分有定时器的网站要注意,如果两个网站的定时器都正常开启会导致意外的,需要停止其中一个网站的定时器。
当然每种方法都有优缺点,选择可以接受且方便的一种即可。
更多文章:

默认端口带来安全隐患,建议更改为 50000-60000 之间的端口号。
Windows 远程桌面(RDP)(3389)
在 Windows 防火墙中放行新端口:在“入站规则”中找到“Open RDP Port 3389”复制并粘贴该规则,修改端口和名称。
若没有这个规则:新建规则 - 端口 - TCP - 特定本地端口(填写新的端口号)- 允许连接 - 名称
如有其它防火墙或安全组也一并配置(如阿里云 ECS 的安全组)
打开注册表(regedit),展开到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp,右侧双击“PortNumber”切换到“十进制”,将 3389 改为新端口号
重启生效
在防火墙和安全组中禁止原默认端口
SSH (22) 之 CentOS
从阿里云控制台登录服务器(如果未设置 root 密码则先设置),直接跳到第 4 步
在外部防火墙中放行新的端口号(如阿里云 ECS 的安全组)
在内部防火墙中放行新的端口号(如 firewalld 或 iptables),使用宝塔面板的直接在面板“安全”页面设置即可
打开 SSH 配置文件
sudo vi /etc/ssh/sshd_config
找到并编辑 Port 行的端口号并启用,改为其它端口号
#Port 22
重新加载使生效
sudo systemctl reload sshd
在防火墙和安全组中禁止原默认端口
建议使用 SSH 密钥对代替传统账号密码登录
FTP (21) 之 FileZilla Server Windows 版
一般地,在 Windows Defender 防火墙中是以添加应用 filezilla-server.exe 的方式允许的,所以不需要更改端口。如果以端口方式允许的,那么在入站规则中允许新的端口。
如有其它防火墙或安全组也一并配置(如阿里云 ECS 的安全组)
打开 Administer FileZilla Server,打开菜单 - Server - Configure - Server listeners,右侧窗口中将 Port 改为新端口(强烈建议将 Protocol 改为“Require explicit FTP over TLS”,即禁止 FTP 协议,改为使用 FTPS 协议)
从防火墙和安全组移除 21 端口
FTP (21) 之 Pure-Ftpd(宝塔面板)
在防火墙中放行新的端口号(如阿里云 ECS 的安全组)
进入宝塔面板,打开“安全”,添加端口规则 TCP
在宝塔面板中进入软件商店,找到 Pure-Ftpd 并打开,切换到“配置修改”,搜索“Bind”,删除开头的“#”,将端口号 21 改为新端口号,保存(强烈建议将 TLS 项改为 2,即禁止 FTP 协议,仅允许 FTPS 协议)
切换到“服务”选项卡,点击“重启”
从防火墙和安全组移除 21 端口
MySQL (3306) 之阿里云云数据库 RDS MySQL 版
打开控制台 RDS 实例页,左侧菜单点击“白名单与安全组”,切换到“安全组”查看正在使用的安全组ID
(若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口
打开控制台 RDS 实例页,左侧菜单点击“数据库连接”,点击“修改连接地址”,在弹出框中修改端口
从防火墙和安全组移除原端口(确保没有其它实例正在使用此端口)
PolarDB (3306)
打开控制台 PolarDB 集群实例页,左侧菜单点击“集群白名单”,切换到“安全组”查看正在使用的安全组ID
(若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口
打开控制台 PolarDB 集群实例页,左侧菜单点击“基本信息”,点击“主地址”和“集群地址”的“配置”,在“网线信息”中点击“更多”更改端口
从防火墙和安全组移除原端口(确保没有其它实例正在使用此端口)
MSSQL (1433) 之阿里云云数据库 RDS SQL Server 版
打开控制台 RDS 实例页,左侧菜单点击“白名单与安全组”,切换到“安全组”查看正在使用的安全组ID
(若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口
打开控制台 RDS 实例页,左侧菜单点击“数据库连接”,点击“修改连接地址”,在弹出框中修改端口
从防火墙和安全组移除原端口(确保没有其它实例正在使用此端口)
Redis (6379) 之阿里云云数据库 Redis 版
打开控制台 Redis 实例页,左侧菜单点击“白名单设置”,切换到“安全组”查看正在使用的安全组ID
(若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口
打开控制台 Redis 实例页,在“连接信息”中点击“修改连接地址”,在弹出框中修改端口
从防火墙和安全组移除原端口(确保没有其它实例正在使用此端口)
宝塔面板 (8888)
在防火墙中放行新的端口号(如阿里云 ECS 的安全组),或直接在私网其它 ECS 上的浏览器上直接访问原 8888 端口的地址
进入宝塔面板,打开面板设置,切换到“安全设置”页,找到“面板端口”,点击“设置”
在防火墙和安全组中禁止原默认端口
IIS 管理服务(Web 部署)(8172)
在 Windows 防火墙中放行新端口:在“入站规则”中找到“Web 管理服务(HTTP 流量入站)”因其为预定义规则且复制也无法修改,所以按其设置新建一个,并指定新的端口。
如有其它防火墙或安全组也一并配置(如阿里云 ECS 的安全组)
打开 IIS 管理器 - 管理服务,右侧停止,左侧修改端口,右侧应用、启动
VS 中发布配置修改“服务器(E)”项添加端口(域名:端口),第一次连接接受证书
在防火墙和安全组中禁止原默认端口

在使用 VM 的过程中,你可能遇到过虚拟机和宿主机之间需要传输文件的问题。使用共享文件夹的方式比直接复制粘贴更快速、更有效,并且可以共同编辑文件,无需拷贝文件。如果在虚拟中有下载大文件,那么可以直接下载到共享文件夹中,可有效节省虚拟机磁盘文件 .vmdk 的空间占用(虚拟机里彻底删除文件后,.vmdk 并不会变小)。
设置方法很简单:
首先在宿主机磁盘上新建一个文件夹用来共享给虚拟机,例如取名 VM_SharedFolder。若无特殊需求,尽量不要将重要文件夹共享给虚拟机。
在 VM 中选中要共享文件夹的虚拟机,右键,设置。切换到“选项”选项卡,左侧选中“共享文件夹”,右侧选择“总是启用”,勾选“在 Windows 客户机中映射为网络驱动器”。点击“添加”,选择上一步创建的文件夹,完成。
这样,在虚拟机的“此电脑”上就可以看到这个“网络位置”了,默认是 Z 盘。
以上步骤可以在虚拟机开机的时候进行设置。
老版迅雷不能把下载目录指定到这样的盘符下,可以指定到:\\vmware-host\Shared Folders\VM_SharedFolder

本文过程较为复杂,且部分内容已无法实现,建议点击这里查阅最新的操作方法!
前言:本文操作需要你具备浏览器安装和使用扩展插件的能力、以及简单的使用命令行的能力。
第一步:下载视频
首先我使用 Edge 浏览器(Chrome 操作类似,不过安装扩展需要科学上网)。
2023 年初的时候,用 FetchV 这个扩展是非常方便的,它会自动嗅到网页中的视频,即使没有嗅到也可以用录制的方式来保存。
但到了过了一两个月发现 FetchV(及其马甲)经常打不开,或者无法嗅到视频流,更别提录制了。
所以我找到了另一款专业视频下载神器:
当然它的马甲们用法也是大同小异,主界面是这样的:
开启捕获,同意下载多个文件,然后播放视频,耐心等待。
心急的朋友可以用修改播放速度的扩展(如 视频加速减速控制),例如用 16 倍速,那么一个 16 分钟的视频用 1 分钟就播放完成了。(或者在 F12 的控制台中使用 JS 代码加速:document.querySelector('video').playbackRate = 16; )
等小浮框提示“捕获完成 点击下载”的时候就可以保存到磁盘上了。
第二步:音频修复
下载后它会有两个 .mp4 文件保存到电脑上,其中较大的是视频部分,较小的是音频部分。
但是有个小问题是,这个音频文件用 Windows 自带播放器播放正常,用 potplayer 等第三方播放器或者一些视频编辑软件播放就会有问题。
我在 Microsoft Store 中找了一款叫 Movie Maker - Video Editor 的应用,
在这个软件中添加刚才的只有音轨的视频文件会提示转码,转码后的 .mp4 文件音轨就正常了。
具体步骤是依次点击“Create New Project”,“Add clip”,“Photo/Video”,选择文件后“Transcode”,保存以后默认会在文件名后加上“ (Transcoded).mp4”。
第三步:音视频合成
接下来是合成视频和音频,将视频文件命名为 v.mp4,音频文件命名为 a.mp4。
在 FFmpeg 官网下载 Windows 版,然后使用这个命令从音频文件中提取音轨:
ffmpeg -i a.mp4 -vn -acodec copy a.aac
再用这个命令将 v.mp4 的视频和 a.aac 的音频合成一个新的文件
ffmpeg -i v.mp4 -i a.aac -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 output.mp4
相比于其它的视频转换工具,ffmpeg 直接提取合并的速度是极快的。
Tips:
小鹅通中学习过的课程再次打开会从上次关闭的地方开始播放,这会导致捕获不全,可以将进度条手动拖到末尾,这样它会停止播放,再次刷新就会从头开始播放。
浮框中“点击下载”可能没反应,估计是在合成文件,过几秒钟多点几下,不会重复下载。
如果要下载的视频比较长或者比较多,可以像我一样在虚拟机里进行,把视频播放器的音量开到最大,把操作系统的声音关闭。

从 2023 年 4 月的 22621.1635 版本起,Windows 11 支持在任务栏上显示“秒”。
需要安装 KB5025305 更新,家庭版从 Microsoft®Update Catalog 手动安装,其它版本直接在 Windows Update 中更新补丁。
然后只需在注册表中添加一个配置项即可,位置:
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
新建 DWORD (32 位)值,名称为:ShowSecondsInSystemClock
,把值改为 1
。
