VS2022打包C#安装包(最新、最全)

开发c#的一个小工具到打包环境碰壁了,在网上找了很多资料耶踩了很多坑,耗时1hour才打包完毕,避免以后碰到类似的问题再次记录,自认为步骤比较全面,如果有帮助麻烦点个赞呗!!!

一、Microsoft Visual Studio Installer Projects插件安装

  1. 打开VS2022后找到菜单栏 工具->管理扩展;

VS
2. 搜索框中联机搜索 Microsoft Visual Studio Installer Projects,找到如图所示插件,点击下载;
在这里插入图片描述

  1. 下载完成后,点击关闭退出VS2022,或直接退出VS2022。关闭VS2022后,会弹出安装Microsoft Visual Studio Installer Projects,点击修改进行安装,等待安装完成

二、 创建打包程序

执行这一步的前提需要有可运行的exe程序,且知道exe所属路径。
例如:我待打包的项目为WeTool,我的WeTool.exe路径在…\WeTool\bin\Debug下
在这里插入图片描述

1.新建Setup project项目
在这里插入图片描述

2.配置新项目,项目名称及软件打包的exe名称。
在这里插入图片描述
3.选择打包项目,右键选择View->文件系统
在这里插入图片描述
4.将整个bin\Debug路径下的文件(包括文件夹)Ctrl+A全选,直接拖到Application Folder中。
在这里插入图片描述
5.选择Application Folder->选中主程序exe->单击右键->Create Shortcut to WeTool.exe
在这里插入图片描述
6.选择Shortcut to %sWeTool.exe修改Name乌鹅工具箱.exe;
在这里插入图片描述
7.点击User's Programs Menud->Add->Folder,新建文件夹WeTool;
在这里插入图片描述
8.将重命名后的乌鹅工具箱.exe分别复制到User's DesktopUser's Programs Menu,分别是桌面快捷方式和开始菜单快捷方式。

在这里插入图片描述
9.选择User's Desktop\乌鸦工具箱.exe单击右键->Icon->Browser->Application Folder选择文件夹中的.ico图标文件;
在这里插入图片描述

三、创建卸载程序

1.选择Application Folder->add->文件
在这里插入图片描述
2.添加C:\Windows\System32\msiexec.exe文件;
在这里插入图片描述
3.Application Folder->msiexec.exe->Create Shortcut to msiexec.exe在这里插入图片描述

4.选中项目->属性->复制ProductCode
在这里插入图片描述
5.选择Shortcut to %smsiexec.exe,右键属性,重命名为卸载乌鹅工具箱.exe,并且在Arguments中填写/x{ProductCode}
比如:/x {31FD7BD1-44BE-46B3-B732-7EFBF5D98CDC}(/x 后有一个空格注意)

在这里插入图片描述
6.复制卸载乌鸦工具箱.exeUser's Programs Menu\WeTool文件夹下;
在这里插入图片描述
7.选择User's Programs Menu\WeTool\卸载乌鸦工具箱.exe单击右键->Icon->Browser->Application Folder选择文件夹中的.ico图标文件;
在这里插入图片描述

四、下载.Net Framework 4.7.2 到安装包

1.下载ndp472-kb4054530-x86-x64-allos-enu.exe,微软官网下载链接
2.下载ndp472-kb4054530-x86-x64-allos-chs.exe,微软官网下载链接
3.官网下载 .NET Framework
在这里插入图片描述
4.官网下载.NET
在这里插入图片描述

五、打包.Net Framework 4.7.2

1.准备好提前下载的ndp472-kb4054530-x86-x64-allos-enu.exe和下载ndp472-kb4054530-x86-x64-allos-chs.exe
在这里插入图片描述

2.将ndp472-kb4054530-x86-x64-allos-chs.exe复制到
路径:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX472\zh-Hans
在这里插入图片描述

3.将ndp472-kb4054530-x86-x64-allos-enu.exe复制到
路径:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX472\
注意:这个没有zh-Hans
在这里插入图片描述
4.选中 WeToolSetup项目->属性->Prerequisites...
在这里插入图片描述

5.选择.Net Framework 4.7.2 ->从与我的应用程序相同的位置下载系统必备组件
在这里插入图片描述

六.生成项目

1.选择项目,点击生成。
在这里插入图片描述

七、处理无目标位置问题

现象:打包的安装包执行安装后,桌面快捷方式的属性中没有目标位置信息,我重新打包又试了几次,以为是再程序打包的时候设置有问题,结果都没有找到原因,没有办法只有需求网络资源,网络上有朋友说VS创建的快捷方式不是标准的,是VS制作的安装包的问题,但是可以对VS制作的安装包msi文件进行修正。

在这里插入图片描述

1.下载工具orca工具(msi文件编辑工具) orcaMis

2.安装orca后,用orca打开msi安装包,在左边的Table列表中找到Shourtcut表,在右边记录中找到桌面快捷方式的记录,修改该记录的Target属性为 [TARGETDIR]应用程序名称.exe
在这里插入图片描述

(3)保存修改后的msi文件,重新安装后生成的快捷方式就可以查找图片和更改图标了。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB知识点:循环语句的经典练习题

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自​第4章:MATLAB程序流程控制 下面我们来看…

代码随想录(day1)

1. 二分查找: 704. 二分查找 - 力扣(LeetCode) 对于二分查找的思想较为简单,具体如下: 假设寻找的值为,分别定义两个变量,其中,。 再定义一个变量,如果,表示需要查找的元…

灵魂指针,教给(一)

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 一、内存和地址 1.1 内存 在介绍知识之前,先来想一个生活中的小栗子: 假如把你放在一个有100间屋子的酒店…

flutter_gen依赖

flutter_gen 5.4.0 flutter项目内终端: dart pub global activate flutter_gen export PATH“ P A T H " : " PATH":" PATH":"HOME/.pub-cache/bin” fluttergen

为 OpenBMC 添加一个新的系统

1. 前言 在上一篇文章中向大家介绍了 OpenBMC 的是什么以及它的作用和应用场景,并且以一个自带的示例平台 romulus 展示了从下载源码包开始到启动系统并访问 Web 控制页面的整体构建流程。 通过前文已经了解到如何为已有的平台构建系统镜像,下面我们来…

AcWing 1027. 方格取数

解题思路 相关代码 import java.util.Scanner;public class Main {public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int nums[][] = new int[n+1][n+1];while(true){int a = scanner.nextInt();int b = scanner.…

1.初识python

1.初识python 编程语言是用来定义计算机程序的语言,用来向计算机发出指令。 1.python语言是一种面向对象的解释型高级编程语言。 解释型语言:使用专门的解释器对源码程序逐行解释成特定平台的机器并立即执行,是代码在执行时才被解释器一行行…

数据库(mysql)-新手笔记-基本知识点(1)

基本概念 数据库 Database :存储数据的容器 表 Table : 在数据库中存储的基本结构,它由行和列组成 行 Row : 表中的一条记录 列 Column : 表中的字段,定义了数据的类型和约束 数据类型 数据值 如 INT(整型),FLAOT(浮点型) ,DECIMAL (精确小数点) 字符串 如 VARCHAR(可变长度字…

Redis报错NOAUTH Authentication required怎么解决?

问题描述 在使用redis-cli时,可能会遇到报错 (error) NOAUTH Authentication required. 问题分析 这是因为在redis的配置文件 redis.windows-service.conf 中设置了密码,导致了这个问题 问题解决 1. 在redis.windows-service.conf文件查看密码 2. 输…

苹果曝出两个 iOS 系统 0-Day 漏洞

最近,苹果公司发布了紧急安全更新,解决了两个 iOS 零日漏洞。这些漏洞存在于 iOS 内核(CVE-2024-23225)和 RTKit(CVE-2024-23296)中,威胁攻击者可利用其绕过内核内存保护,这就给了具…

[R] ggplot2 - exercise (“fill =“)

We have made the plots like: Lets practice with what we have learnt in: [R] How to communicate with your data? - ggplot2-CSDN博客https://blog.csdn.net/m0_74331272/article/details/136513694 #tutorial 5 -script #Exercise 1 #1.1# ggplot(smoking_and_drug_use_…

20 easy 70. 爬楼梯

//假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 // // 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? // // // // 示例 1: // // //输入:n 2 //输出:2 //解释:有两种方法可以爬到楼顶。 /…

electron 架构

文章目录 Chromium 架构Electron 架构 Chromium 架构 主体架构:主进程 Browser,打开一个页面就会启动一个 Render 渲染进程,进程间通信就是 IPC 机制(Inter-Process Communication)。 主进程的 RenderProcessHost 和 R…

算法 - 【受限条件下可到达节点的数目】

受限条件下可到达节点的数目 题目示例1示例2 分析代码 题目 现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] [ai, bi] 表示树中节点 ai 和…

【通信原理笔记】【一】确定信号分析——1.4 信号的功率谱与能量谱

文章目录 前言一、功率谱与能量谱1. 从频域求能量说起2. 再聊聊密度3. 单边能量谱与带宽3.1 实信号的共轭对称性3.2 单边谱与带宽 二、信号的相关函数1. 说回到时域分析 总结 前言 上一篇我们学习了信号的功率与能量,现在我们继续深入,探讨一下信号的功…

Pytorch学习 day04(Totensor、Normalize、Resize、Compose)

Totensor 把一个PIL格式的图片,或者ndarray格式的图片转换为tensor格式使用方法,如下: from PIL import Image from torchvision import transforms from torch.utils.tensorboard import SummaryWriterimg Image.open("images/00130…

Redis 面试题

Redis 基础 什么是 Redis? Redis (Remote Dictionary Server) 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯…

【二】【SQL Server】如何运用SQL Server中查询设计器通关数据库期末查询大题

教学管理系统201703153 教学管理系统数据库展示 成绩表展示 课程表展示 学生表展示 院系表展示 一、基本操作 设置复合主键 设置其他表的主键 设置字段取值范围 二、简单操作 第一题 第二题 第三题 第四题 结尾 最后,感谢您阅读我的文章,希望这些内容能…

RF接口测试(1)

RF是做接口测试的一个非常方便的工具,我们只需要写好发送报文的脚本,就可以灵活的对接口进行测试。 做接口测试我们需要做如下工作: 1、拼接发送的报文 2、发送请求的方法 3、对结果进行判断 我们先按步骤实现,再进行RF操作的…

降低85%的gc发生率:ES的GC调优实践!

#大数据/ES #经验 #性能 问题背景 客户方面反馈的问题是ES入库速度变慢,延迟升高到几百毫秒,导致数据积压过多,影响了业务。 排查发现ES的服务日志出现不少的gc overhead现象,下面是一个示例的日志片段: [yyyy-MM-…