使用VisualStudio2022制作安装包

总体介绍

解决方案里面需要有三个项目: Winform程序, Setup Project , 自定义配置项目(安装程序类)
1, Winform程序 就是你要打包的程序
2, Setup Project 就是制作安装包的
3, 自定义配置项目(安装程序类): 一个命令行项目里面只有一个安装程序类,用来控制安装后自动打开程序( 没有需求可以不要 )

一, 最简教程

1, 安装扩展

选择 扩展–>管理扩展–>联机 (或者选择 工具–>扩展和更新–>联机),搜索Microsoft Visual Studio Installer Projects,进行安装,安装好之后,重启vs(一定要重启)

2, 新建项目

选择 Setup Project 模板新建打包项目, 例如Setup1

3, 添加需要打包的项目

右键Setup1项目–> Add --> 项目输出 (一般会自动选中目标项目) --> 确定

4, 测试

"生成"没有报错后, 右键Setup1项目–>安装, 测试没问题就可以了

二, 安装配置

以安装后启动exe文件举例:
新建命令行项目, 右键项目–>添加–>新建项–>安装程序类, 修改代码如下:

// 安装后启动exe文件举例
[RunInstaller(true)]
public partial class Installer1 : System.Configuration.Install.Installer
{public Installer1(){InitializeComponent();}protected override void OnBeforeInstall(IDictionary savedState){Console.WriteLine("安装开始, 这里的代码用于测试和验证");string dir = "C://公司";if (!System.IO.Directory.Exists(dir)){Directory.CreateDirectory(dir);}}protected override void OnAfterInstall(IDictionary savedState){// 设置要打开的exe文件的路径string exePath = "C:\\公司\\产品\\APP.exe";// 安装后启动exe文件Process.Start(exePath);Console.WriteLine("安装结束");string dir = "C://公司//Success";if (!System.IO.Directory.Exists(dir)){Directory.CreateDirectory(dir);}}
}

这样就可以了, 生成exe, 在Setup->Add->文件, 把exe加进来
在右键项目->View–>自定义操作–>install–>右键"添加自定义操作", 选中刚刚加入的exe, 即可
安装的时候会自动执行Installer1里面的代码

三, 其他常见配置

直接修改Setup1.vdproj 文件

有一些配置在VS里面不好设置, 直接修改 Setup Project的项目主文件: xxxxx.vdproj
以我的项目举例: 用记事本打开 Setup1.vdproj 文件 , 搜索需要配置的项目进行修改

// 修改产品名: 就是在安装对话框里面显示的产品的名字
"ProductName" = "8:xxxxx"// 修改公司名称:
"Manufacturer" = "8:xxxxxxx"// 修改程序的默认安装路径, 例如安装到C盘根目录
"DefaultLocation" = "8:C:\\[Manufacturer]\\[ProductName]"// 修改默认为所有用户安装 :
"InstallAllUsers" = "11:TRUE"// 安装包需要以管理员权限运行 :  例如要修改注册表的时候
"RequiresElevation" = "11:TRUE"

添加桌面快捷方式

右键"主输出",创建一个快捷方式, 再把快捷方式拖动到 “User’s Desktop” 里面, 改个名字
在这里插入图片描述

注册DLL

有些dll需要注册
手动的命令类似这样: regsvr32 D:\grdes6.dll
这里可以设置安装时自动注册:
先把dll添加进来(Add->文件), 右键添加进来的dll设置“Register”属性为“vsdrfCOMSelfReg”。

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

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

相关文章

Windows USB设备驱动开发 - 常见概念的解释

我们听到许多 USB 术语几乎交替抛出。 它们都是什么意思?假设我们看到类似 “多亏了 USB 3.0,我可以将 SuperSpeed U 盘连接到电脑的 xHCI 主机控制器,并更快地复制文件。” 让我们了解该句子中的 USB 术语。 USB 3.0、USB 2.0 和 USB 1.0 请…

计网实训——不相同网段的PC相互通信

目录 提前准备APP路由器指令 实验一1、实验需求(1)实现同网段的PC相互通信。(2)实现不相同网段的PC相互通信。(3)分析相同和不同网段PC通信时MAC地址的变化。 2、实验拓扑3、实验步骤及实验截图&#xff08…

[数据结构】——七种常见排序

文章目录 前言 一.冒泡排序二.选择排序三.插入排序四.希尔排序五.堆排序六.快速排序hoare挖坑法前后指针快排递归实现:快排非递归实现: 七、归并排序归并递归实现:归并非递归实现: 八、各个排序的对比图 前言 排序:所谓…

uni-app 微信小程序开发到发布流程

1. uni-app 微信小程序开发到发布流程 1.1. 新建一个uni-app 项目 1.2. 发行微信小程序 1.3. 微信开发者平台的微信小程序appid 复制进来(点击发行) 1.4. IDE may already started at port xxxx, trying to connect (1)关闭微信…

小白上手AIGC-基于FC部署stable-diffusion

AIGC AIGC(人工智能创造内容)作为一种基于人工智能技术生成内容的新型创作模式。打破了过去大家对于AI的理解都是说只能涉足部分领域而无法涉足艺术或者是其他的创作领域的定律,现在的AIGC也能够创作内容了,而不再只是单纯的返回…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-45多尺度目标检测

45多尺度目标检测 # 多尺度锚框 """ 减少图像上的锚框数量并不困难。 比如,我们可以在输入图像中均匀采样一小部分像素, 并以它们为中心生成锚框。 此外,在不同尺度下,我们可以生成不同数量和不同大小的锚框。 直…

Apifox 更新|定时任务、内网自部署服务器运行接口定时导入、数据库 SSH 隧道连接

Apifox 新版本上线啦! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性: 自动化测试支持设置「定时任务」支持内网自部署服务器运行「定时导入」数据库均支持通过 SSH 隧道连接自动化测试数据库操作优化 1、自动化测试支持设…

Mac(M1芯片)安装多个jdk,Mac卸载jdk

1.jdk下载 oracle官方链接:oracle官方下载链接 2.安装 直接下一步,下一步就行 3.查看是否安装成功 出现下图内容表示安装成功。 4.配置环境变量 open -e .bash_profile 路径建议复制过去 #刷新环境变量 source ~/.bash_profile 5.切换方法 6.jdk…

企业应该如果安全上网,软件防查盗版,企业防盗版

随着信息化的发展,企业日常办公越来越依赖互联网。终端以及普通PC终端在访问互联网过程中,会遇到各种各样不容忽视的风险,例如员工主动故意的数据泄漏,后台应用程序偷偷向外部发信息,木马间谍软件的外联,以…

Spring Boot 过滤器和拦截器详解

目录 Spring Boot 过滤器1.什么是过滤器2.工作机制3.实现过滤器 Spring Boot 拦截器1. 什么是拦截器2. 工作原理3.实现4.拓展(MethodInterceptor 拦截器)实现 过滤器和拦截器区别过滤器和拦截器应用场景过滤器拦截器 Spring Boot 过滤器 1.什么是过滤器 …

信创认证 | Smartbi Insight V11成功适配申威3231处理器

在信息技术飞速发展的浪潮中,软硬件的深度融合与协同发展已成为推动行业创新的关键因素。 近日,思迈特商业智能与数据分析软件[简称:Smartbi Insight]V11在统信服务器操作系统V20和中电科申泰信息科技有限公司产品申威3231处理器环境下完成适…

日本职场跳槽涨薪调查报告!原来薪资涨幅的秘诀在这!

看到篇帖子,日本职场跳槽的调查报告: 文章中根据日本大型求职网站doda,通过分析网站注册会员的数据以及职业顾问的解说,来了解一下跳槽实现工资提升的人基本情况以及趋势。 本次调查对象跳槽后平均年收入提升了906,274日元&#…

Python 语法基础一

1.变量 python 中变量很简单,不需要指定数据类型,直接使用等号定义就好。python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量…

《昇思25天学习打卡营第10天 | 昇思MindSporeFCN图像语义分割》

第10天 本节学习了FCN图像语义分割。全卷积网络是用于图像语义分割的一种框架。FCN是首个端到端(end to end)进行像素级(pixel level)预测的全卷积网络。FCN有两大明显的优点:一是可以接受任意大小的输入图像&#xff…

【渗透工具】内网多级代理工具Venom详细使用教程

免责申明 本公众号的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息…

【LeetCode】九、双指针算法:环形链表检测 + 救生艇

文章目录 1、双指针算法1.1 对撞双指针1.2 快慢双指针 2、leetcode141:环形链表3、leetcode881:救生艇 1、双指针算法 用两个指针来共同解决一个问题: 1.1 对撞双指针 比如先有一个有序的数组array int[] array {1, 4, 5, 7, 9}先要找两个…

什么是产线工控安全,如何保障产线设备的安全

什么是产线工控安全? 工控,指的是工业自动化控制,主要利用电子电气、机械、软件组合实现。即是工业控制系统,或者是工厂自动化控制。产线工控安全指的是工业控制系统的数据、网络和系统安全。随着工业信息化的迅猛发展&#xff0…

如何利用“AI交互数字人+展厅”拓展文娱消费空间?

打造新生代潮玩聚集地,打造演艺新空间,促进虚拟现实体验等文娱业态场景创新,成为了当下发展文旅消费新场景的一大重要手段。数字人汇集了虚拟现实、增强现实、全息投影、人工智能、实时传输语音合成等数字技术,可以利用数字人重构…

SpringBoot项目中获取IP地址

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 OkHttp 是一个由 Square 开发的高效、现代的 HTTP 客户端库,用于 Android 和 Java 应用程序。它支持 HTTP/2 和 SPDY 等现代网络协议,…

Jmeter 进行http接口测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 本文主要针对http接口进行测试,使用 jmeter工具实现。 Jmeter工具设计之初是用于做性…