本项目基于 DuiLib 的 UI 框架和 C++ 调用 Win32 API 开发,提供了功能完整的 Windows 应用安装/卸载解决方案。具有以下特点:
- 轻量级:整体体积仅 2MB+,无需额外依赖
- 数据上报:内置 Analytics 支持,可追踪安装/卸载行为
- 界面灵活:采用类 HTML 的 XML 布局方式,易于定制
- 国际化:支持中英文等多语言切换
- 用户友好:提供进度显示、协议确认、路径选择等完整安装体验
| 快速安装 | 自定义安装 | 卸载界面 |
|---|---|---|
![]() |
![]() |
![]() |
#define APP_NAME L"InvoxApp" // 应用名称
#define APP_PRODUCT_NAME L"InvoxApp" // 产品名称
#define APP_VERSION L"1.0.0" // 应用版本
#define APP_PUBLISHER L"YourCompany" // 发布者
#define APP_EXE_NAME L"InvoxApp.exe" // 主程序名
#define APP_UNINSTALL_NAME L"Uninstaller.exe" // 卸载程序名
#define APP_ARCHIVE L"app.7z" // 安装包文件名
#define APP_REGISTRY_KEYS L"InvoxApp" // 注册表键
#define PRIVACY_URL L"https://..." // 协议地址
#define ANALYTICS_ENDPOINT L"https://..." // 分析 API 端点- 将需要安装的文件压缩为
app.7z,放在:bin/app.7z - 确保卸载程序
Uninstall.exe包含在app.7z压缩包根目录中 - 把
Installer/Res/*中资源压缩为Installer/Res/resources.zip - 把
Uninstaller/Res/*中资源压缩为Uninstaller/Res/resources.zip
Res/images/*Res/resources/*Res/*.xml/Res/*.xml
语言文件位于 Res/resources/ 目录:
lan_cn.xml- 中文语言包lan_en.xml- 英文语言包
程序会根据系统语言自动选择对应的语言包。
- Visual Studio 2010 或更高版本
- DuiLib 库已正确配置
- Windows SDK
- 打开 Visual Studio
- 分别编译 Installer 和 Uninstaller 项目
- 编译后的 Debug 程序需要如下资源配合使用:
- Installer.exe
- Uninstaller.exe
- Res 文件夹
- 7zxa.dll
- app.7z(压缩的应用文件)
- 编译后的 Release 为独立可运行的程序
- Installer.exe
- Uninstaller.exe
安装程序会在以下位置写入注册表:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\<APP_REGISTRY_KEYS>
或
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\<APP_REGISTRY_KEYS>
包含以下键值:
- DisplayName - 显示名称
- DisplayVersion - 版本号
- Publisher - 发布者
- InstallLocation - 安装路径
- UninstallString - 卸载命令
- QuietUninstallString - 静默卸载命令
- EstimatedSize - 估计大小(KB)
- NoModify - 禁用修改
- NoRepair - 禁用修复
提供了 HTTP POST 方式上报数据到服务器的功能,上报超时默认 6s
- device_id - 设备唯一编号
- app_name - 应用名称
- version - 应用版本
- os_version - 系统版本
- timestamp - 上报时间戳
CAnalytics::GetInstance()->ReportInstall(
m_strInstallPath // 安装路径
);上报数据格式(JSON):
{
"event_type": "install",
"device_id": "{GUID}",
"app_name": "InvoxApplication",
"version": "1.0.0",
"install_path": "C:\\Program Files\\InvoxApplication",
"os_version": "Windows 10.0",
"timestamp": "2025-10-11 12:30:45"
}CAnalytics::GetInstance()->ReportUninstall(
reason, // 卸载原因
feedback // 用户反馈
);上报数据格式(JSON):
{
"event_type": "uninstall",
"device_id": "{GUID}",
"app_name": "InvoxApplication",
"version": "1.0.0",
"reason": "不需要了",
"feedback": "功能不符合需求",
"timestamp": "2025-10-11 12:35:20"
}编辑 Res/installer.xml 或 Res/uninstaller.xml 文件即可修改界面布局。
主要 DuiLib 控件:
Window- 窗口VerticalLayout/HorizontalLayout- 布局容器Label- 文本标签Button- 按钮CheckBox- 复选框Option- 单选按钮Edit/RichEdit- 文本编辑框Progress- 进度条Container- 容器
在 XML 中使用以下属性:
bkcolor- 背景颜色(格式:#AARRGGBB)forecolor- 前景颜色textcolor- 文本颜色bordercolor- 边框颜色font- 字体 ID(在 XML 开头定义)normalimage/hotimage/pushedimage- 按钮图片
本项目基于 DuiLib 开发,请遵守 DuiLib 的许可协议。
基于 DuiLib Ultimate 框架开发


