【C#】Visual Studio2022打包依赖第三方库的winForm程序为exe

0.简介

IDE:VS2022
平台:C# .NetFramework4.7.2 WinForm界面
有GDAL、EEplus第三方库的依赖,所以在其他未安装环境的电脑中功能无法使用。

1. 安装

1.1 运行文件输出

在VS扩展中选择管理扩展,安装:Microsoft Visual Studio Installer Projects 2022,安装后重启VS。
右击解决方案资源管理器—>你的解决方案:添加—>新建项目,搜索Setup Project,创建:
注意:这里的命名最好是纯英文,否则一些依赖本地.Net框架的库无法找到!

在这里插入图片描述

解释一下这三个文件夹的功能:
1.存放一些库文件和exe文件,这种通常是安装在D:\Program Files本地中存放
2.安装程序后,会在桌面生成一个快捷方式
3.在开始菜单中是否会显示,通常将卸载程序放在里面

右击Application Folder — Add ---- 项目输出:
在这里插入图片描述

我们这里只有这一个项目project,所以就是他了,点击确定。会得到一个名字为:主输出 from AutoMetadata(Release X64) 的output类型文件。
导入后,会连带exe所依赖的DLL文件一起导入。

注意这里导入的是文件,文件夹不会被导入,所以需要手动创建文件夹 Add — Folder,然后安装上面的方式重复添加,将一层一层的文件夹一直迭代填入:

在这里插入图片描述

1.2 桌面快捷方式

通常安装软件后,桌面会产生一个快捷方式对吧,对吧,对吧…

到User’s Desktop下,右击空白处,点击 创建新的快捷方式,找到刚才的主输出 from AutoMetadata(Release X64) ,重命名,这个文件的名字就是安装好软件后,在桌面快捷方式中显示的名字。

还要给他整一个图标对吧,要不太丑了…
选择一个.ico后缀的图片文件拖到Application Folder下,然后在快捷方式的属性下找到Icon。

1.3 卸载文件

你写的Demo工具总不能是狗皮膏药对吧,删都删不掉的那种似乎不好。难不成你要让用户去文件夹中手动删除?

右击Application Folder — Add — 文件:去找C:\Windows\System32\msiexec.exe,专门负责软件卸载的,
然后到User’s Programs Menu中右击空白 — 添加新的快捷方式,找到msiexec.exe,修改名为:***卸载 或者 Uninstall **。
为了防止用户不知道开始菜单中有卸载工具,也可以在安装文件中放置一个:

在这里插入图片描述

改个名字即可。

还要修改卸载程序中的参数Code,如果有两个要修改两处。
点击刚才建好的整个setup project名字,查看属性:
在这里插入图片描述
PS:在这里修改目标平台TargetPlatform,和你的release输出对应起来即可。我选的是X64

选择ProductCode,复制这段代码,到卸载文件中找到Arguments复制过去,前面加个/X 。
规则:斜杠+大写X+一个空格

在这里插入图片描述

1.4 修改安装位置

点击Application Folder ,查看属性DefaultLocation并修改,:D:\Program Files[ProductName]
这样会默认安装到指定位置并创建一个文件夹存放。

1.5 生成输出

右击setup project,生成。
在这里插入图片描述
时间比较长,等待:
在这里插入图片描述
成功后在同.sln解决方案的文件中找到:setup project — release:
在这里插入图片描述

双击setup.exe:
在这里插入图片描述

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

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

相关文章

SpringBoot上传超大文件导致OOM,完美问题解决办法

问题描述 报错: Caused by: java.lang.OutOfMemoryError at java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123) ~[?:1.8.0_381] at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117) ~[?:1.8.0_381] at java.…

MQTTX连接华为云IoTDA

目录 华为IoTDA平台 MQTTX连接参数的设置 物模型的构建 属性上报 基本数据格式 时戳 我以前上课都是用巴法云服务器来演示MQTT的,前几天因为测试工业互联网关使用了华为的IoTDA,觉得也不算太复杂,今天尝试用MQTTX连接华为云&#xff0c…

【ARM】MDK-STM32g0xx.h文件与Define规则记录

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录问题STM32g0xx.h等有关ST的可读文件,尽量勿修改文件格式及对其代码进行添加和删减,记录查找问题的过程中的疑惑,并如何给予客户正确的回复,帮助销售完成验收&…

CefSharp音视频编译与免费下载

注:Cefharp 音频和视频播放编译,生成相应的dll文件,从而支持项目开发。 建议编译至少 16G 的 RAM和至少 250G 的 SSD。该脚本以 E 盘为例,您需要在 E 盘上手动创建 cef 文件夹。禁止在转载后通过发布其他平台向用户收取下载费用。…

新形势下职业教育大数据人才培养策略

一、引言 随着信息技术的飞速发展,大数据已成为驱动经济社会变革的关键力量。在新形势下,职业教育作为技术技能人才培养的重要阵地,面临着如何适应大数据时代要求、提升人才培养质量的紧迫任务。当前,职业教育在大数据人才培养方…

云HIS系统源码,业务云协同和数据云协同的数字化医院信息系统

云HIS是利用云计算、大数据、物联网、移动互联网等技术,打造的一个安全、便捷、共享、协同的医疗互联网云生态平台。核心功能是业务云协同和数据云协同。云HIS具有可扩展、易共享、易协同、低成本、体验号、更便捷、易维护的优势,重新定义了数字化医院信…

leetcode日记(49)旋转链表

其实不难,就是根据kk%len判断需要旋转的位置,再将后半段接在前半段前面就行。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : …

uniapp的h5,读取本地txt带标签的文件

效果图 使用的回显的标签是u-parse,下面的网址讲了这个标签的相关 https://www.cnblogs.com/huihuihero/p/12978903.html 导入此插件 https://ext.dcloud.net.cn/plugin?id364 使用 uni.request({// 本地文件url: "/static/互联网医院医师端用户协议.txt…

C# datetimePicker

1. 直接把控件拉到设计器中,此时不要调整控件的values属性,这样就可以 打开后每次默认显示当天日期。 2. 属性Format long长日期格式默认值short短日期格式Time时间格式custom自定义时间格式在customFormat这个属性设置,比如yyyy-MM-dd HH…

Stage模型应用程序包结构

目录 官网地址 官网结构图 开发态包结构 工程目录结构 配置文件 module.json5配置文件 app.json5配置文件 官网地址 官网地址 包结构 官网结构图 开发态包结构 在DevEco Studio上创建一个项目工程,并尝试创建多个不同类型的Module(类似一个一个的页…

jetbrains 、IntelliJ IDEA、PyCharm 等工具英语音译读音

本心、输入输出、结果 文章目录 jetbrains 、IntelliJ IDEA、PyCharm 等工具英语音译读音前言jetbrains 、IntelliJ IDEA、PyCharm 等工具英语音译读音jetbrains 、IntelliJ IDEA、PyCharm 等工具英语音译读音 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_…

go-kratos 学习笔记(6) 数据库gorm使用

数据库是项目的核心,数据库的链接数据是data层的操作,选择了比较简单好用的gorm作为数据库的工具;之前是PHP开发,各种框架都是orm的操作;gorm还是很相似的,使用起来比较顺手 go-kratos官网的实例是ent&…

逆向案例二十九——某品威客登录,请求头参数加密,简单webpack

网址:登录- 一品威客网,创新型知识技能共享服务平台 抓到登陆包分析,发现请求头有参数加密,直接搜索 定位到加密位置,打上断点,很明显是对象f的a方法进行了加密。 往上找f,可以发现f被定义了,是…

pc端vue2实现截图功能

npm install js-web-screen-shot --save import ScreenShort from "js-web-screen-shot"; <button @click="screenhotFnc">点我截图</button> //最后生成一个数组,base格式,可循环渲染到页面上面 screenhotFnc() {new ScreenShort({//ap…

Android中Service学习记录

目录 一 概述二 生命周期2.1 启动服务startService()2.2 绑定服务bindService()2.3 先启动后绑定2.4 先绑定后启动 三 使用3.1 本地服务&#xff08;启动式&#xff09;3.2 可通信的服务&#xff08;绑定式&#xff09;3.3 前台服务3.4 IntentService 总结参考 一 概述 Servic…

【Android】广播机制

【Android】广播机制 前言 广播机制是Android中一种非常重要的通信机制&#xff0c;用于在应用程序之间或应用程序的不同组件之间传递信息。广播可以是系统广播&#xff0c;也可以是自定义广播。广播机制主要包括标准广播和有序广播两种类型。 简介 在Android中&#xff0c…

Istio_01_Istio初识

文章目录 IstioService Mesh Istio Istio: 以服务网格形态用于服务治理的开放平台和基础设施 本质: 以非侵入式治理服务之间的访问和调用服务治理: 流量管理、可观测性、安全性可同时管理多类基础设施(多种网络方案) 如: Istio和Kubernetes架构的结合 Istio通过Kubernetes的域…

Ubuntu 重置root密码

Ubuntu 重置root密码 当系统管理员或者授权用户忘记了root密码时&#xff0c;重置密码能够提供紧急访问系统的方法。这种情况下&#xff0c;重置密码可以避免因为密码丢失而导致的系统无法访问的问题&#xff0c;确保及时的操作和维护。在进行系统安全审计或者需要紧急恢复访问…

【学一点儿前端】getaddrinfo ENOTFOUND registry.nlark.com“.

问题 今天jenkins打包一个项目&#xff0c;发现报错了 error An unexpected error occurred: "https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com". 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmi…

<数据集>抽烟识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;4860张 标注数量(xml文件个数)&#xff1a;4860 标注数量(txt文件个数)&#xff1a;4860 标注类别数&#xff1a;1 标注类别名称&#xff1a;[smoking] 使用标注工具&#xff1a;labelImg 标注规则&#xff1a;对…