首页/新闻资讯/正文详情

VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具

发布时间:2026/11/5 9:03:55 来源:云帆数科 栏目:资讯中心
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
文章目录1. 安装 Microsoft Visual Studio Installer Projects 20222. 添加 Setup Project3. 在 File System 中添加相关文件及项目输出4. Qt 部署5. 生成桌面快捷方式6. 修改桌面快捷方式图标参考资料本文适用情况为已经通过 visual studio 平台开发并测试好了程序或软件需要打包成 exe 文件部署到其他电脑之上。本人所测试的开发项目背景是开发平台Visual Studio 2026开发语言C界面组件Qt 6.11.1其他组件VTK-9.6.21. 安装 Microsoft Visual Studio Installer Projects 2022在 Visual Studio 顶部菜单栏找到 Extensions依次点击Extensions - Manage Extensions然后在弹出的搜索框搜索installer并点击install。之后退出 Visual Studio因为只有关闭 Visual Studio 才能进行功能的添加和修改。跟随弹出的小窗口操作即可。成功之后再次重启 Visual Studio 即可。Microsoft Visual Studio Installer Projects 2022 是微软为 Visual Studio 2022 提供的一款扩展插件专门用于将开发好的桌面应用程序打包成标准的安装程序如.msi或Setup.exe文件。主要功能和作用创建安装包能把你的 C#、VB.NET 等桌面程序如 WinForms、WPF 项目以及相关的类库、资源文件打包在一起。生成标准格式支持生成 .msiWindows Installer或传统安装执行文件方便分发给用户在 Windows 系统上安装。配置安装环境可以设置桌面快捷方式、开始菜单图标。可以配置注册表项、文件关联等系统设置。可以检测并自动引导安装依赖项例如 .NET Framework 环境。适用场景当你开发完一个 Windows 桌面软件需要发给客户或发布到网上让普通用户通过类似“下一步、下一步”的图形界面来安装而不是简单地把一堆 .dll 和 .exe 压缩包发给对方时就可以使用这个工具。2. 添加 Setup Project刚才安装的 Microsoft Visual Studio Installer Projects 是扩展工具接下来利用这个工具创建安装包项目Setup Project这个安装包项目才是用来把我们的工程可执行文件setup.exe、.dll和相关资源文件打包成.msi或setup.exe文件的。这里我们假定你的工程名字为XYZ。接下来右键你的工程Solution XYZ然后依次选择Add - New Project在搜索框搜索setup然后选择Setup Project一直下一步即可。之后我们便得到了用来打包我们的XYZ工程的 File System 编辑器这是用来决定安装时把文件放到目标电脑的哪些位置。Application Folder应用程序文件夹程序的安装目录。通常把 XYZ.exe、Qt/VTK DLL以及程序运行需要的资源文件放这里。User’s Desktop用户桌面放桌面快捷方式。一般添加一个指向 XYZ.exe 的快捷方式。User’s Programs Menu用户开始菜单放开始菜单快捷方式。也可以在这里建一个程序文件夹再放快捷方式。现在看到的这三个是安装位置分类不代表里面已经有程序文件。3. 在 File System 中添加相关文件及项目输出右键Application Folder然后选择Add → Project Output…添加 XYZ 的Primary Output。随后把需要随程序安装的DLL和资源也加入这里。然后右键 Setup Project默认名字为Setup1点击build即可在文件夹中看到生成的setup.exe和Setup1.msi文件将这两个文件发送到待安装电脑运行setup.exe即可。如果没有其他特别的要求以上就是核心打包流程了。再往之后的内容就是根据不同的需求以及不同的工程文件类型所独有的一些操作了。Add Project Output Group添加项目输出组窗口。它决定从 XYZ 项目里把哪一类生成文件加入安装包。选项包含什么通常怎么用Primary Output项目生成的主程序.exe或.dll必选。你的应用通常选这个Resource Satellite DLLs按语言生成的本地化资源 DLL只有程序使用这类资源 DLL 时才选不确定时先不加Debug Symbols调试符号文件通常是.pdb正式安装包通常不需要排查崩溃时可另行保留Content Files项目中标记为 Content 的文件只有项目把需要的文件正确标记为 Content 时才选仍要检查是否包含了运行所需资源Source Files源代码文件通常不应放进给用户安装的程序包Documentation Files项目文档文件需要随程序提供说明文档时再选4. Qt 部署因为我开发的工程还用到了 Qt所以需要进行 Qt 部署。如果待打包的工程没有用到 Qt则可以跳过这一步。Qt 的部署采用windeployqt运行名称为Qt 6.11.1 (MSVC 2022 64-bit)命令提示符工具这里需要注意版本匹配问题有 MSVC 和 MinGW需要采用和你工程开发一致的版本。具体可以在你的 visual studio 工程查到路径为Extension - Qt VS Tools - Qt Versions.确认命令提示符的版本后打开并运行如下指令windeployqt--releaseD:\Deploy\XYZ.exe这一步会借助 windeployqt 工具找寻相关的 Qt 组件并将其复制到你的XYZ.exe文件夹下。这里的所有内容都是需要复制到步骤 3 中的Application Folder且注意要保持同样的文件结构。5. 生成桌面快捷方式如果想要安装后的程序自动创建桌面快捷方式那需要先定位步骤 3 的Application Folder然后在其中找到主输出Shortcut to %sPrimary Output from JawDynamics (Active)之后右键选择Create Shortcut to Primary Output from XYZ ...然后就会得到默认文字为Shortcut to %sPrimary Output from XYZ ...的快捷方式。将得到的快捷方式移动到Users Desktop文件夹下同时可以修改这个快捷方式的名字。之后再次 Build 就可以了。6. 修改桌面快捷方式图标确认手里有真正的 .ico 文件PNG 图片不能直接当快捷方式图标用。在Setup1的Application Folder里用Add → File…加入这个 .ico 文件。选中User’s Desktop里的快捷方式右键按打开Properties Window。然后点 Icon 这一行的 (Icon)在弹窗里选择刚加入项目的 .ico 文件并确认。注意别只选中 Icon 这一行就关闭窗口。重新生成Setup1。在测试电脑上卸载旧版本后安装新包再看桌面图标。参考资料C程序打包生成EXE——以VS2019为例五分钟教会你vs程序打包全程无废话

相关推荐

生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查
生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查

本文摘要:开启虚拟线程后线程告警消失,HikariCP 连接池超时却更早出现。先用 JFR 事件排除 synchronized 阻塞,再按并发预算重算连接池容量。 一、问题与结论 凌晨告警:http-nio-8080-exec-* 200 个处理线程全部阻塞,… · 2026/11/5 9:02:54

附录 B · OLLVM(Obfuscator-LLVM,基于 LLVM 的开源代码混淆框架)自定义 Pass 开发环境搭建
附录 B · OLLVM(Obfuscator-LLVM,基于 LLVM 的开源代码混淆框架)自定义 Pass 开发环境搭建

附录导读本附录手把手教你写一个自定义的 LLVM 混淆插件(Pass)。OLLVM 是最知名的开源混淆框架,学会写 Pass,你就能定制自己的混淆规则——比如决定哪些函数混淆、用什么方式混淆。什么是 Pass? Pass 就是 LLVM 编译流… · 2026/11/5 9:02:54

【工程师选酒避坑指南】一桌家常菜,配什么酒
【工程师选酒避坑指南】一桌家常菜,配什么酒

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 8:59:48

用 CLion 定位基于 RK3568 嵌入式 Linux 5.10.160 Core Dump 崩溃问题
用 CLion 定位基于 RK3568 嵌入式 Linux 5.10.160 Core Dump 崩溃问题

嵌入式 Linux 上调试偶发崩溃是件头疼事:现场复现成本高、串口打印有限、gdb 直接 attach 又会打断业务。把 core dump 落盘、拿回开发机用 CLion 慢慢分析,是性价比最高的做法。本文以飞凌 OK3568 开发板(RK3568, Linux 5.10.160, Buildroot)为例,走完"板上开启 cor… · 2026/11/5 9:05:57

平均响应两小时,对方却觉得三天没人理:企业微信聊天记录导出的效率分析攻略
平均响应两小时,对方却觉得三天没人理:企业微信聊天记录导出的效率分析攻略

月度复盘会上摆了两张纸。 左边是一张统计表,上面写着平均首次响应时长两小时十四分,比上个月快了十一分钟,看起来是件好事。右边是三段从聊天记录里摘出来的原话,最短的一段只有八个字:三天了,没人回我。 … · 2026/11/5 9:05:57

File、IO流
File、IO流

File用于操作文件,IO流用于读写数据1.File文件对象常用方法package com.popo.filedemo;import java.io.File; import java.io.IOException;public class FileDemo1 {public static void main(String[] args) throws Exception {// 文件对象常用方法File f1 new Fil… · 2026/11/5 9:04:56

Python77:核心语法-面向对象基础-概述
Python77:核心语法-面向对象基础-概述

面向过程编程核心思想:把一个需求分解成一系列要执行的步骤,然后按照步骤依次执行这些任务(关注的是流程、步骤)。适用场景:面向过程编程非常直接,适合简单、线性的任务。面向对象编程对象可以理解为现实中… · 2026/11/5 9:03:55

VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具

文章目录1. 安装 Microsoft Visual Studio Installer Projects 20222. 添加 Setup Project3. 在 File System 中添加相关文件及项目输出4. Qt 部署5. 生成桌面快捷方式6. 修改桌面快捷方式图标参考资料本文适用情况为:已经通过 visual studio 平台开发并测试好了程序… · 2026/11/5 9:03:55

生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查
生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查

本文摘要:开启虚拟线程后线程告警消失,HikariCP 连接池超时却更早出现。先用 JFR 事件排除 synchronized 阻塞,再按并发预算重算连接池容量。 一、问题与结论 凌晨告警:http-nio-8080-exec-* 200 个处理线程全部阻塞,… · 2026/11/5 9:02:54

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码