# WebView2AppCSharp
**Repository Path**: chanchaw/web-view2-app-csharp
## Basic Information
- **Project Name**: WebView2AppCSharp
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-01-21
- **Last Updated**: 2026-03-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 概述
最初为 `SNBC EMS` 项目制作报修用触摸屏上的客户端,为保证在 `win7,win10` 的兼容性使用 `D:\source\c#\WebView2App\bin\Debug\net48\win-x86` 下的客户端,注意修改配置文件 `WebView2App.exe.config`
## 编译与部署
使用 `visual studio` 的菜单项生成 `exe` 不对,要在 `Trae` 中提示 `请重新编译可以兼容win7,win10,32位,64位系统的exe文件到目录D:\source\c#\WebView2App\bin\Debug\net48\win-x86` 进行编译客户端
2026年2月25日 08:48:24 针对三处软件图标(`exe`文件,软件标题栏,`windows`系统任务栏)修改代码并添加配置项 `AppIcon`,后面两处图标来自该配置,但是编译后的 `exe` 文件的图标是编译后无法修改的,以后如果要更换图标需要修改两处:配置文件 `WebView2App.exe.config` 中的配置项 `AppIcon`、源码中的图标文件 `jzy.ico`。更换源码中的图标后执行下面代码重新编译
```bash
dotnet build "d:\source\c#\WebView2App\WebView2App.csproj" -c Debug -r win-x86
```
注意,2026年2月25日 生成的客户端 `D:\source\c#\WebView2App\bin\Debug\net48\win-x86` 中缺少 `WebView` 本地运行时,要到公司群晖目录 `Y:\客户资料\nsk\app\windows客户端\c#\win-client` 下拷贝目录 `WebView2Runtime` 作为 `exe` 文件的兄弟目录后才可运行
## 图标
使用普通的 `png` 图片无法制作客户端图标,需要在 [网站](https://www.png2ico.com/) 中转换为 `ico` 图标文件后让 `Trae` 制作为客户端图标
## 系统配置
配置文件 `WebView2App.exe.config` 内容如下
```bash
```
## 错误与提示
### server2019不支持
在 `Windows Server 2019 Standard` 中运行本项目编译的客户端会提示要求安装 `.NET Framework 4.8.1`,从微软官网下载后安装提示`此操作系统不支持 .NET Framework 4.8.1` 。4.8.1在线安装包在 `群晖 FileBrowser > alist安装程序 > cc > devtools > NDP481-Web.exe`
## 更新日志
- 2026年2月25日,通过 `Trae` 设置编译后的 `exe` 文件图标以及软件标题栏图标、`windows`系统任务栏图标
- 2026年1月31日
- 通过 `trae` 添加配置文件中默认打开自动最大化,通过 `chat` 让 `trae` 编译兼容的客户端到目录 `bin\Debug\net48\win-x86` 下
- 制作开机自启动,已测试通过:win7,win10(都是64位系统)
- 2026年3月31日
- 启动软件后先请求接口 `/server/now` 检测和服务器的连通性,网络故障则显示 `exe` 内置的显示故障的页面
- 新增客户端自动更新功能,配置文件新增配置项如下
```bash
```
需要为 `nginx` 配置如下
```bash
location /snbcemsuwin {
alias "D:/projs/snbcems/upgrade/touch";
index index.html index.htm;
# 不缓存 html
if ($request_filename ~* ^.*?.(html|htm|css|js)$) {
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
}
```
在服务器上创建目录 `D:\projs\snbcems\upgrade\touch` ,在其下创建文件 `version.json` 内容如下:
```bash
{
"version": "1.0.0.1",
"url": "http://192.168.0.250/snbcemsuwin/SNBC设备管理系统.exe"
}
```
客户端启动后读取该文件检查服务器端最新的版本号 `version`,如果大于客户端当前的版本号则会按照属性 `url` 指定的路径下载最新版本客户端并更新到客户端覆盖原客户端。
本功能通过 `Grok` 生成的精准文案如下(自动更新功能在多次纠错,更换黑窗口为进度条提示用户后功能可用)
```tex
当用户启动本软件时,程序需先进行版本检测和自动更新流程:
启动软件后,立即检测是否有新版本。
如果检测到新版本,则自动下载并更新客户端。
更新完成后,自动启动新版本的软件(原软件可退出)。
具体实现要求:
版本检测接口
客户端通过接口 A 来获取服务器上最新的版本信息。
接口 A 的完整 URL 必须配置在软件的配置文件中:
WebView2App.exe.config
默认配置值:http://192.168.0.250/snbcemsuwin/version.json
WebView2App.exe.config中的配置项的名称请不要使用A,应该采用语义化命名的参数
接口返回数据格式:
{
"version": "1.0.0.0",
"url": "http://192.168.0.250/snbcemsuwin/1.exe"
}
version:服务器端最新版本号(字符串格式,推荐使用四段式版本号:如 1.0.0.0)
url:新版本 exe 文件的下载地址
版本对比逻辑
获取本地当前 exe 文件的版本号(FileVersion 或 AssemblyVersion)。
将服务器返回的 version 与本地版本号进行对比。
如果服务器的 version 大于 本地版本,则触发自动更新流程。
请检查现在编译exe文件时是否会自动增加版本号,如果不会请开启这个功能
自动更新流程
下载 url 中指定的新版本 exe 文件。
完成下载后,安全地替换当前运行的 exe 文件(或采用常见的安全更新方式,例如下载到临时目录,替换后重启)。
更新成功后,自动启动新版本的软件,并退出旧版本进程。我想要这个自动更新的功能在windows7和windows10中都可以正常使用,所以下载文件的临时目录请保证在两个系统中都可以使用
附加要求:
接口 URL 必须可通过配置文件 WebView2App.exe.config 灵活修改,便于后续部署到不同环境。
请优先考虑更新过程的稳定性与用户体验(例如:显示更新进度、错误处理、更新失败时仍能启动旧版本等)。
建议采用静默更新(无弹窗打扰用户),或根据实际需要提供简洁的更新提示。
```