使用Microsoft Visual Studio Installer Projects 2022打包桌面程序

news2024/9/22 21:34:27

安装扩展程序

在Visual Studio中点击扩展->管理扩展,搜索并安装Microsoft Visual Studio Installer Projects 2022
在这里插入图片描述

安装程序打包

新建打包项目

在当前解决方案下添加Setup 项目,添加新项目时,搜索并选择使用上一步安装的Setup Project模版。
在这里插入图片描述

配置打包项目

上一步打包项目新建成功之后,Visual Studio右侧界面自动显示三个文件夹,这三个文件夹就是打包项目的文件系统。接下来的打包配置基本上全部都集中在这三个文件夹中操作。
在这里插入图片描述
第一步:
首先把编译后的项目生成的bin目录下的所有文件和文件夹复制粘贴到Application Folder文件夹中:
(右键Add->文件,选择bin目录下的所有文件,文件夹无法直接加载,需要先Add->Folder,然后在新建的Folder路径下加载对应文件)
在这里插入图片描述
第二步
右击Application Folder文件夹,选择新建输出项目。如果你的解决方案中有多个项目,注意要选择正确的启动项目,然后点击确定。
在这里插入图片描述
第三步
添加桌面快捷启动方式:

  • 右击主输出,创建快捷方式。然后重命名快捷方式,这里最好重命名为你希望用户看到的程序名称。
  • 将重命名之后的快捷方式,拖拽到User’s Desktop文件夹下。

添加开始菜单的快捷启动方式:

  • 在Application Folder目录中,重复上面操作,右击主输出,创建快捷方式,然后重命名快捷方式。
  • 将重命名之后的快捷方式,拖拽到User’s Programs Menu文件夹下。
    在这里插入图片描述
    第四步
    配置卸载程序这一步,涉及到Windows系统的一个关键组件msiexec.exe,它是Windows Installer的命令行工具。Windows Installer是一个安装技术,用于安装、管理和删除软件,msiexec.exe用于执行安装程序和修补程序。
  • 右击application Folder文件夹,点击添加文件,选择C://Windows/System32/msiexec.exe,并将它重命名为UnInstall。
  • 右击UnInstall.exe文件,创建快捷方式,并重命名快捷方式。
  • 点击解决方案中的Setup Project项目显示属性窗口,属性窗口中有两个步骤需要操作,首先,根据打包后程序面向的系统平台,修改TargetPlatform的值,这个值一般是x86或者x64;然后找到ProductCode,并复制。
    在这里插入图片描述
  • 选择刚才创建的UnInstall.exe 的快捷方式,右键点击属性窗口,修改Arguments属性的值为/X ProduceCode值
  • 右键User’s Programs Menu新建文件夹并重命名,拖动UnInstall.exe的快捷方式,拖拽到User’s Programs Menu下的新建文件夹下。

第五步
这一步介绍如何配置应用程序的LOGO,需要提前准备好.ico文件。

  • 右击User’s Desktop目录下的应用程序快捷方式,在属性窗口中找到Icon属性
    在这里插入图片描述
    在弹窗的Icon窗口中,点击右上角Browse按钮:
    在这里插入图片描述
    双击Application Folder,进入文件夹内部:
    在这里插入图片描述
    点击Add File按钮,找到提前准备好的LOGO文件:
    在这里插入图片描述

第六步
完成前面五步配置之后,就可以生成可执行文件了,但是有时候还需要给安装程序添加一个许可协议的步骤。第六步主要介绍许可协议怎么添加。
在这里插入图片描述
如上图所示,在解决方案中右击Setup项目,在view中有文件系统、注册表、文件类型、用户界面等多个不同选项,前面四步操作中涉及到的三个文件夹,都属于view 中个文件系统(如果你不小心关闭后找不到这三个文件夹,可以在这里点击文件系统重新打开)。

  • 在配置许可协议的时候,选择上面的“用户界面”,在Start中右键选择“添加对话框”,然后选择对话框中的许可协议
    在这里插入图片描述
  • 添加许可协议后,在Start中就会显示“许可协议”这一项,右键点击许可协议,可以进行上移下移操作,按照惯例许可协议一般放在“欢迎使用”的后面,就像下面这样:
    在这里插入图片描述
  • 右键点开许可协议的属性窗口,在LicenseFile属性中配置许可协议文件(这里需要提前准备rtf格式的许可协议文件,配置方法和前面配置用户logo类似)
    在这里插入图片描述

打包安装程序

选中Setup Project项目,右键点击重新生成,打包成功后就可以在该项目的目录下找到程序安装包。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java学习Day42:骑龙救!(springMVC)

springMVC与sevlet都是对应表现层web的,但是越复杂的项目使用SpringMVC越方便 基于Java实现MVC模型的轻量级web框架 目标: 小案例: 1.导入依赖 spring-context: 提供 Spring 框架的核心功能,如依赖注入、事件发布和其他应用上…

嵌入式开发—CAN通信协议详解与应用(下)

书接上回: 嵌入式开发—CAN通信协议详解与应用(中)-CSDN博客 注:本文只是说明了如何进行基础的CAN收发操作,复杂CAN操作可以看这篇文章 Linux 底软开发——对CAN的详细操作(周期发送,异常检测…

VMware ESXi 8.0U3b 发布下载,新增功能概览

VMware ESXi 8.0U3b 发布下载,新增功能概览 同步发布 Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC (日电) 定制版 请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u3/&#…

3分钟了解 跨网文件安全交换的最佳方案是什么

跨网文件交换的背景介绍 跨网文件安全交换是指在不同网络环境下(如不同的组织、企业、机构或国家)进行文件传输时,确保文件的安全性、完整性和保密性。随着信息技术的发展和网络的广泛应用,跨网文件交换变得越来越普遍&#xff0…

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第五期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第五期] 第五期介绍:频道模块之接口授权管理和发言管理 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第五期]第五期介绍:频道模块之接口授权管理和发言管理获取机器人在频道可用权限列表…

电磁场与电磁波 1.1矢量基础知识

1.标量 2.矢量 大小方向 用有方向的线段表示 在直角坐标系下 3.运算法则 (1)加法:平行四边形法则 (2)乘法:点乘&叉乘 点乘 两个向量a与b的内积为 ab |a||b|cos∠(a, b),特别地,0a a0 0;若…

Kettle的安装与基本使用

什么是Kettle? Kettle最早是一个开源的ETL(Extract-Transform-Load的缩写)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。是一个功能丰富的ETL工具,它允许用户轻松地进行数据抽…

老板电器让AI融入烹饪?老板数字厨电实力展示AI做饭!

AI技术的迅猛发展已经深刻地改变了众多行业的面貌,其影响力远远超出了计算机科学本身的范畴。在追求生产效率与自动化的道路上,AI无疑成为最强大的驱动力之一,正是在这样的背景下,老板电器发布的「食神」AI大模型也为老板数字厨电…

国外创意二维码应用案例:韩国Cheil特别制作“希望胶带”,帮助寻找失踪儿童!

每年,在全世界都有大量的儿童失踪案件发生。对于父母来说,仅凭一张照片、一张海报要在茫茫人海里找到失踪的孩子,何其艰难? 2020年5月,韩国广告公司Cheil与韩国国家警察局宣布:为寻找长期失踪儿童&#xf…

VBA编写代码导出和导入类、模块、窗体

功能描述 为了方便备份代码,运行一个函数,导出类、模块、窗体。当在其他vba工程使用时,可以运行另外一个函数,快速导入代码。 1、开发人员宏设置:信任对VBA工程对象模型的访问 2、引用 Microsoft Visual Basic for A…

【非常实用—Navicat重置 MySQL 的密码】

Navicat重置 MySQL 的密码 连接本地数据库,忘记原始密码停止 MySQL 服务以安全模式启动 MySQL打开新的命令行窗口重置密码停止 MySQL 并重启 连接本地数据库,忘记原始密码 停止 MySQL 服务 在命令行中使用以下命令停止服务(Windows 下&#…

2024秋季学期期中考

密码 mmmd5 直接在网上找一个md5解密的网站现场来解就可以了。每一段都拼接起来就可以了。 但是的话,也可以直接用脚本,但是要用到MD5的字典。 它给了一个附件,可以借助此来解答。 那么我们主要来学习一下hash函数, 哈希函数&…

15.10 在k8s部署grafana-deployment并导入k8s大盘

本节重点介绍 : grafana deployment部署k8s大盘导入 准备yaml 部署工作 1. 修改yaml中的节点选择器标签 k8s-node01改为你自己的节点 2. 在节点上创建数据目录 mkdir -pv /data/grafana3. 部署grafana # 部署 kubectl apply -f deployment.yaml # 检查 [rootprome-mast…

CMU 10423 Generative AI:lec7、8、9(专题1:AE、VAE详解)

文章目录 1 AE(自编码器)1.1 自编码器干什么用的1.2 自编码器的架构图、输入输出、训练方法1.3 常见应用1.4 代码示例:图片的压缩存储和复原 2 VAE(变分自编码器)2.1 概述2.2 AE存在的问题:隐空间不平滑&am…

ad 明明已经给原理图库添加封装了,为什么还是看不到

不得不说,ad可能真的是比较庞大也不比较冗余,使用的过程中就会出现各种各样的问题,明明所有的操作都没问题,可是就是没能得到自己想要的,额 真的一言难尽 软件本身也很庞大了 各种东西可能一下子反应不过来&#xf…

谁的大一不迷茫?网络安全到底该怎么入门?

大一的新生,都在向我询问类似的问题: 网络安全要学的东西好杂,找不到方向了,迷茫了 同学们都在研究xxx,我要去学吗? 精力有限,我到底该学什么编程语言,好怕选错啊 最近下班比较早…

指针 (六)

OK,书接上回,咱们继续: 一 . 函数指针变量 (1)函数指针变量的创建 首先我们得明白,什么是函数指针变量呢?从我们之前学习过的整型指针,数组指针的相关知识当中,通过类…

【软件测试】什么叫测试?

生活中的测试 测试在生活中是处处可见的 例如:在商场购买衣服 外观测试:挑选符合个人审美的衣服试穿测试:选择尺码,试穿材质测试:考虑材质相关问题价格测试:价格是否符合预期 例如:在购物软件购…

【逐行注释】自适应观测协方差R的AUKF(自适应无迹卡尔曼滤波,MATLAB语言编写),附下载链接

文章目录 自适应R的UKF逐行注释的说明运行结果部分代码各模块解释 自适应R的UKF 自适应无迹卡尔曼滤波(Adaptive Unscented Kalman Filter,AUKF)是一种用于状态估计的滤波算法。它是基于无迹卡尔曼滤波(Unscented Kalman Filter&…

简单题58-最后一个单词的长度(Java and Python)20240918

问题的描述: python代码: class Solution(object):def lengthOfLastWord(self, s):""":type s: str:rtype: int"""# 去掉字符串前后的空格s s.strip()# 分割字符串,获取单词列表words s.split(" "…