【AI】VS2026 + .NET Framework 4.8 WPF 完整打包安装程序流程(Installer Projects 官方MSI方案)

📅 2026/7/21 6:40:22
【AI】VS2026 + .NET Framework 4.8 WPF 完整打包安装程序流程(Installer Projects 官方MSI方案)
VS2026 .NET Framework 4.8 WPF 完整打包安装程序流程Installer Projects 官方MSI方案适用WPF .net48、第三方DLL不丢失、生成标准Setup.exeMSI、带桌面快捷方式、自动检测.NET4.8框架、支持升级覆盖旧版本前置准备1. 安装打包扩展只做一次VS顶部菜单扩展 → 管理扩展切换「联机」搜索Microsoft Visual Studio Installer Projects下载安装关闭VS2026再重启生效2. 规范第三方DLL存放避免编译/打包丢失在WPF项目根目录新建文件夹Libs所有第三方dll复制进Libs禁止放到 bin/Debug / bin/Release选中Libs里的dll右键属性生成操作无复制到输出目录如果较新则复制添加dll引用右键项目→添加引用→浏览选中Libs内dll解决方案资源管理器→引用→选中刚添加的dll右键属性复制本地True特定版本False3. WPF项目 csproj 关键配置.net48专用右键项目→编辑项目文件确认如下删除任何SelfContained/PublishSingleFile4.8不支持ProjectToolsVersion15.0xmlnshttp://schemas.microsoft.com/developer/msbuild/2003ImportProject$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.propsConditionExists($(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props)/PropertyGroupConfigurationCondition$(Configuration) Debug/ConfigurationPlatformCondition$(Platform) AnyCPU/PlatformProjectGuid{你的项目GUID}/ProjectGuidOutputTypeWinExe/OutputTypeRootNamespaceWpfNet48Demo/RootNamespaceAssemblyNameWpfNet48Demo/AssemblyNameTargetFrameworkVersionv4.8/TargetFrameworkVersionUseWPFtrue/UseWPFUseWindowsFormsfalse/UseWindowsFormsApplicationIcon/StartupObject//PropertyGroup!-- 第三方DLL引用示例 --ItemGroupReferenceIncludeMyThirdDllHintPathLibs\MyThirdDll.dll/HintPathCopyLocaltrue/CopyLocalSpecificVersionfalse/SpecificVersion/Reference/ItemGroup!-- 将Libs下dll纳入项目打包复制 --ItemGroupNoneIncludeLibs\MyThirdDll.dllCopyToOutputDirectoryPreserveNewest/CopyToOutputDirectory/None/ItemGroupImportProject$(MSBuildToolsPath)\Microsoft.CSharp.targets//Project4. 先编译Release版本重要解决方案平台切换Release | x64推荐避免32/64位非托管dll异常右键WPF项目→重新生成确认bin\Release内exe所有第三方dll齐全无缺失一、新建安装项目Setup解决方案右键 → 添加 → 新建项目搜索Setup Project安装项目名称自定义如AppSetup创建新建后左侧文件视图4个目录说明Application Folder程序安装主目录User’s Desktop桌面快捷方式User’s Programs Menu开始菜单程序组Global Assembly Cache FolderGAC全局程序集极少用二、导入WPF主程序全部依赖核心步骤右键Application Folder→ 添加 → 项目输出项目选择你的 .net48 WPF工程输出主输出.net48固定选这个不要发布项配置Release平台x64→ 确定此时VS会自动抓取exe、所有引用dll、Libs第三方dll全部放入安装目录补充非托管C/COM DLL没自动打包时手动添加右键Application Folder → 添加 → 文件选中Libs里对应dll手动导入。三、创建桌面 开始菜单快捷方式点开Application Folder找到「主输出来自 xxx(活动)」右键 → 创建快捷方式重命名为软件正式名称如「工具客户端」把这个快捷方式拖拽到Users Desktop桌面图标再复制一份快捷方式拖到Users Programs Menu开始菜单可选右键快捷方式→属性→Icon导入ico程序图标四、配置安装项目全局属性版本、升级、厂商解决方案资源管理器选中AppSetup安装项目右侧打开【属性】面板| 属性 | 填写说明 || ---- | ---- || ProductName | 软件对外显示名称 || Manufacturer | 公司/开发者名称 || Version | 版本号如1.0.0升级必须递增 || RemovePreviousVersions | True安装时自动卸载旧版本 || InstallAllUsers | True所有用户可用需要管理员权限 || Output File Name | 输出msi文件名如Setup_v1.0.0.msi|右键安装项目 → 属性窗口左上角【先决条件】按钮关键4.8配置先决条件设置检测.NET Framework4.8勾选Microsoft .NET Framework 4.8 (x86 和 x64)下载位置三选一在线分发有网客户从组件供应商网站下载离线内网无网络从与我应用程序相同的位置下载系统必备组件需手动下载 .NET4.8 离线安装包 ndp48-x86-x64-allos-enu.exe放到Setup输出目录确定保存五、可选配置修改安装目录、添加许可协议、卸载菜单右键安装项目 → 视图 → 文件系统调整目录、快捷方式右键安装项目 → 视图 → 注册表写入软件注册表配置右键安装项目 → 视图 → 用户界面添加许可协议、欢迎页、完成页文字六、生成安装包解决方案配置确认Release | x64右键安装项目AppSetup→生成输出路径解决方案目录下AppSetup\Release产出两个文件xxx.msi标准Windows安装包setup.exe引导程序优先发给客户使用客户安装逻辑说明.NET4.8专属客户双击setup.exe先检测系统是否安装.NET Framework4.8未安装自动跳下载/本地离线安装包安装框架框架就绪后安装主程序自动创建桌面开始菜单图标控制面板「程序和功能」可正常卸载、修复软件新版本打包只需要提升Setup项目Version旧版本自动覆盖删除高频踩坑解决.net48专属重新编译后第三方dll打包丢失确认dll放在项目Libs、CopyLocalTrue、复制到输出目录如果较新则复制不要放在bin。客户电脑运行提示缺少dllRelease编译再打包非托管dll手动添加到Application Folder。Win7安装提示框架不支持.NET4.8最低Win10 1903/Win11Win7最高仅支持.NET4.7.2。升级安装残留文件Setup属性RemovePreviousVersionsTrue每次打包Version递增。打包体积过大切换Release模式删除项目Debug多余资源、日志文件。交付客户文件清单setup.exe xxx.msi必带离线场景额外附上.NET Framework 4.8 离线安装包 ndp48-x86-x64-allos-enu.exe使用说明文档