不能直接用了;从VS2022起Setup Project不再默认集成,且对.NET6+ SDK项目支持不稳定,尤其在WindowsDesktop SDK或单文件发布时易报平台不支持错误。

Visual Studio 自带的 Setup Project 能用吗?
不能直接用了。从 Visual Studio 2022 开始,Setup Project(即 Microsoft Visual Studio Installer Projects 扩展)已不再默认集成,且对 .NET 6+ 的 SDK 风格项目支持不稳定——尤其是当你用了 Microsoft.NET.Sdk.WindowsDesktop 或发布为单文件(PublishSingleFile=true)时,经常报错 The project targets a platform that is not supported by this setup project。
实际建议:别硬扛,换更现代、可控的方式。
推荐方案:使用 WiX Toolset + VS 插件生成 MSI
WiX 是 Windows 平台事实标准的开源安装包构建工具,能精准控制注册表、服务安装、自定义操作、UAC 提权等,且与 C# 项目解耦,适配所有 .NET 版本。
实操要点:
- 安装
WiX Toolset(官网下载 v4.x,注意选带burn.exe的完整版)和 VS 插件WiX Toolset Visual Studio Extension - 在解决方案中右键 →
Add → New Project → Setup Project (WiX),会生成Product.wxs - 关键修改点:
下指定主程序路径,用包裹引用编译输出 - 若需 .NET 运行时检查,加
和对应
生成后双击 setup.msi 即可安装,日志可通过 msiexec /i setup.msi /l*v install.log 查看。
快速替代方案:Squirrel.Windows 打包成 EXE 安装器
适合想跳过 MSI 复杂性、又需要自动更新能力的桌面应用(WinForms/WPF)。它不依赖系统 MSI 服务,纯 C# 实现,打包结果是单个 Setup.exe。
步骤精简:
- NuGet 安装
Squirrel.Windows到你的主项目 - 命令行执行:
squirrel --releasify YourApp.1.0.0.nupkg --setupIcon=app.ico - 确保
YourApp.1.0.0.nupkg中包含lib/net472/YourApp.exe(或对应目标框架)和全部依赖 DLL - 生成的
Setup.exe会静默安装到%LocalAppData%\YourApp,并创建开始菜单快捷方式
注意:Squirrel 不支持安装 Windows Service 或写 HKLM 注册表,这类需求仍得回 WiX。
常见坑:图标丢失、DLL 找不到、安装后打不开
根本原因往往不是打包工具本身,而是路径和依赖没理清:
-
App.config或appsettings.json没被复制进安装包 → 在Product.wxs中显式添加并设KeyPath="yes" - 第三方 native DLL(如 SQLite、FFmpeg)未标记
Copy to Output Directory = Copy always→ WiX 默认只打包TargetPath输出,不递归依赖 - 启动时报
System.IO.FileNotFoundException→ 用Dependencies.exe(微软官方工具)打开安装后的 EXE,看缺失哪些 DLL 或 API-SET - WPF 应用安装后字体/样式异常 → 确保
ThemeInfoAttribute引用的资源字典路径在安装时被正确部署,不要用相对路径硬编码
最易被忽略的一点:WiX 构建时默认以 Release 配置为目标,但如果你的项目在 Debug 下启用了某些调试逻辑(比如检查 Debugger.IsAttached),安装包运行时可能行为异常——务必在 Release 模式下完整测试安装流程。










