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

news2025/1/23 9:12:44

开发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文件,重新安装后生成的快捷方式就可以查找图片和更改图标了。
在这里插入图片描述

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

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

相关文章

Node.js 最佳实践:改善你的应用程序设计 | 开源日报 No.191

goldbergyoni/nodebestpractices Stars: 92.4k License: CC-BY-SA-4.0 Node.js Best Practices 是一个关于 Node.js 最佳实践的开源项目。该项目汇总了许多顶级内容,包括 80 多个最佳实践、样式指南和架构技巧。以下是该项目的核心优势和主要功能: 提供…

基于el-tree实现懒加载穿梭条

一、关键代码 <template><div><!-- 左侧待选列表 --><div class"left-box"><p>待选列表</p><el-input placeholder"输入关键词过滤" v-model"leftFilterText" clearable/><el-treeref"tree…

css3中nth-child属性作用及用法剖析

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 标题&#xff1a;CSS3中nth-child属性作用及用法剖析 摘要&#xff1a;CSS3中的nth-child选择器允许我们根据元素位置来定位特定的元素…

最简单的基于 FFmpeg 的 AVDevice 例子(读取摄像头)

最简单的基于 FFmpeg 的 AVDevice 例子&#xff08;读取摄像头&#xff09; 最简单的基于 FFmpeg 的 AVDevice 例子&#xff08;读取摄像头&#xff09;简介libavdevice 使用注意事项源程序结果工程文件下载参考链接 最简单的基于 FFmpeg 的 AVDevice 例子&#xff08;读取摄像…

遥感与ChatGPT:科研中的强强联合

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已逐渐渗透到各个领域&#xff0c;为传统行业带来了前所未有的变革。其中&#xff0c;遥感技术作为观测和解析地球的重要手段&#xff0c;正逐渐与AI技术相结合&#xff0c;为地球科学研究与应用提供了全新的…

Android SDK2 (实操三个小目标)

书接上回&#xff1a;Android SDK 1&#xff08;概览&#xff09;-CSDN博客 今天讲讲三个实际练手内容&#xff0c;用的是瑞星微的sdk。 1 实操编译Android.bp 首先还是感叹下&#xff0c;现在的系统真的越搞越复杂&#xff0c;最早只有gcc&#xff0c;后面多了make&#xf…

Xilinx高级调试方法--远程调试

Xilinx高级调试方法--远程调试 1 虚拟电缆调试2 FPGA设计2.1 扩展配置接口 3 PCIe-XVC驱动3.1 PCIe-XVC驱动3.2 XVC-Server 4 Vivado Design Suite4.1 同一台主机4.2 不同主机 本文主要介绍Xilinx的一些高级调试方法&#xff0c;以及如何使用Xilinx的相关IP。 1 虚拟电缆调试 …

UR机器人装箱姿态

1.官网手册上并没有给出该打包位姿 2.一般厂家发回来的机器人都会有这个打包程序 可以运行这个程序&#xff0c;如果有的话。 3.打包点位 如果没有这个这个&#xff0c;也可以直接按下面点位来&#xff0c;都是差不多的点位&#xff0c;可以放到包装箱中的 这个是UR10的 这个…

linux系统上安装docker 并配置国内镜像

目录 1.安装docker 2.配置国内镜像源 1.安装docker 首先要安装一个yum工具 yum install -y yum-utils 安装成功后&#xff0c;执行命令&#xff0c;配置Docker的yum源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo …

代码之旅:我的算法探索之路(一)力扣 两数之和 三数之和问题

LeetCode 第1题 两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能…

【学习笔记】计算机视觉深度学习网络模型

这是本人学习计算机视觉CV领域深度学习模型的学习的一点点学习笔记&#xff0c;很多片子没有完成&#xff0c;可以作为学习的参考~

1.初识python

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

Elasticsearch模拟网络丢包

背景 Elasticsearch一旦遇到网络抖动就可能节点&#xff08;单个或者多个&#xff09;掉出集群。从而集群出现red/yellow状态&#xff0c;理论情况下ES会自愈&#xff0c;但某些情况下可能非预期&#xff0c;此时就需要我们模拟各种case了&#xff0c;比如网络丢包。 操作 1…

Fabric V2.5 通用溯源系统——应用前端部分设计及简易二次开发

本节对Fabric V2.5 通用溯源系统的前端部分做一个简单的介绍。包括目录结构、文件作用简述、用户注册登录实现、农产品信息上链溯源实现的介绍。同时提供了简易二次开发的教程(面向需要在短时间内二次开发),将本项目修改为商品溯源项目,仅修改前端部分。本节内容需要订阅《…

BUUCTF--极客大挑战php

文章目录 1.网站备份文件www.zip2.下载后发现class.phpindex.phpflag.php 3.分析php代码绕过__wakeup方法变量权限为私有或保护python方法url方法 1.网站备份文件www.zip 2.下载后发现 class.php <?php include flag.php; error_reporting(0);class Name{private $usernam…

20240306-1-大数据的几个面试题目

面试题目 1. 相同URL 题目: 给定a、b两个文件&#xff0c;各存放50亿个url&#xff0c;每个url各占64字节&#xff0c;内存限制是4G&#xff0c;让你找出a、b文件共同的url&#xff1f; 方案1&#xff1a;估计每个文件的大小为50G64320G&#xff0c;远远大于内存限制的4G。所以…

ChatGPT如何干涉教育?

OpenAI又整大活儿了。 他们在ChatGPT引入了自定义指令&#xff0c;什么是自定义指令呢&#xff0c;我截图了他们在推特上发布的解释&#xff0c;比较让人期待的是&#xff0c;现在ChatGPT能够更好地为小说和编剧们服务了&#xff0c;以及&#xff0c;它可以模仿你的语言风格&a…

UVa11595 Crossing Streets EXTREME

题目链接 UVa11595 - Crossing Streets EXTREME 题意 平面上有 n&#xff08;n≤35&#xff09;条直线&#xff0c;各代表一条街道。街道相互交叉&#xff0c;形成一些路段&#xff08;对应于几何上的线段&#xff09;。你的任务是设计一条从A到B的路线&#xff0c;使得穿过路…

使用css结合js实现html文件中的双行混排

此前写过一个使用flex布局实现html文件中的双行混排&#xff0c;但是感觉效果不佳。经过几天思考&#xff0c;我认为双行混排的要点其实是两个&#xff1a; 1、正文和批注的文字大小不同&#xff1b; 2、正文和批注的行距相互配合进行设定。 正文和批注的文字大小及行距都可…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TapGesture)

支持单击、双击和多次点击事件的识别。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 接口 TapGesture(value?: { count?: number, fingers?: number }) 参数&#xff1a; 参数名称参数类型必填参…