引言

在VS下用C++写了一个贪吃蛇游戏,运行和调试都好好的,但是生成的exe应用程序却没有背景图和音乐,连墙都搞没了。于是百度了一下VS如何打包程序,大部分文章都说的不仔细,下面分享一下经验。

环境

操作系统:Windows 11 家庭中文版 21H2
系统版本:22000.978
VS版本:Visual Studio 2022 4.8.04161
程序语言:C++

打包

1.安装VS自带的打包工具

打开VS,打开要打包的项目,点击最上方的扩展,点击管理扩展
管理扩展中找到Microsoft Visual Studio Installer Projects 2022,下图是我已经安装好了的,所以右上角有绿色的勾;没有安装过的情况是:右下角有下载按钮,点击下载按钮,等待下载完成后,退出VS,然后会自动有弹窗提示安装插件,过程也就两三步,不复杂,全点“是”就完事了。安装结束后,我重启了电脑(不重启应该也能用这个插件了),重新打开VS和项目。

2.在源项目中新建Setup项目

解决方案资源管理器中右键点击你所创建的解决方案,选择添加,选择新建项目

在搜索框中搜索"setup",在候选中选择Setup Project,点击下一步

填写好项目名称,选择这个Setup项目要保存的路径,然后点击创建

然后会弹出如下界面,可以看到新创建的Setup Project被加入到了解决方案资源管理器中,并打开了一个File System文件,以及3个文件夹。

右键解决方案,点击在文件资源管理器中打开文件夹,打开源项目所在的文件夹。


上面的Application Folder可以理解对应到源项目文件夹snake,而snake文件夹下有.vs、audio、pic、x64几个文件夹,所以按照层级关系,在Application Folder文件夹下也要建立相应文件夹,但是我们只关心程序外的图片、声音等数据是否能加载到最终的程序中,因为我的背景图放在pic,而BGM放在audio,所以我只需要在Application Folder下建立pic和audio文件夹即可。右键点击Application Folder,点击Add,点击Folder

用此方式在Application Folder下创建audio和pic两个文件夹。

右键点击audio文件夹,点击Add,点击文件

将源项目中对应文件夹下的音频文件添加到Setup项目中的audio文件夹下,并以同样方式将源项目文件夹下的图片文件添加到Setup项目中的pic文件夹下。由于我写的贪吃蛇还有关卡的墙体数据,放在了和源项目同级的文件夹中,所以还需要右键Application Folder添加地图文件。源项目文件结构如下(可以看到pic、audio、项目文件以及地图文件[mapx.txt]是同级,所以在Application Folder中也要按照这个层级来添加文件):

Application Folder文件添加结果如下:



最后邮键点击Application Folder,点击Add,点击项目输出,选择主输出,点击确定,在Application Folder下会有output类型的文件生成,这就是主程序了。

3.添加快捷方式

右键点击主程序,选择Create Shortcut to 主输出…(Active),然后就会生成Shortcut类型的文件,这就是快捷链接了:

将该快捷链接从Application Folder文件夹剪切到User’s Desktop文件夹(这样在安装程序的时候会自动在桌面生成快捷方式):

4.添加应用程序图标

系统自带的应用图标是毫无特色的,所以按照需要可以手动添加。在修改默认图标之前,需要有一张已经OK的图标文件(.ico文件)。选择一张心仪的图片,尽量修改成NN的正方形尺寸,比如400400,然后随便百度一个在线生成ico的网站,将图片修改成ico文件,如果图片不是正方形尺寸,那么最后的ico效果可能是扁平或者是瘦的。
再回到VS,右键点击Application Folder,点击Add,点击文件,将生成的ico文件添加进来。

右键点击快捷链接文件,选择属性窗口

找到杂项中的Icon,默认是None,也就是没有图标,将由系统分配,按照下图步骤手动添加ico文件:

点击Browse…

双击Application Folder

选择刚刚添加进Application Folder中的ico文件,点击OK,这样就把应用图标从默认换成想要的了。

5.生成程序

右键点击Setup项目,点击重新生成,然后在保存Setup Project的文件夹中就生成了可以安装的.msi文件,注意,VS上面如果选择的是Debug,那么生成的msi文件就在Debug文件夹下,如果是选择的Release,那么就在Release文件夹下。


双击msi文件,安装生成的应用程序,就可以在桌面点击快捷方式打开应用了!

参考视频

链接: 软件打包

如何使用VS打包C++程序相关推荐

  1. 发布文件打包springboit_程序安装包咋制作的?Qt程序打包三部曲,从应用程序到安装包...

    前言 本章节主要是讲解下如何打包Qt程序.Qt使用自带的windeployqt 处理依赖库生成exe来发布软件. 准备exe 1.程序要想发布,在编译器编译一定要选择"release&quo ...

  2. 怎样用QT在windows环境通过编程卸载installShield打包的程序

    通常情况下,如果是一个完备的软件,我们可以通过启动软件的uninstaller.exe之类的程序来完成卸载.但是使用installShield打包的程序,本身可能并不含有这类卸载程序.此时,我们可以通 ...

  3. 教你打包Java程序,jar转exe随处可跑

    本文出自One Coder博客,转载请务必注明出处:http://www.coderli.com/archives/runnablejar-to-exe/ 发现很多人问如何把Jar转成exe程序.可能 ...

  4. VS2013打包VC++程序

    想要实现效果是像其他应用程序比如QQ一样 让用户自定义安装 第一步:在当前工程下 鼠标右键 Solution(解决方案)->Add ->New Project 具体如图: 打开后如图片: ...

  5. exe打包工具_pyqt5快速上手基础篇12-使用Pyinstaller打包应用程序

    前言 本节我们学习如何使用Pyinstaller打包pyqt5应用程序,pyqt5的打包要比之前文章中讲述的tkinter的打包稍微复杂点,主要区别在于pyqt5打包需要导入Qt相关库,笔者开始打包时 ...

  6. 使用cx_freeze打包Python程序

    使用cx_freeze打包Python程序 [Python俱乐部] 使用cx_freeze打包Python程序 平时打包Python查询都用的是py2exe,发现还有个打包程序cx_Freeze,好像 ...

  7. 用freeze.py打包python程序成可执行程序(linux)

    用freeze.py打包python程序成可执行程序(linux) 2009-12-16 19:55:13 分类: 用freeze.py打包python程序成可执行程序(linux)    为了将一批 ...

  8. pyinstaller打包exe程序教程推荐及需要注意的点

    Python PyInstaller安装和使用教程(详解版) http://c.biancheng.net/view/2690.html 1.pyinstaller打包程序中出错是正常的,报错要注意看 ...

  9. linux下qt多个程序打包,解决Ubuntu下使用linuxdeployqt打包Qt程序问题

    写了点Qt界面程序,然而发现很难移植到其他没有安装Qt环境的电脑上运行.查资料了解到,在windows上有windowsdeployqt程序,linux上有linuxdeployqt可以帮助我们快速打 ...

  10. 使用pyinstaller打包pyqt程序

    2019独角兽企业重金招聘Python工程师标准>>> 首先声明我的开发环境是windows+anconda,pyqt使用的是anconda自带的,没有单独再安装pyqt,下面上py ...

最新文章

  1. 项目中常用的 19 条 MySQL 优化总结
  2. ACM 模板--邻接表 无向图 搜索算法
  3. mysql排序时设置主次_Mysql实现Rownum()排序后根据条件获取名次
  4. HTTP协议(3)浏览器的使用之查看源码
  5. Spring项目的按层打包已过时
  6. 公有链、私有链、联盟链、许可链,这些区块链又分别代表着什么意思?
  7. init.d文件夹 2012-02-09
  8. log4j 打印线程号配置_Log4J日志整合及配置详解
  9. CentOS6.x 下 LNMP环境搭建(二、安装 Nginx)
  10. VS2005、vs2008+WinXPDDK+DDKWizard配置驱动开发环境
  11. 《C语言小游戏之贪吃蛇程序代码》
  12. manjaro安装微信
  13. 消息中间件RabbitMQ
  14. mysql 中auto_mysql中的auto_increment
  15. 克鲁斯卡尔算法(Kruskal Algorithm)——图的最小生成树
  16. 【CAD-Web】CAD/DWG的Web化
  17. PHOTOSHOP基本概念解释【转】
  18. 企业为什么需要做APP安全评估?
  19. 鼠标可拖动的浮动层效果
  20. MODBUS调试工具(modscan32)使用说明

热门文章

  1. ITeye,还IT淫一个简洁的首页吧!
  2. String类的全面总结[java]
  3. 下列python语句的输出结果是print_下列 Python语句的输出结果是
  4. FOC 电流采样方案对比(单电阻/双电阻/三电阻)
  5. 华硕主板如何设置开机自启_华硕主板启动项怎么设置
  6. Flume 监控之 Ganglia 的安装与部署
  7. PowerBI 获奖作品展示
  8. 华为电脑无法打开热点,点击按钮之后手机搜索不到怎么办?
  9. 看完你的博文,我的心情竟是久久不能平复
  10. 【经济学】读曼昆《微观经济学》